我使用ADOQuery对表进行了更新..
DMMain.ADOQuerySelect.FieldByName('THREAD').AsString:='1';
DMMain.ADOQuerySelect.Post;然后马上用另外一个ADOQuery对这个表进行查询.
   DMThread.ADOSelect.Close;
   DMThread.ADOSelect.SQL.Clear;
   DMThread.ADOSelect.SQL.Add('select * from table where THREAD='+''''+'1'+'''');
   DMThread.ADOSelect.Open;
结果查询不出更新后的数据.
并且.我测试了很长的时间.发现第一个数据集更新后.要过一段时间再用第二个数据集查询才可以查询到正确的记录..
我试过DMMain.ADOQuerySelect.Refresh;也不可以..我使用access数据库.难道access数据库更新很慢?
使用两个ADOQuery实在是没有办法.必须使用.大家就不要在这方面讨论了..
程序必须是第一个数据集更新后.马上用第二个数据集查询..怎样才能马上检索出正确的结果?

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2237/2237674.xml?temp=4.035586E-02
    同样的一个问题..难道csdn就没有人解决了吗?
    sigh...
      

  2.   

    DMThread.ADOSelect.SQL.Add('select * from table where THREAD='+''''+'1'+'''');
    var
      str:string;str:='l';
    DMThread.ADOSelect.SQL.Add('select * from table where THREAD='+QuotedStr(str));
    DMThread.ADOSelect.Open;
      

  3.   

    并不是你的数据没有更新,而是你查询时选择的THREAD并不=l
      

  4.   

    DMThread.ADOSelect.SQL.Add('select * from table where THREAD='''+inttostr(1)+'''');
      

  5.   

    DMThread.ADOSelect.Close;
       DMThread.ADOSelect.SQL.Clear;
       DMThread.ADOSelect.SQL.Add('select * from table where THREAD=:num');
       DMThread.ADOSelect.Parameters[0].Value:=trim('1');
       DMThread.ADOSelect.Open;
      

  6.   

    你是不是用的缓存更新??
    試試, ApplyUpdate;
      

  7.   

    用 ADOQuery,然後用你的FieldByName 這種方法, 并不建議, 容易出問題, 要麼就直接用
    Update 的SQL語句!
      

  8.   

    DMMain.ADOQuerySelect.Post;
    后设置断点
    去后台看看是否更新了?
      

  9.   

    要applyupdate才更新到数据库里去的。
      

  10.   

    DMMain.ADOQuerySelect.Post;
    DMMain.ADOQuerySelect.refresh;
      

  11.   

    DMThread.ADOSelect.SQL.Add('select * from table where THREAD=''1''');
      

  12.   

    在有可能是你用了database,而你的操作和database又有关,所以不能立即更新
    举个例子,如果你用缓存更新的话,那缓存更新的变化要依赖于你连接的database,而不是
    adoquery或者adotable
      

  13.   

    ADOQUERY.CLOSE;
    ADOQUERY.SQL.CLEAR;
    ADOQUERY.SQL.ADD('SQL');
    ADOQUERY.EXECSQL;
      

  14.   

    遇见问题后先分析问题出现的原因的几个可能环节
    1. 是你的更新不成功  
    //可能直接查看数据库得到验证
    2. 是更新成功,但查询语句不正确所以查不到  
    //更正查询语句,或上句更新某一记录,再把它查询出来,这时不要用更改的内容作查询条件,用它的关键字段
    3. 是你这种ADO更新查询方式存在问题,不能及时刷新
    //改用,SQL语句方式,如楼上一位所列
    ADOQUERY.CLOSE;
    ADOQUERY.SQL.CLEAR;
    ADOQUERY.SQL.ADD('SQL');
    ADOQUERY.EXECSQL;
      

  15.   

    adoquery1.Post;
    adoquery1.UpdateRecord;
    一定行
      

  16.   

    同样的一个问题..我专程跑到大富翁上去查..结果在大富翁上也没有人能做出正确的结论..
    大富翁其它朋友问到这一个问题..解答的人不是post.就是close then open.让我感觉大富翁上的人都只懂的close.open...还是csdn好..