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

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Ответить
GOS
Сообщения: 111
Зарегистрирован: 17 фев 2004, 10:32
Контактная информация:

07 сен 2004, 20:20

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

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


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

С уважением, Олег.
Аватара пользователя
AiK
Сообщения: 2271
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

07 сен 2004, 21:05

GOS, если мне мой склероз не изменяет, то есть такое свойство DisableControls.
Кроме того, в крайнем случае можно и Dataset в null поставить.
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

08 сен 2004, 01:21

если мне мой склероз не изменяет
Почти не изменяет :)

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

НО они тут не помогут, я думаю.
один из TQuery служит для отображения информации в сетке, а другой TQuery для изменения данных
Это неправильный подход.
Правильный - это TQuery для отображения данных + TUpdateSQL для изменения.
Query1.UpdateObject надо сделать = UpdateSQL1, в UpdateSQL1 ввыести запросы, которые будут выполняться при удалении/обновлении/вставке и TQuery станет работать как обычный TTable!
GOS
Сообщения: 111
Зарегистрирован: 17 фев 2004, 10:32
Контактная информация:

08 сен 2004, 21:23

но только если не использвать запрос для выборки данных из нескольких связанных таблиц...
или я не прав?
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

12 сен 2004, 22:25

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

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

15 сен 2004, 20:49

Спасибо!
Ответить