-
Я не могу определить какое поле было изменено. Пробовал делать так: void __fastcall TfrmMain::ADOQuery2AfterEdit(TDataSet *DataSet)
{
...
frmInformer.ADOQuery1.FieldByName("Измененное поле")->AsString = DataSet.FieldName; Structure required on left side of . or .* Пожалуйста расскажите как можно решить эту проблему?
-
Извиняюсь не то написал frmInformer.ADOQuery1.FieldByName("Измененное поле").AsString
Проблема там где я отметил жирным шрифтом в первом сообщении
-
у TdataSet нет свойства FieldName, это свойство есть у TField
-
Спасибо, побробую там
-
Удалено модератором
-
Пробовал так: 1. DataSet.DataSetField.FieldName 2. ADOQuery2.IndexFields[DataSet.DataSetField.FieldNo].FieldName Результат - Access Violation Если кто нибудь, узнает или вспомнит как это делается, напишите сюда пожалуйста.
-
А с чего ты взял, что датасет запоминает, какое поле было изменено? Ты нашел это где-то в справке?
-
и потом, > Write an AfterEdit event handler to take specific action > immediately after dataset enters edit mode. AfterEdit is > called by Edit after it enables editing of a record, recalculates > calculated fields, and calls the data event handler to process > a record change.
-
точно не помню, в oracle писал как-то, для анализа, работало DataSet.Fields[i].CurValue); DataSet.Fields[i].OldValue); DataSet.Fields[i].NewValue); там режим кэширующий должен быть, естественно
> Cobalt © (10.10.11 14:12) [6]
может, в зависимости от режима? а зачем такие св-ва тогда?
автору в BeforeEdit(DataSet: TDataSet); можно все поля прочитать, потом сравнить..
|