通过在Delphi + SQL Server中开发客户端服务器应用程序,我不断遇到问题,准确报告操作对db造成的影响。
一个简单的例子是:
之前:开始"捕获" DB
用户更改编辑框中的值
用户按下"保存"按钮
之后:停止"捕获" DB
我希望有一个工具可以比较之前和之后的状态(我手动捕获BEFORE
和AFTER
状态)。
我搜索了这种工具,但我找到的只是在更多数据源之间进行数据或模式比较的工具。
感谢。
答案 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;
请注意,我们的代码会收集报告,但只会在帖子成功完成后记录