Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > View и актуальность данных


Автор: MadCoder 11.8.2008, 13:35
Здравствуйте!

У меня есть вьюшка, которая формирует список договоров с данными. При просмотре в клиенте, написанном на Delphi, я щелкаю по записям с помощью Next и Prior. При этом, если данные договора были изменены другим клиентом, изменения не отображаются и я вижу все те же старые данные. Как это можно исправить?

Автор: aleksh 11.8.2008, 15:15
извеняюсь, если глупость спрошу, но все же: а апдейт базы клиентами сделан?

Автор: MadCoder 11.8.2008, 15:38
Цитата(aleksh @ 11.8.2008,  15:15)
извеняюсь, если глупость спрошу, но все же: а апдейт базы клиентами сделан?

Да, но записи делает специальная процедурка на сервере. Т.е. клиент присылает данные, например, был звонок по контракту, на сервер.
Сервер смотрит и в зависимости от многих условия делает записи в договоре.

Автор: aleksh 11.8.2008, 15:49
может при вытягивании из базы в клиент все заносится в кэш и при шелчке этот самый апдейт не делается, или так: с записи "1" переходим клико по next на "2", а запрос на апдейт посылается для "1"

Автор: MadCoder 13.8.2008, 15:25
aleksh, спасибо, разобрался. Проблема действительно в клиенте.

Я использую TAdoQuery для запроса. Там есть параметры CursorLocation и CursorType.

Если делать так (по-умолчанию):
Код

CursorLocation:=clUseCLient;
CursorType:=ctKeyset;


А если поменять их так:
Код

CursorLocation:=clUseServer;
CursorType:=ctDynamic;


То программа быстро получит данные от сервера, но при каждом Next и Prior будет подгружать новые данные из курсора. При этом нельзя будет посмотреть номер текущий записи и общее количество записей, т.к. клиент их не знает, он же не подгружал все записи.
Я думаю, все таки оставить первый вариант, но добавить в него обновление нужных мне данных (пару полей) другим запросом.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)