query2.close;
  query2.sql.clear;
  query2.sql.add(Format('update dwdm set bm=''%s'' where dm=''%s''', [Edit2.Text, Edit1.Text]));
  query2.execsql; //到这句就出问题

解决方案 »

  1.   

    写成:query2.sql.add('update dwdm set bm='+quotedstr(edit2.text)+'with dm='+quotedstr(edit1.text) );
      

  2.   

    query2.sql.add('update dwdm set bm='+edit2.text+' with dm='+edit1.text);
    试试看,应该可以了。
      

  3.   

    我觉得最后一句query2.execsql; //到这句就出问题
    应该是query2.open,因为你前面已经关闭query2,所以要打开才可以执行
      

  4.   

    还应该把Query2.Active:=true;去掉吧
      

  5.   

    如果是对数据库的数据进行修改更新等操作~~则Query.ExecSQl~~~因为没有返回集~~
    如果是查询~~用Query.Open~~~
      

  6.   

    回复人: zoomyf(易风) (2001-11-24 20:16:13)  得0分 
    写成:query2.sql.add('update dwdm set bm='+quotedstr(edit2.text)+'with dm='+quotedstr(edit1.text) );  
    这句的格式用作FILTER还可以,当SQL语句不行。复人: chechy(chechy) (2001-11-24 20:05:19)  得0分 
    query2.close;
      query2.sql.clear;
      query2.sql.add(Format('update dwdm set bm=''%s'' where dm=''%s''', [Edit2.Text, Edit1.Text]));
     这句理论上可行。.OPEN是能返回结果集,.EXECSQL不返回结果集。但两种都不会有错误。
      

  7.   

    建议:给QUERY2加二个PARAMS,如:
      WITH QUERY2 DO 
      BEGIN
      PARAMSBYNAME(P_1):=EDIT1.TEXT;
      PARAMSBYNAME(P_2):=EDIT2.TEXT;
      SQL.CLEAR;
      SQL.ADD(UPDATE DWDM SET BM=:p_1 where dm=:p_2
      sql.execsql;
      end;
      
    加PARAMS会吗不会就别玩这个了
      

  8.   

    搞错了,上句
    PARAMSBYNAME(P_1):=EDIT1.TEXT;
      PARAMSBYNAME(P_2):=EDIT2.TEXT;
    应为:
    PARAMSBYNAME(P_1).asstring:=EDIT1.TEXT;
      PARAMSBYNAME(P_2).asstring:=EDIT2.TEXT;试试吧