Главная страница
    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.45 MB
Время: 0.037 c
14-1098726744
vecna
2004-10-25 21:52
2004.11.14
Зенит 0 - 3 ЦСКА


14-1098877983
Charli
2004-10-27 15:53
2004.11.14
RxLib


1-1099385372
Sash
2004-11-02 11:49
2004.11.14
excel


9-1089915239
Колбасьев
2004-07-15 22:13
2004.11.14
Подскажите как масштабировать модель (имеется ввиду X Mesh).


14-1098954327
dr Tr0jan
2004-10-28 13:05
2004.11.14
Разница между GMT и Московским временем





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский