if adoquery1.active then adoquery1.close;
   adoquery1.sql.clear;
   adoquery1.SQL.Add('select * from imageunit where btnname='+#39+fc.Objects[i].Text+#39);
   adoquery1.Open;
   adoquery1.RecNo:=1;
   showmessage(adoquery1.Fields[1].AsString);//能执行并显示出字符串
   showmessage(adoquery1.Fields[2].AsString);//能执行并显示出字符串
if trim(adoquery1.fields[1].asstring)<>'' then
   begin
   if adoquery2.active then adoquery2.close;
      adoquery2.sql.clear;
      adoquery2.SQL.Add('insert into object([objectcode],[objectname]) Values('+'"'+adoquery1.Fields[1].AsString+'"'+','+'"'+adoquery1.Fields[2].AsString+'"'+')');
       adoquery2.ExecSQL;//执行到改句显示insert into 语句的语法错误
   end;
adoquery2.SQL.Add('insert into object([objectcode],[objectname]) Values('+'"'+adoquery1.Fields[1].AsString+'"'+','+'"'+adoquery1.Fields[2].AsString+'"'+')')
改为
adoquery2.SQL.Add('insert into object(objectcode,objectname) Values('+'"'+adoquery1.Fields[1].AsString+'"'+','+'"'+adoquery1.Fields[2].AsString+'"'+')')
还是显示同样的错误提示!
小弟不知道错在哪儿?怎样改,请大家帮帮忙!

解决方案 »

  1.   

    adoquery2.SQL.Add('insert   into   object([objectcode],[objectname])   Values('+'"'+adoquery1.Fields[1].AsString+'"'+','+'"'+adoquery1.Fields[1].AsString+'"'+')') 
    -----------
    最好不要这样写,看得头晕 
    var
      sql: string;sql := Format('insert into object([objectcode],[objectname]) values(''%s'', ''%s'')', 
                       [adoquery1.Fields[1].AsString, adoquery1.Fields[2].AsString]);
    adoquery2.SQL.Add(sql);
      

  2.   

    adoquery2.SQL.Add('insert   into   object([objectcode],[objectname])   Values('+'"'+adoquery1.Fields[1].AsString+'"'+','+'"'+adoquery1.Fields[2].AsString+'"'+')') 
    ----------- 
    最好不要这样写,看得头晕   
    var 
      sql: string;   sql := Format('insert into object([objectcode],[objectname]) values(''%s'', ''%s'')',   
                 [adoquery1.Fields[1].AsString, adoquery1.Fields[2].AsString]); 
      adoquery2.SQL.Add(sql); 
      

  3.   

    以下代码等效
    var
      strSql: string;  //使且 with 不用写那么多 ADOQuery1
      with ADOQuery1 do
      begin
        Close;
        SQL.Clear;
        strSql := Format('select * from imageunit where btnname = ''%s''', [fc.Objects[i].Text]);
        //或者用 QuotdStr 函数
        //strSql := 'select * from imageunit where btnname = ' + QuotedStr(fc.Objects[i].Text);
        SQL.Add(strSql);
        Open;
        //adoquery1.RecNo:=1; 这条可以不用, 打开之后, 有数据的话,处于第一条
        showmessage(Fields[1].AsString);//能执行并显示出字符串
        showmessage(Fields[2].AsString);//能执行并显示出字符串
      end;  if trim(adoquery1.fields[1].asstring) <> ''   then
      begin
        with ADOQuery2 do
        begin
          Close;
          SQL.Clear;
          strSQL := Format('insert into object([objectcode],[objectname]) Values(''%s'', ''%s'')',
            [adoquery1.Fields[1].AsString, adoquery1.Fields[2].AsString]);
          SQL.Add(strSQL);
          ExecSQL;
        end;
      end;
      

  4.   

    bridge05你好。首先谢谢你的帮忙。
    按照你的代码,显示的还是insert into 语句的语法错误!
      

  5.   

    bridge05你好。首先谢谢你的帮忙。
    按照你的代码,显示的还是insert into 语句的语法错误!
      

  6.   

    bridge05你好。首先谢谢你的帮忙。
    按照你的代码,显示的还是insert into 语句的语法错误!
      

  7.   

    什么数据库 
    --
    如果是 sql server 
    打开事件查控器 
    跟踪一下sql 
    然后到查询分器执行一下
    -------
    或者断点跟踪一下
      

  8.   

    object是关键字吧,用[object]
      

  9.   

    在执行前showmessage(adoquery.sql.text),看看里面的sql能不能在别的工具里执行