Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1283772860
Alexandr
2010-09-06 15:34
2010.11.28
Извлечение информации из файла Word


3-1248170873
Mery
2009-07-21 14:07
2010.11.28
удаление повторяющихся записей в таблице


2-1283434549
worldmen
2010-09-02 17:35
2010.11.28
Показ видео в клиент-серверном приложении


2-1283414648
03111978
2010-09-02 12:04
2010.11.28
Помогите с запросом ................


15-1282556497
vajo
2010-08-23 13:41
2010.11.28
Блок питания.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский