如何在新的时刻比较同一个数据库

时间:2014-09-19 09:55:24

标签: sql-server delphi sql-server-2008-r2 comparison delphi-xe2

通过在Delphi + SQL Server中开发客户端服务器应用程序,我不断遇到问题,准确报告操作对db造成的影响。

一个简单的例子是:

  1. 之前:开始"捕获" DB

  2. 用户更改编辑框中的值

  3. 用户按下"保存"按钮

  4. 之后:停止"捕获" DB

  5. 我希望有一个工具可以比较之前和之后的状态(我手动捕获BEFOREAFTER状态)。

    我搜索了这种工具,但我找到的只是在更多数据源之间进行数据或模式比较的工具。

    感谢。

1 个答案:

答案 0 :(得分:1)

以下是我们所拥有的应用程序的摘录。此代码位于BeforePost事件处理程序中,该处理程序链接到应用程序中的所有数据集组件。这种链接是使用代码完成的,因为有很多数据集。这实际上并不记录更改(只列出字段),但它应该足够简单,以便更改以满足您的目标。我不知道这是否完全适合您要求实现的目标,因为它是一种创建所有更改报告的有效方法

  CurrentReport := Format('Table %s modified', [DataSet.Name]);
  for i := 0 to DataSet.FieldCount - 1 do
  begin
    XField := DataSet.Fields[i];
    if (XField.FieldKind = fkData) and (XField.Value <> XField.OldValue) then
    begin
      CurrentReport := CurrentReport + Format(', %s changed', [XField.FieldName])
    end;
  end;

请注意,我们的代码会收集报告,但只会在帖子成功完成后记录