将TQuery中的当前字段获取到TField

时间:2015-02-06 19:00:27

标签: delphi

这与another question有关,但不足以将其包含在原始版本中。调用Post时,如何获取已修改为TField的字段(或字段)?

1 个答案:

答案 0 :(得分:1)

对于日志记录,我使用OnBeforePost事件,该事件在发布数据之前被调用(正如它所说)。当然,缺点是您的日志表必须具有足够宽的字段来容纳所有可能的内容。

procedure TMyData.SomeTableBeforePost(DataSet: TDataSet);
var
  i: Integer;
begin
  for i := 0 to DataSet.FieldCount - 1 do
  begin
    // Skip calculated and lookup fields
    if DataSet.Fields[i].FieldType = ftData then
    begin
      if DataSet.Fields[i].OldValue <> DataSet.Fields[i].NewValue then
      begin
        LogTable.Insert;
        LogTableColumnName.AsString := DataSet.Fields[i].FieldName;
        LogTableOldValue.Value := DataSet.Fields[i].OldValue;
        LogTableNewValue.Value := DataSet.Fields[i].NewValue;
        LogTable.Post;
      end;
    end;
  end;
end;