![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как правильно пользовать 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)
// - Значение изменено