rt

解决方案 »

  1.   

    /用这个
           Qry.Filtered:=false;
           Qry.Filtered:=true;
           Qry.FilterGroup:=fgPendingRecords ;
      

  2.   

    boz(波) :能否解释一下?
      

  3.   

    if ADOTable1.fields[0].newvalue<>ADOTable1.fields[0].oldvalue then
     showmessage('Edit');
      

  4.   

    你可以在datasource 里的ondatachange做出判斷.
      

  5.   

    比较同意BOZ兄
    如果你是用的CACHE来提交的
    数据集控件好像有个属性是updatestatus,你可以参考DELPHI HELP
    上面应该都很清楚的描述哪些记录被删除,哪些被修改等
      

  6.   

    updatestauts参数值:
    usUnmodified The current record has no unapplied cached updates.
    usModified The current record has unapplied modifiecations.
    usInserted The current record has been inserted but the insertion was not applied.usDeleted          The current record represents a deleted record, where   the deletion has not yet been applied.
      

  7.   

    据分析,adotabel在提交之前,会检测一个state的值,这个值表示了当前的adotable记录的状态,可惜这还不能达到我的要求
      

  8.   

    看李维的书《Delphi 5.X ADO_MTS_COM+高级程序设计篇》第二章有很清楚的讲解
      

  9.   

    用这个书名搜索一下,多着呢,一般只有前四章,不过对于ADO的操作已经够用了:)
      

  10.   

    Delphi 5.X ADO_MTS_COM+高级程序设计篇(32M):
    ftp://book:[email protected]/pro/delphi/Delphi5.xADO_MTS_COM+高级程序设计篇.rar
    若没有宽带:我可以拷贝一段解释
      

  11.   

    先看这一段:
    FgUnassigned 指定不使用任何的过滤器来过滤数据
    fgNone 移去任何的过滤器,让所有的数据都显示出来。这也可以通过设定ADO的Filtered属性值为False来达到
    fgPendingRecords 只显示被修改过但尚未更新回数据源的数据或被修改过但尚未被取消更新的数据
    fgAffectedRecords只显示受到上一次更新回数据源影响的数据
    fgFetchedRecords 只显示在目前更新缓存之中的数据。这些数据是在上一次
    从数据源取得之后所有储存在客户端的数据
    fgPredicate 只显示刚被删除的数据
    fgConflictingRecords 只显示被修改过但当更新回数据源时发生错误的数据
      

  12.   

    几天前学习了一下,现在反馈学习成果,与大家共享波仔说的是一种方法,更直接一些就是访问记录集的UpdateStatus属性。通过察看VCL,可以看到UpdateStatus是一个枚举类型,包括usUnmodified, usModified, usInserted, usDeleted,应该是可以完全反映任何一条的记录的状态了。只是,usModified状态下,究竟哪些字段被修改了,hehe,还没有简单的方法弄清楚。