PDA

Просмотр полной версии : Переоткрытие запроса TQuery без мерцания...



GOS
07.09.2004, 20:20
При работе с программой один из TQuery служит для отображения информации в сетке, а другой TQuery для изменения данных...

Так вот проблемма в том, что для просмотра изменений внесённых вторым TQuery необходимо переоткрыть первый TQuery а это влечёт за собой затраты времени и мерцание...


Как от этого избавиться или хотябы минимизировать?

С уважением, Олег.

AiK
07.09.2004, 21:05
GOS, если мне мой склероз не изменяет, то есть такое свойство DisableControls.
Кроме того, в крайнем случае можно и Dataset в null поставить.

Naeel Maqsudov
08.09.2004, 01:21
если мне мой склероз не изменяет

Почти не изменяет :)

Есть 2 метода DisableControls и EnableControls

НО они тут не помогут, я думаю.


один из TQuery служит для отображения информации в сетке, а другой TQuery для изменения данных

Это неправильный подход.
Правильный - это TQuery для отображения данных + TUpdateSQL для изменения.
Query1.UpdateObject надо сделать = UpdateSQL1, в UpdateSQL1 ввыести запросы, которые будут выполняться при удалении/обновлении/вставке и TQuery станет работать как обычный TTable!

GOS
08.09.2004, 21:23
но только если не использвать запрос для выборки данных из нескольких связанных таблиц...
или я не прав?

Naeel Maqsudov
12.09.2004, 22:25
Не прав.
Так как даже если select-запрос выполняет объединение таблиц, то Update-запрос (или Inser/delete-запроc) будет делать то, что мы там напишем.
Даже если мы захотим разрешить менять поля в обеих таблицах (а не только "в таблице, сохраняющей ключи"), думаю, что мы сможем это сделать несколькими операторами update, но в этом случае прийдется динамически подменять текст оператора update в нужный момент. (Не пробовал, но думаю можно). А еще можно попробовать TUpdateSql научить выполнять несколько операторов, разделенных точкой с запятой (т.е. написать свой компонент, который это умеет)

Кроме того если мы используем, например, ODBC+TQuery+TUpdateSQL для доступа к Oracle, то можем апдейтить встроенный View, содержащий Join нескольких таблиц, если update касается таблицы, "сохраняющей ключи".

GOS
15.09.2004, 20:49
Спасибо!