你有没有用updatesql?用了,把post删除,然后将fields[0].AsString:=Cardid;
  Tblobfield(fields[3]).loadfromfile(picpath);
  放到append前,试试吧!不保证能解决问题!

解决方案 »

  1.   

    对于query为什么只缓存最后一条记录,没有什么理论依据.
    不过可以告诉你另外一个方法.
    使用database的事务.可以达到你的效果.
    database1.StartTransaction;
    try
      //do what you want to do normally.
      database1.Commit;
    except
      database1.Rollback;
    end;
      

  2.   

    使用DATABASE我也知道的,不过我只是对一个数据集使用缓存更新,我觉得没有必要使用DATABASE吧!
      

  3.   

    我没有用updatesql!对单个的数据表进行缓存更新要用updatesql 吗?不用可以吗?
      

  4.   

    不用可以,但是一定要将requestlive设置为true,而且将applyupdates和commitupdates去了
    改为post,将fields[0].AsString:=Cardid;
         Tblobfield(fields[3]).loadfromfile(picpath);放到append前
      

  5.   

    qhdsfh(飞翔的鹰)能不能把代码贴出来!
    另外用说的方法可以实现缓存更新吗?
      

  6.   

    if not query1.CachedUpdates then query1.CachedUpdates:=true;
    with query1 do
    begin
      close;
      sql.clear;
      sql.Add('Select * from TempPic');
      open;  
      
      fields[0].AsString:=Cardid;
      Tblobfield(fields[3]).loadfromfile(picpath);
      append;
    if i=10 then
      begin
        post;
        i:=0;
      end;
    end;
    这样我不知道能否解决问题,但是缓存更新应该没有问题。