delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
如果记录数据库表修改记录 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiDB/html/delphi_20061222142245163.html
我想记录每个用户对每个表的修改都能记录到一个系统表里,请问应该如何实现呢?  
  最好可以记录到字段级的修改,对每次修改都记录初值及修改后的值。  
   
  我朋友说可以用触发器,但我感觉也不太对,因为触发器并不知道当前操作的用户,我还要记录当前修改是哪个用户  
   
  请兄弟们帮我看一下。谢谢啦。

你可以考虑在表中增加一个字段表示记录的当前状态;例如0表示正常可用;1表示被修改过,2表示被删除;另加一个字段表示操作人员;  
  这样在对表进行更新时不实际操作原记录,而是修改状态字段的值;而同时在表中新增一条记录

当然,新增的记录状态值为0;

db控件post   之前有oldvalue   和newvalue,你可以试试

比如那个的是。我为了简化事务处理把提交事务写在了一个函数里。  
  function   TdmClient.commitUpdate(ADOCon:TADOConnection;DataSet:TCustomADODataSet):   Integer;  
      var   DataSetOld,DataSetNew:TCustomADODataSet;  
  begin  
      Result   :=   1;  
      try  
          DataSet.Connection   :=   nil;  
          ADOCon.Close;  
          ADOCon.Open;  
          DataSet.Connection   :=   adocon;  
          ADOCon.BeginTrans;  
          DataSet.UpdateBatch;  
          ADOCon.CommitTrans;  
      except  
          ADOCon.RollbackTrans;  
          Result   :=   0;  
      end;  
  end;  
  我还有一个想法就是在调用这个函数里,把旧的数据集从数据库中取出来然后进行更新,  
  然后把两个DataSet进行比较,检查出修改和删除或新增的记录,期待楼下朋友的帮助。

posted on 2008-12-11 10:09 delphi2007 阅读(321) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。