如题!~~~
下面是我的更新代码,需要执行至少3次最多20多次,现在就是最后一次一般不成功,请各位大大帮忙解决下
        with DM.ADOQ_Main do
        begin
            //Close;
            SQL.Clear;
            SQL.Add('Update ColSetup Set ');
            SQL.Add('bVisible=:bVisible');
            SQL.Add(' Where ID='+CurrentNode.Texts[0]);
            Parameters.ParamByName('bVisible').Value:=not(StrToBool(CurrentNode.Texts[4]));
            ExecSQL;
        end;

解决方案 »

  1.   

    你加了' Where ID= '+CurrentNode.Texts[0]看是否满足更新条件
      

  2.   

    你跟踪最后一个CurrentNode.Texts[0]的值,看数据库里是否有这个ID值呢
      

  3.   

    你把DM.ADOQ_Main.sql.text取出来,放到查询分析器里执行下看有
    什么叫程序操作过快啊
      

  4.   

    CurrentNode 最后一次为 nil 
    希望仔细跟踪调试。
      

  5.   

    谢谢各位,问题未得到解决!~~
    现把问题详细阐述一次,希望各位大大能看出问题所在!~~~
    因TREEVIEW列是数据库存储各项属性值,TREEVIEW的列是动态更新的,现点击BOTTON弹出管理窗口,修改其中某值后,马上关闭窗口,
    回到TREEVIEW窗口,在关闭管理窗口时刷新TREEVIEW,刷新时,TREEVIEW删除全部内容,从新从数据库里读取数据,从新写TREEVIEW
    的列和数据,现在就有个这个问题,假如,我不在管理窗口关闭时,或者不在TREEVIEW从写前使用SLEEP停止一下,有可能出现刷新无效
    ,就是列的显示与否(最直接的体现),修改后不会立即体现出来,等一下,再刷新的话,就没这个问题!~~
      

  6.   

    你在最后一次执行完毕之后,或者重新读取之前,用一下DM.ADOQ_Main.UpdateCursorPos或者其他之类的update操作看看
    因为看来你的操作是正确的,应该是取出来的缓冲数据集没有更新