请各位看这代码:
    ADOQuery1.SQL.Add('insert into chengjibiao(stu_no,kecheng_no,grade) values(x,k,strtofloat(c))');
x,k,c都是在界面edit里的值,想对应的录入到表里的这3个字段,
但报错:不能是text值的x,应该是常量,表达式,变量,也不能是字段
拿怎么改呢

解决方案 »

  1.   

    stu_no,kecheng_no 是什么类型的字段?
      

  2.   

    to stone565(石头) stu_no,kecheng_no 类型都是varchar
    to lizhi012(小陵) x,k,c是设定的变量
      

  3.   

    ADOQuery1.SQL.Add('insert into chengjibiao(stu_no,kecheng_no,grade) values(quotestr(x),quotedstr(k),strtofloat(c))');看看行不行。
      

  4.   

    ADOQuery1.SQL.Add('insert into chengjibiao(stu_no,kecheng_no,grade) values('+quotestr(x)+','+quotedstr(k)+','+strtofloat(c)+')');
    应该是这样子的吧。
      

  5.   

    还是不行,没本质变化,因为x,k是我已经定义成string类型的,而quotestr函数返回的也就是string类型,那到底怎么改呢,刚才还是报同样的错
      

  6.   

    to lizhi012(小陵) 编译时就报错:没定义quotestr
      

  7.   

    procedure Tcjlr_fr.input_btClick(Sender: TObject);
    var x,k,c:string;
    begin
        x:=xh_ed.Text;
        k:=kch_ed.Text;
        c:=cj_ed.Text;
        with stuxinxi_Dm do
        begin
        adoquery1.SQL.Clear;    ADOQuery1.SQL.Add('insert into chengjibiao(stu_no,kecheng_no,grade) values(quotestr(x),quotestr(k),strtofloat(c))');
        //ADOQuery1.SQL.Add('values(xh_ed.Text,kch_ed.Text,strtofloat(cj_ed.Text))');
        adoquery1.Open;
        adoquery1.Edit;    adoquery1.Post;
        xh_ed.Clear;
        kch_ed.Clear;
        cj_ed.Clear;
        end;
    end;
      

  8.   

    如果数据库中这三个字段是INT INT FLOAT
    那应该是这样的
        AdoQuery1.Close;
        AdoQuery1.SQL.Clear;
        AdoQuery1.SQL.Add('insert into chengjibiao(stu_no,kecheng_no,grade) values('+x+','+k+','+c+')');
        AdoQuery1.execSql;这样就可以在表中插入数据了。
      

  9.   

    to  lizhi012(小陵)
    数据库中这三个字段是INT INT FLOAT时,你的代码是可录入数据了,
     
    那数据库中这三个字段类型是varchar varchar FLOAT呢,时否就是把('+x+')改成什么呢?
    非常谢谢!