adoquery+dbIV我用以下语句添加一条纪录,为什么出错?(insert into 语句的语法错误)
  adoquery1.close;
     adoquery1.sql.Clear ;
     adoquery1.sql.Clear ;
     adoquery1.sql.Text:='insert usertype (rq,name,source) ' + 'values ('+ datetostr(now()) +','''+ edit1.Text +''','+ uppercase(edit2.Text)+')';       try
       adoquery1.execsql;
     except
     close;
       self.Close ;
 end;其中rq为date类型,source为nummber类型,name 为c类型.

解决方案 »

  1.   

    我一般用ADOQuery1.SQL.Add();
    Text我没有用过。
    我觉得那些参数最好用传参数的方法。不要作为字符串连接在一起。
      

  2.   

    with ADOQuery1 do
    begin
      close;
      sql.clear;
      sql.add(' insert into usertype (rq,name,source) ');
      sql.add(' values ('''+ datetostr(now()) +'''    ');
      sql.add(' ,''' +  edit1.Text  + '''             ');
      sql.add(' ,''' +  uppercase(edit2.Text) + '''   ');
      try
        ExecSQL;
      except
      end;
    end;
    self.close;
    你的问题是在datetostr(now()) 那里没有使用'''来联接
      

  3.   

    试一下:datetostr(now()) +','+'''+ edit1.Text +'''+','+ uppercase(edit2.Text)+'''+')'最好加一个memo把你的sql语句显示出来,然后在execsql,这样在调试的时候可以看看生成的sql到底对不对
      

  4.   

    正确的语句应该是values('a','b','c')
    你的是values(a,b,c)
    know?你中间的edit1.Text两边都加了单引号,为什么其他两个参数没加呢,奇怪
      

  5.   

    adoquery1.sql.Text:='insert usertype (rq,name,source) ' + 'values ('+ datetostr(now()) +','''+ edit1.Text +''','+ uppercase(edit2.Text)+')';是不是这里啊?
    楼主的出错信息是什么?好象是符号的问题。
      

  6.   

    insert into usertype  少个into
      

  7.   

    我一般不用那么多单引号,看的人眼花缭乱,用函数QuotedStr多好。
    adoquery1.sql.text:='insert into usertype (rq, name, source) '+
                        'values ('+QuotedStr(DateToStr(Now))+', '+
                        QuotedStr(Edit1.Text)+', '+
                        QuotedStr(uppercase(edit2.text))+')';
      

  8.   

    用format语句
    Format('indert tablename',valuse(%s,%d),''''+Edit1.text+''''。))