Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.11.28;
Скачать: CL | DM;

Вниз

обновление датасета   Найти похожие ветки 

 
guest   (2010-09-06 15:42) [0]

Добрый день. Данные грида обновляются полностью каждый раз при открытии окна с гридом.
Даже если таблица за это время не изменилась, из базы заново подгружаются ВСЕ записи.
Обновляю так:
dataset.active:=false;
dataset.active:=true;

Как сделать обновление оптимальным? Чтобы передавались ТОЛЬКО измененные записи?
И с какими СУБД такое обновление возможно?


 
И. Павел ©   (2010-09-06 16:09) [1]

А как база узнает, что записи изменены по сравнению с предыдущей выборкой? Можно, конечно, создавать временную таблицу/таблицы, но врят ли это будет оптимальнее.


 
Медвежонок Пятачок ©   (2010-09-06 16:25) [2]

Как сделать обновление оптимальным? Чтобы передавались ТОЛЬКО измененные записи?

а если изменений нет совсем, то типа пусть будет пустой грид.


 
guest   (2010-09-06 16:49) [3]


> А как база узнает, что записи изменены по сравнению с предыдущей
> выборкой? Можно, конечно, создавать временную таблицу/таблицы,
>  но врят ли это будет оптимальнее.

А сервер разве логи не ведет какие запросы когда поступали?


> а если изменений нет совсем, то типа пусть будет пустой
> грид.

Нет, грид на время закрытия дочерней формы, в которой он содержится, не очищается. Я же форму закрываю методом close а не освобождаю.


 
И. Павел ©   (2010-09-06 16:53) [4]

> А сервер разве логи не ведет какие запросы когда поступали?

А что может дать информация, что а 22:00 выполнился запрос UPDATE ... SET a = 200 WHERE a = 200? Как теперь понять по этому запросу, какие из записей изменились, а какие изначально содержали a=200?


 
Ega23 ©   (2010-09-06 16:54) [5]


> А сервер разве логи не ведет какие запросы когда поступали?


А толку тебе с этих логов? Или мсье собрался их парсить руками? Ну тогда мсье знает толк в извращениях.

Чоткие пацаны в табличку поле дата-время добавляют. Когда запись добавилась-обновилась. Потом делают по этому полю OrderBy, запоминают последнее значение, делают выборку начиная с него.


 
И. Павел ©   (2010-09-06 16:54) [6]

UPDATE ... SET a = 200 WHERE a = 200
Описка, должно быть:
UPDATE ... SET a = 200 WHERE a = 100


 
guest   (2010-09-06 17:06) [7]


> UPDATE ... SET a = 200 WHERE a = 200
> Описка, должно быть:
> UPDATE ... SET a = 200 WHERE a = 100

Ну это update, а Insert/delete вполне можно было бы контролировать


 
Ega23 ©   (2010-09-06 17:07) [8]


> Ну это update, а Insert/delete вполне можно было бы контролировать


Я тебе по секрету скажу, что и update-delete можно контролировать.


 
Sergey13 ©   (2010-09-06 17:18) [9]

> [0] guest   (06.09.10 15:42)
> Как сделать обновление оптимальным?
ИМХО
Реально выборки делать оптимальными - строго только то что нужно.


 
guest   (2010-09-06 17:45) [10]


> Реально выборки делать оптимальными - строго только то что
> нужно.

Ну допустим пишу:
select * from table where modifiedtime>parameter
Тогда у меня в гриде и отобразятся только изм. записи, старых не будет.


 
Sergey13 ©   (2010-09-06 17:53) [11]

> [10] guest   (06.09.10 17:45)

Да не думай ты об этом, пустое это. Думай о том, что юзеру НУЖНО в этот момент в гриде видеть.


 
guest   (2010-09-06 17:58) [12]

Ему нужно видеть всю таблицу в гриде


 
Sergey13 ©   (2010-09-06 18:01) [13]

> [12] guest   (06.09.10 17:58)

Все так думают. 8-)
Раз надо - пусть ждет, какие проблемы то?


 
Jeer ©   (2010-09-06 18:12) [14]


> guest   (06.09.10 17:58) [12]
>
> Ему нужно видеть всю таблицу в гриде


Разукрась на старые и измененные, например, сегодня.


 
guest   (2010-09-06 18:34) [15]


> Разукрась на старые и измененные, например, сегодня.

Еще раз:

> select * from table where modifiedtime>parameter
> Тогда у меня в гриде и отобразятся только изм. записи, старых
> не будет.

У меня dbgrid используется, а не обычный


 
Anatoly Podgoretsky ©   (2010-09-06 18:53) [16]


> А сервер разве логи не ведет какие запросы когда поступали?

Откуда у тебя сервер?


 
Anatoly Podgoretsky ©   (2010-09-06 18:55) [17]


> Разукрась на старые и измененные, например, сегодня.

Лучше завтра. Утро вечера мудренее.


 
Anatoly Podgoretsky ©   (2010-09-06 19:03) [18]

> guest  (06.09.2010 17:58:12)  [12]

Глупости.


 
Anatoly Podgoretsky ©   (2010-09-06 19:04) [19]

> guest  (06.09.2010 18:34:15)  [15]

Рассмешил.


 
Leonid Troyanovsky ©   (2010-09-06 21:24) [20]


> guest   (06.09.10 15:42)  

> Как сделать обновление оптимальным?

Сделай кнопаку "Обновить данные" (F5),
когда юзер ее жамкнет, то и обнови.

Кста, не все гриды настолько тупы,
чтоб тянуть все данные.

--
Regards, LVT.


 
guest   (2010-09-06 22:05) [21]


> Сделай кнопаку "Обновить данные" (F5),
> когда юзер ее жамкнет, то и обнови.

У меня обновление и так есть, будет грузиться полностью вся таблица.

> Кста, не все гриды настолько тупы,
> чтоб тянуть все данные.

А какие не тупы? И это не от датасета зависит разве?
А грузятся именно все записи, это понятно по времени. У меня blob-поля в таблице, их тоже надо грузить на клиента.


 
Leonid Troyanovsky ©   (2010-09-06 22:19) [22]


> guest   (06.09.10 22:05) [21]

> У меня обновление и так есть, будет грузиться полностью
> вся таблица.

Одно дело при открытии, другое дело - по кнопаке.
Полностью или нет - дело юзера.

> А какие не тупы? И это не от датасета зависит разве?

Да самые обычные не фетчат все разом, токмо по мере прокрутки.
От датасета? А чего он, того, однонаправленный?

> У меня blob-поля в таблице, их тоже надо грузить на клиента.

Чего тебе кнопок жалко? Сделай еще одну: Загрузить блоб.
Ну, или, после прокрутки, по таймеру.
Обычные гриды, ЕМНИП, так тоже умеют.

--
Regards, LVT.


 
guest   (2010-09-07 16:14) [23]

Можно ли на клиенте в датасете обновить из базы какую-то одну запись, не трогая остальных? Или удалить запись локально, но не удаляя ее из базы?


 
Ega23 ©   (2010-09-07 16:16) [24]


> Можно ли на клиенте в датасете обновить из базы какую-то
> одну запись, не трогая остальных? Или удалить запись локально,
>  но не удаляя ее из базы?


Можно.


 
MsGuns ©   (2010-09-07 16:22) [25]

А как это блобы отображаются в гриде ?


 
guest   (2010-09-07 16:32) [26]


> Можно.

Ты имеешь в виду станд. компоненты ado? Какие методы для этого нужны?


> А как это блобы отображаются в гриде ?

Уменьшенная картинка в ячейке грида.


 
Ega23 ©   (2010-09-07 16:41) [27]


> Ты имеешь в виду станд. компоненты ado? Какие методы для
> этого нужны?


Ты не поверишь!
TDataSet.Insert, TDataSet.Delete + F1


 
И. Павел ©   (2010-09-07 16:48) [28]

> Уменьшенная картинка в ячейке грида.

Неужели это чудо нельзя отключить, или обновлять вручную?


 
Ega23 ©   (2010-09-07 16:55) [29]


> Уменьшенная картинка в ячейке грида.

Отключи, делов-то.


 
MsGuns ©   (2010-09-07 20:21) [30]

>guest   (07.09.10 16:32) [26]
>Уменьшенная картинка в ячейке грида.

Конгениально ! (с)



Страницы: 1 вся ветка

Текущий архив: 2010.11.28;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.012 c
3-1248293189
GanibalLector
2009-07-23 00:06
2010.11.28
cannot attach to password database


15-1281373691
Дмитрий С
2010-08-09 21:08
2010.11.28
Серебряный бор


2-1283783053
Hapastiks
2010-09-06 18:24
2010.11.28
ini файлы


15-1282217798
Василий Жогарев
2010-08-19 15:36
2010.11.28
ActionManager & ActionMainMenuBar


15-1282027455
trw
2010-08-17 10:44
2010.11.28
как узнать автора файла