Форум: "Начинающим";
Текущий архив: 2010.11.28;
Скачать: [xml.tar.bz2];
Внизобновление датасета Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.004 c