Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.14;
Скачать: CL | DM;

Вниз

ADO - обновление данных перед редактированием   Найти похожие ветки 

 
Санёк   (2004-10-12 09:54) [0]

Пишу наследника TADODataSet, хочу сделать так, чтобы при переводе набора данных в режим редактирования данные сначала обновлялись. Возможно ли это сделать средствами ADO?


 
KSergey ©   (2004-10-12 10:04) [1]

Обновлялись с сервера? Хотя как-то момент выбран не удачно, по-моему... Т.е. вижу одно, а только начинаю редактировать - и уже другое? Подозрительно это как-то..

Потырено где-то (здесь?) когда-то

---------------------------------------------------------------------------------------------

Как обновить текущу запись, перечитав ее с сервера?

Вариант 1

with ADODataSet do
 if Recordset.Supports(adResync) then
 begin
   Recordset.Resync(adAffectCurrent, adResyncAllValues);
   Resync([rmExact, rmCenter]);
 end;
 
Вариант 2

Как обновить одну строку не переоткрывая DataSet
>можно ли только одну строку обновить?

можно и нужно

ADODS.Properties["Unique Table"].Value    := "table";
ADODS.Properties["Resync Command"].Value  := "select * from table where ID = ?";
ADODS.Properties["Update Resync"].Value   := adResyncAll;

ADODS.UpdateCursorPos;
ADODS.Recordset.Resync(adAffectCurrent,adResyncAllValues);
ADODS.Resync([rmExact]);

----------------------------------------------------------------------------------------------


 
Санёк   (2004-10-12 10:15) [2]

Идея такая, при переводе набора данных в режим редактирования сначала проверяется нет ли данных о записи в таблице блокировок (она создается на сервере самостоятельно, так называемый метод логической блокировки), если нет, то сохраняются данные о записи в таблице блокировок, и разрешается редактирование, иначе запрещается       и набор данных переводиться в режим чтения. Но вот в чем вопрос!!! После блокирования записи, хотелось бы быть уверенным в том, что она идиентична находящейся на сервере. Можно как то сделать иначе?


 
KSergey ©   (2004-10-12 10:19) [3]

Дык просто прочитать в темповый RecordSet одну запись и сравнить с имеющейся в рабочей

Но идея таблицы блокировок, управляемая с клиента плоха изначально:
а) клиент может открыть редактирование и пойти пить чай на 2 часа
б) у клиента могут выбрать провод/зависнуть прога и т.п. - и все. Запись навсегда заблокировалась...


 
Санёк   (2004-10-12 10:28) [4]

При проверке блокировки проверяються мёртвые соединения и обрубаются, а узнать кто на данный момент заблокировал запись можно из той же таблицы блокировок.
  И при несовпадении данных нужно всё же обновлять запись или предложить кленту обновить её самостоятельно?


 
KSergey ©   (2004-10-12 10:39) [5]

> [4] Санёк   (12.10.04 10:28)
>   И при несовпадении данных нужно всё же обновлять запись
> или предложить кленту обновить её самостоятельно?

Сам думай ;)



Страницы: 1 вся ветка

Текущий архив: 2004.11.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
1-1099394225
Chlavik
2004-11-02 14:17
2004.11.14
var A:Array [0..0] of DWORD; Как получить A[1]?


3-1098081686
cad2206
2004-10-18 10:41
2004.11.14
Номер записи в отфильтрованой таблице???


3-1097480612
ceval
2004-10-11 11:43
2004.11.14
Подскажите начинающему с вычисляемым полем.


1-1099036871
zorik
2004-10-29 12:01
2004.11.14
TSaveDialog FileExt


3-1097849034
SSGuest
2004-10-15 18:03
2004.11.14
Как в DBGrid е такую штуковину сделать...