Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обновление


тихий вовочка ©   (2004-07-27 07:32:00) 

У меня есть датасет, подчиненный другому (Корпорация -> член корпорации) У Клиент корпорации стоит RefreshSQL SELECT * FROM CUSTOMERS WHERE ID=:ID. Эти две таблицы Read Only, а любые изменения делаю в пишущем датасете. У пишущего поле GeneratorField заполнено. Так вот когда я добавляю новую запись (в модальном окне и пишущем датасете), она не видна в таблице Клиент корпорации, если же щелкнуть мышью на любую запись в таблице Корпорации, а затем снова на ту, что была, в таблице Клиент корпорации новая запись будет уже видна. Я конечно могу программно курсор туда-сюда быстро  передвинуть, но должны же быть цивилизованный методы решения.


ЮЮ   (2004-07-28 02:17:00) [1]

>Но ведь в датасете данные уже есть!
Они есть в твоем "пишущем" датасете, а не отображаемом. Добавляй запись непосредственно в отображаемый и не надо будет никакого рефреша, чтобы её увмдеть


Anatoly Podgoretsky   (2004-07-27 23:01:00) [2]

тихий вовочка ©   (27.07.04 22:24) [3]
Может и есть, вот только устраивает ли она условиям выборки? Это можно узнать только запросив набор по новому с сервера.


sniknik   (2004-07-27 22:51:00) [3]

из хелпа по Refresh
Note: The Refresh method does not work for all TDataSet descendants. In particular, TQuery components do not support the Refresh method if the query is not “live”. To refresh a static TQuery, close and reopen the dataset.
статик это как раз у тебя (раз он уже есть на клиенте)

> Но ведь в датасете данные уже есть!
а добавленная запись? как же она есть если ты ее в обход этого датасета записал?

> Потому как, когда я в родительской таблице делаю перемещение курсора туда-обратно ...
> когда меняеш запись в мастере на клиентской таблице как раз и происходит переоткрытие.


тихий вовочка   (2004-07-27 22:24:00) [4]

Refresh не помогает. А желать Close/Open не хочу - это ж клиент снова все записи с сервера будет сливать. Но ведь в датасете данные уже есть! Потому как, когда я в родительской таблице делаю перемещение курсора туда-обратно, подчиненная таблица отображается уже со всеми изменениями


sniknik   (2004-07-27 07:41:00) [5]

после изменений датасет нужно обновлять (refresh, close/open), когда меняеш запись в мастере на клиентской таблице как раз и происходит переоткрытие.
и это не всегда это помогает, если движок к примеру использует буферизацию записей, а таблицы подключены на разные конекты (тогда даже обновление сработает только после того как буфера физически запишутся на диск).


ЮЮ   (2004-07-27 07:39:00) [6]

Переоткрыть подчиненный запрос
А ещё цивилизованнее, имхо, корректировать отображаемый DataSet, а не какой-то "пишущий датасет", тогда все сразу будет отражаться


Наверх

Титульная страница Поиск, карта сайта Написать письмо