哪位大俠幫我這個菜鳥把那個sql語句改正確呢,最好能說明那一堆的引號是怎麼回事
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values('''+Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''',''+strtofloat(edit5.text)+'',''+strtofloat(edit6.text)+'')'; adoquery1.Open;

解决方案 »

  1.   

    編譯時說
    erro converting data type varchar to float
      

  2.   

    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values('''+Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''','+edit5.text+',edit6.text';
     adoquery1.ExecSQL;
      

  3.   

    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values('''+Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''',''+strtofloat(edit5.text)+'',''+strtofloat(edit6.text)+'')'; adoquery1.ExecSQL;
      

  4.   

    写错了,改为:
    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values('''+Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''','+edit5.text+','+edit6.text;
     adoquery1.ExecSQL;
      

  5.   

    如果是整型或是实型等,写SQL语句是不需要引号的,比如你上面最后那个PRICE
    strtofloat(edit5.text)+'','+edit6.text)';
    而且你的操作也有问题,在进行联接字符串时竟把FLOAT型和字符串联接了
      

  6.   

    写错了,改为:
    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values(''''//这里
    +Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''','+edit5.text+','+edit6.text;
     adoquery1.ExecSQL;
      

  7.   

    adoquery1.ExecSQL;
    这是没有返回值进行更新时的可用,而OPEN是有返回值,主要是SELECT用
      

  8.   

    to dulei115 
    怎麼把括號也刪了呢 ?TO hongqi162(失踪的月亮)  
    你只是把OPEN改成EXECSQL了,編譯結果還是erro converting data type varchar to float
      

  9.   

    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values('''+Edit1.text+''','''+Edit2.text+''','''+Edit3.text+''','''+Edit4.text+''','+edit5.text+','+edit6.text+')';
    adoquery1.ExecSQL;
    Delphi中规定:字符串中若存在字符“'”为了区别于字符串的边界字符“'”,在写该字符串时用“''”表示一个单引号;
    告诉你个办法,数两个 + 之间的单引号,如果为奇数,就一定写错了。
      

  10.   

    with adoquery1 do
    begin
      Close;
      sql.Clear;
      sql.add('insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values);
      sql.add(QuotedStr(Edit1.text)+',');
      sql.add(QuotedStr(Edit2.text)+',');
      sql.add(QuotedStr(Edit3.text)+',');
      sql.add(QuotedStr(Edit4.text)+',');
      sql.add(QuotedStr(Edit5.text)+',');
      sql.add(QuotedStr(Edit6.text)+',');
      ExecSQL;
    end;
    在sql语句中没有什么数字或字符串的概念,都是以字符串处理的,所以按照sql语句的格式要在edit.text上加上引号,另外如果是insert的话应该用ExecSQL提交比较好。
      

  11.   

    最好是使用参数的方式:
    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) ');
    adoquery1.sql.add('values (:a1,:a2,:a3,:a4,:a5,:a6)');
    adoquery1.Parameters.parambyname('a1').value:=edit1.text;
    adoquery1.Parameters.parambyname('a2').value:=edit2.text;
    adoquery1.Parameters.parambyname('a3').value:=edit3.text;
    adoquery1.Parameters.parambyname('a4').value:=edit4.text;
    adoquery1.Parameters.parambyname('a5').value:=strtofloat(edit5.text);
    adoquery1.Parameters.parambyname('a6').value:=strtofloat(edit6.text);
    adoquery1.open;
      

  12.   

    TO: lihao_ningxia(耗子) 
    那能夠就我那段代碼進行修改嗎
      

  13.   

    with adoquery1 do
    begin
      Close;
      sql.Clear;
      sql.add('insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values (');
      sql.add(QuotedStr(Edit1.text)+',');
      sql.add(QuotedStr(Edit2.text)+',');
      sql.add(QuotedStr(Edit3.text)+',');
      sql.add(QuotedStr(Edit4.text)+',');
      sql.add(QuotedStr(Edit5.text)+',');
      sql.add(QuotedStr(Edit6.text)+')');
      ExecSQL;
    end;
    对不起,刚才有两处括号写错了。现在改过来了。
      

  14.   

    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values(:p1,:p2,:p3,:p4,:p5,:p6)'
    adoquery1.Parameters.ParamByName(p1).Value:=Edit1.text;
    adoquery1.Parameters.ParamByName(p2).Value:=Edit2.text;
    adoquery1.Parameters.ParamByName(p3).Value:=Edit3.text;
    adoquery1.Parameters.ParamByName(p4).Value:=Edit4.text;
    adoquery1.Parameters.ParamByName(p5).Value:=strtofloat(edit5.text);
    adoquery1.Parameters.ParamByName(p6).Value:=strtofloat(edit6.text);
    adoquery1.ExecSQL;
    这样就不用管什么单引号了!
      

  15.   

    to:dickeybird888(于伟刚)
    編譯錯誤提示; 
    ?用程序目前操作所使用的值的?型不正確
      

  16.   

    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values(:p1,:p2,:p3,:p4,:p5,:p6)'
    adoquery1.Parameters.ParamByName('p1').Value:=Edit1.text;
    adoquery1.Parameters.ParamByName('p2').Value:=Edit2.text;
    adoquery1.Parameters.ParamByName('p3').Value:=Edit3.text;
    adoquery1.Parameters.ParamByName('p4').Value:=Edit4.text;
    adoquery1.Parameters.ParamByName('p5').Value:=strtofloat(edit5.text);
    adoquery1.Parameters.ParamByName('p6').Value:=strtofloat(edit6.text);
    adoquery1.ExecSQL;
    这样就不用管什么单引号了!
      

  17.   

    to shengliqiang168(ValorSlq)  編譯錯誤提示; 
    ?用程序目前操作所使用的值的?型不正確
    是我對storage表的數據類型定義錯誤嗎//?
      

  18.   

    PNo,PName,PScale,PQuat,PGau,PPrice
    字段对应的类型是什么啊???
      

  19.   

    分別是bigint,varchar,varchar,bigint,char,floatPNo是編號,要求不超過7位
    PName是名稱,不超過10個漢字
    PScale是規格,比如M8*10,不允許漢字
    PQuat是數量
    pprice是價格
      

  20.   

    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.Text:='insert into storage (PNo,PName,PScale,PQuat,PGau,PPrice) values(:p1,:p2,:p3,:p4,:p5,:p6)'
    adoquery1.Parameters.ParamByName('p1').Value:=strtoint(Edit1.text);
    adoquery1.Parameters.ParamByName('p2').Value:=Edit2.text;
    adoquery1.Parameters.ParamByName('p3').Value:=Edit3.text;
    adoquery1.Parameters.ParamByName('p4').Value:=strtoint(Edit4.text);
    adoquery1.Parameters.ParamByName('p5').Value:=edit5.text;
    adoquery1.Parameters.ParamByName('p6').Value:=strtofloat(edit6.text);
    adoquery1.ExecSQL;
      

  21.   

    跟我开始时一样,以后我遇到单引号一律用#39来代替
    adodataset1.commandtext:='select * from aaa where a='+#39+'abc'+#39; 

    adodataset1.commandtext:='select * from aaa where a='+''''+'abc'+''''; 等价
    我觉得前者比后者可读性强
      

  22.   

    同意shengliqiang168的方法,
    顺便说一声:要给分的话,先单击管理,然后输入密码,分别给每个人给分!