表1:f_leixin   字段:leixin(类型)  yti(存入统计类型结果)
表2:tk  字段:t11(类型)
begin
adotable2.Open;
adotable2.edit;
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.sql.Add('update  f_leixin set yti=(select count(*) from tk where  ''+f_leixin.leixin+'' like ''+tk.t11+'' )');
adoquery2.Open;
end;执行时系统提示:
“operation  must use an  updateable query”为什么????

解决方案 »

  1.   

    兄台,你(select count(*) from tk where  ''+f_leixin.leixin+'' like ''+tk.t11+'' )
    怎么能把tk表的条件做为f_leixin表的条件?
    如果我没理解错的话,应该是
    begin
    adotable2.Open;
    adotable2.edit;
    adoquery2.Close;
    adoquery2.SQL.Clear;
    adoquery2.sql.Add('update  f_leixin set yti=(select count(*) from tk) where  ''+f_leixin.leixin+'' like ''+tk.t11+'');
    adoquery2.execsql;
    end;
      

  2.   

    还是执行时系统提示:
    “operation  must use an  updateable query”为什么????
      

  3.   

    begin
    adotable2.Open;
    adotable2.edit;
    adoquery2.Close;
    adoquery2.SQL.Clear;
    adoquery2.sql.Add('update  f_leixin set yti=(select count(*) from tk) where  '+f_leixin.leixin+' like '''+tk.t11+''');
    adoquery2.execsql;
    end;
    应该没错!
      

  4.   

    再这样试一试
    begin
    adotable2.Open;
    adotable2.edit;
    adoquery2.Close;
    adoquery2.SQL.Clear;
    adoquery2.sql.Add('update  f_leixin set yti=(select count(*) from tk) where  '+leixin+' like '''+tk.t11+''');
    adoquery2.execsql;
    end;
      

  5.   

    我的f_lixin_leix 和 tk.t11都是字段变量上边的不行啊???
      

  6.   

    你先把tk表打开,把tk表的字段tll的值赋给一个变量,
    假设adotable2对应tk表.
    var i:string;
    begin
      adotbale2.open;
      i:=adotbale2.fieldbyname('tll').value;
      adoquery2.Close;
      adoquery2.SQL.Clear;
      adoquery2.sql.Add('update  f_leixin set yti=(select count(*) from tk)   where  '+leixin+' like '''+i+''');
      adoquery2.execsql;end;
      

  7.   

    还是不行啊不加adoquery2.execsql;
    程序可以运行但是没有统计结果加了上一句还是老样子帮我帮我吧。
      

  8.   

    兄弟,怎么帮你啊?你把问题说清楚
    你的代码是要更新f_leixin表的记录,你还想干什么?
      

  9.   

    execsql是执行但不返回结果的,你要返回结果要执行完后再open才能返回结果
      

  10.   

    var i:string;
    begin
      adotbale2.open;
      i:=adotbale2.fieldbyname('tll').value;
      adoquery2.Close;
      adoquery2.SQL.Clear;
      adoquery2.sql.Add('update  f_leixin set yti=(select count(*) from tk)   where  '+leixin+' like '''+i+''');
      adoquery2.execsql;
      adoquery2.sql.clear;
      adoquery2.sql.add('select * from f_leixin');
      adoquery2.open;
    end;
    返回f_leixin表的所有记录
      

  11.   

    你将程序发到[email protected]
    我帮你看看
      

  12.   

    sql语句有问题,应该是
    adoquery2.sql.Add('update  f_leixin set yti=(select count(*) from tk where  f_leixin.leixin like tk.t11 )');
      

  13.   

    to :misszhi(治儿,等你一生) 
    程序可以执行但是F-LEIXIN表里没有统计的数据
    luckyboy97(幸运男孩) ( :
    你有QQ吗我发给你: