Delphi xe10 FireDac 之 如何生成操作日志
2016-12-01 17:06
357 查看
在开发软件中,记录软件的操作日志 是很有必要的,一来可以查找错误,二来可以优化性能,三来呢 要是碰到客户死活不承认这样操作,说你们软件又问题,打开数据库一查日志。。。。
要记录操作日志就要说一下FireDac 数据集的 delta ,这个对象中存储值数据的变化,在默认情况下 只有新增和修改的变化,没的删除的,需要FilterChanges的数据设置成
FDMemTable2.FilterChanges := [rtModified, rtInserted, rtDeleted, rtUnmodified];
部分源码 :
procedure TForm1.btn1Click(Sender: TObject);
var
strlog: string;
i: Integer;
begin
FDMemTable2.Close;
FDMemTable2.FilterChanges := [rtModified, rtInserted, rtDeleted, rtUnmodified];
// FDMemTable2.FilterChanges 要包含rtDeleted 才能看到删除数据,默认没有rtDeleted
FDMemTable2.Data := FDMemTable1.Delta;
with FDMemTable2 do
begin
First;
while not Eof do
//for 循环数据集的列 即可以记录操作日志,在系统中 记录操作人 操作了什么是很有必要的一个功能
begin
if UpdateStatus = usModified then
begin
Strlog := 'update: ';
for I := 0 to FieldCount - 1 do
begin
if Fields[i].Value <> Fields[i].OldValue then
Strlog := Strlog + Format('列:%s[旧值:%s > 新值:%s] ', [Fields[i].FieldName, Fields[i].OldValue, Fields[i].Value]);
end;
mmo1.Lines.Add(strlog);
end
else if UpdateStatus = usInserted then
begin
Strlog := 'insert: ';
for I := 0 to FieldCount - 1 do
begin
Strlog := Strlog + Format('列:%s[值:%s] ', [Fields[i].FieldName, Fields[i].Value]);
end;
mmo1.Lines.Add(strlog);
end
else if UpdateStatus = usDeleted then
begin
Strlog := 'delete: ';
for I := 0 to FieldCount - 1 do
begin
Strlog := Strlog + Format('列:%s[值:%s] ', [Fields[i].FieldName, Fields[i].Value]);
end;
mmo1.Lines.Add(strlog);
end;
Next;
end;
end;
end;
注意:
FDMemTable1.CachedUpdates:=True;
FDMemTable2.FilterChanges := [rtModified, rtInserted, rtDeleted, rtUnmodified];
全部源码 我已经上传到 :
http://download.csdn.net/detail/u013051638/9699098
Q群 Delphi Home 235236282,欢迎delphi 爱好者加入,一起学习、进步。
要记录操作日志就要说一下FireDac 数据集的 delta ,这个对象中存储值数据的变化,在默认情况下 只有新增和修改的变化,没的删除的,需要FilterChanges的数据设置成
FDMemTable2.FilterChanges := [rtModified, rtInserted, rtDeleted, rtUnmodified];
部分源码 :
procedure TForm1.btn1Click(Sender: TObject);
var
strlog: string;
i: Integer;
begin
FDMemTable2.Close;
FDMemTable2.FilterChanges := [rtModified, rtInserted, rtDeleted, rtUnmodified];
// FDMemTable2.FilterChanges 要包含rtDeleted 才能看到删除数据,默认没有rtDeleted
FDMemTable2.Data := FDMemTable1.Delta;
with FDMemTable2 do
begin
First;
while not Eof do
//for 循环数据集的列 即可以记录操作日志,在系统中 记录操作人 操作了什么是很有必要的一个功能
begin
if UpdateStatus = usModified then
begin
Strlog := 'update: ';
for I := 0 to FieldCount - 1 do
begin
if Fields[i].Value <> Fields[i].OldValue then
Strlog := Strlog + Format('列:%s[旧值:%s > 新值:%s] ', [Fields[i].FieldName, Fields[i].OldValue, Fields[i].Value]);
end;
mmo1.Lines.Add(strlog);
end
else if UpdateStatus = usInserted then
begin
Strlog := 'insert: ';
for I := 0 to FieldCount - 1 do
begin
Strlog := Strlog + Format('列:%s[值:%s] ', [Fields[i].FieldName, Fields[i].Value]);
end;
mmo1.Lines.Add(strlog);
end
else if UpdateStatus = usDeleted then
begin
Strlog := 'delete: ';
for I := 0 to FieldCount - 1 do
begin
Strlog := Strlog + Format('列:%s[值:%s] ', [Fields[i].FieldName, Fields[i].Value]);
end;
mmo1.Lines.Add(strlog);
end;
Next;
end;
end;
end;
注意:
FDMemTable1.CachedUpdates:=True;
FDMemTable2.FilterChanges := [rtModified, rtInserted, rtDeleted, rtUnmodified];
全部源码 我已经上传到 :
http://download.csdn.net/detail/u013051638/9699098
Q群 Delphi Home 235236282,欢迎delphi 爱好者加入,一起学习、进步。
相关文章推荐
- 如何生成sqlplus操作日志
- 用触发器生成数据库表的数据操作日志
- 如何:使用 Tlbimp.exe 生成主互操作程序集[轉]
- 如何生成日志文件
- [网摘]如何使用Logminer来分析具体的DML操作日志
- 如何查询Oracle数据库的操作日志
- [分际]如何使用EVENTLOG类操作日志
- Tomcat会话超时时如何记录操作日志,满足安全审计要求
- Nop-如何增加Nop的后台操作日志<十>
- 如何记录文件服务器上的文件操作日志
- 应付票据审核生成的付款单有什么作用,实际应付票据付款时如何操作?
- WPF中如何使用代码操作数据模板生成的控件
- 用触发器生成SQL Server2000数据表的操作日志
- _disable_logging如何禁止日志的生成
- 如何查询用户操作日志的问题
- 如何查看sqlserver的操作日志?
- [原创]如何收缩数据库日志与脚本生成!
- WPF中如何使用代码操作数据模板生成的控件
- 如何用服务器文件管理系统记录共享文件的访问日志、记录共享文件复制、修改、删除和剪切等操作?
- 操作日志的生成和综合搜索