用adoquery组件,当用户修改了数据集的一条或几条记录后,我怎么判断他修改了那几条记录?adoquery1.first;
while not adoquery1.eof do
begin
  //在这儿如何写记录是否修改的语句?
  adoquery1.next;
end;

解决方案 »

  1.   

    笨办法,添加一个字段用来记录修改与否,用户修改某条记录时可以通过
    query.fieldbyname('flag').value:=true;
    判断 的时候看看这个标志位是不是true
      

  2.   

    用一个字段来保存记录的修改状态也太麻烦了,这个我也想过的。不喜欢这样做。问题的来源是这样的:用户查询出一个表的几百条记录后,可能会修改几条记录。怎样保存修改的记录?
    有个笨办法是把几百条记录全部删除后,再用
    while not adoquery1.eof do
    beginend;
    循环的办法来插入几百条记录。 这样做的效率很低。所以希望有个办法能够只更新用户修改的记录即可,不要操作几百,几千条记录。
    adoquery有个modified属性,但只能判断当前记录,离开记录后就不能判断了。
      

  3.   

    Indicates whether the active record is modified.property Modified: Boolean;
    adoquery1.Modified
      

  4.   

    参考 TField 的 CurValue、NewValue、OldValue 属性
      

  5.   

    有办法了,用adoquery.updatestatus 就可以了,它有4个状态,未修改,修改,新增,删除。
      

  6.   

    具体怎样使用adoquery.updatestatus实现呢!!!!能否说的详细写,最好附带程序说明
      

  7.   

    if (ADOQuery1.UpdateStatus = usModified) then    //已修改的
    begin
    end else if (ADOQuery1.UpdateStatus = usInserted) then //新增的
    begin
    end;
      

  8.   

    如果不是批次更新的话,post之后就不要想了
      

  9.   

    用一个Tlist数组,将更改的记录指针写到Tlist里
      

  10.   

    为什么不用批更新呢,将ADOQuery1的LockType设为ltBatchOptimistic,当用户需要更新时使用
    UpdateBatch,不就实现了需求吗?