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

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

как правильно пользовать OnBeforeUpdateRecord


hva ©   (2004-02-11 17:20:00) 

procedure TObjects.dspDataBeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
UpdateKind: TUpdateKind; var Applied: Boolean);
...
if UpdateKind=ukModify
then begin
//в obj1 изменено значение
tmp := DeltaDS.FieldByName("obj1").AsInteger;
//obj2 не менялось поэтому следующее не работает
//возвращает null
tmp1 := DeltaDS.FieldByName("obj2").AsInteger;
//а так вообще молча отваливается
//tmp1 := SourceDS.FieldByName("obj2").AsInteger;
end

все работает если принудительно изменять значение obj2
например: на клиенте obj2 := obj2 + 1
а на сервере obj2 := obj2 - 1 результат не меняется но зато obj2 попадает в пакет.
Вопрос как принудительно засунуть поле в пакет для обновления либо надо как-то использовать SourceDS? А может что еще там?


hva   (2004-02-12 09:39:00) [1]

DeltaDS.FieldByName("obj2").OldValue содержит значение

Спасибо, все получилось


Sandman25   (2004-02-11 17:45:00) [2]

Intervening as updates are applied
в Developing Database Applications содержит хорошее описание и пример


Academic   (2004-02-11 17:40:00) [3]

Проверка
If Not VarIsNull(DeltaDS.FieldByName("obj2").NewValue)
// - Значение изменено


Наверх

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