大家好:
   在dbgrid中修改记录时能否判断出是哪一个字段被修改,我是个菜鸟,请详细指点。

解决方案 »

  1.   

    if  ADOExceSql.Fields[0].OldValue =  ADOExceSql.Fields[0].NewValue then 
    //没有修改
      

  2.   

    应该没有直接的方法、属性判断吧!不过你可以试试用OldValue 、NewValue应该可以判断
    if ADOQuery1.FieldByName('aa').OldValue =
    ADOQuery1.FieldByName('aa').NewValue then
    //则此字段没有修改!
    这样也太麻烦!请楼主试试!
      

  3.   

    原来zsjzwj(北极熊) 兄弟来的这么快,早知道就不进来了!进来时没看到你在!
      

  4.   

    to: zsjzwj(北极熊) 
    呵呵!不好意思!如果上面的代码楼主调试通过,请楼主把分全部给 zsjzwj(北极熊) 兄弟,
    在此感谢!
      

  5.   

    Var
      I:Integer;
    Begin
      for I:= 0 to ADOQuery2.FieldCount - 1 do
      begin
        if ADOQuery2.Fields[I].NewValue <> ADOQuery2.Fields[I].OldValue then
          ShowMessage('字段:'+ADOQuery2.Fields[I].FieldName+' 发生了改变。');   
      end;
      

  6.   

    大家好,我也有个难做的问题,我看高手在此众多,能否帮个忙,不胜感激!!!
    http://community.csdn.net/Expert/topic/4229/4229487.xml?temp=.5441248
      

  7.   

    这个办法很好,不过好像有漏洞,如果记录异动了呢?我觉得用临时表可以,在打开之前,先将数据内容放入临时表。
    或者就用脱离数据库的组件,比如CxGrid,比较数据库内容与界面上内容的差异。