with adoquery1 do
    begin
      close;
      sql.Clear;
      sql.Add('update crtype set crtype_zt=0 where crtype_id='''+adoquery1.fieldbyname('crtype_id').AsString+'''');
      execsql;
    end;
以上代码不知道是不是应该这样写呢。

解决方案 »

  1.   

    也可以写成:sql.Add('update crtype set crtype_zt=0 where crtype_id='+QuotedStr(adoquery1.fieldbyname('crtype_id').AsString));
      

  2.   

    可以执行后程序报。adoquery1:field'crtype_id'not found 为什么?
      

  3.   

    你表里面沒crtype_id這個字段,你看看表設計,可能是某個字母搞錯了
      

  4.   

    检查一下adoquery1 相关的属性sql等等
      

  5.   

    with adoquery1 do
        begin
          close;
          sql.Clear;
          sql.Add('update crtype set crtype_zt=0 where crtype_id='''+adoquery1.fieldbyname('crtype_id').AsString+'''');
          execsql;
        end; 刚仔细看了一下你的代码,你的adoquery1都已经close了,在更新条件中还用这个adoquery1.fieldbyname('crtype_id').AsString,当然没有字段了。
    先把adoquery1.fieldbyname('crtype_id').AsString赋给一个变量,然后再操作
      

  6.   

    s := adoquery1.fieldbyname('crtype_id').AsString;
    with adoquery1 do
        begin
          close;
          sql.Clear;
          sql.Add('update crtype set crtype_zt=0 where crtype_id='''+s+'''');
          execsql;
        end; 而且不知道你的crtype_id字段是什么类型的,如果是字符型如上,如果是数字的如下。
    sql.Add('update crtype set crtype_zt=0 where crtype_id='+s) 但最好这样写:
    s := adoquery1.fieldbyname('crtype_id').AsString;
    with adoquery1 do
        begin
          close;
          sql.Clear;
          sql.Add('update crtype set crtype_zt=0 where crtype_id=:s');
          parameters.parambyname('s').value := s;
          execsql;
        end;