我是用Delphi开发数据库
学生成绩表(学号,课程号,分数)
其中三个字段中“分数”是 float 型
(其他都没问题)
当我用Query控键向表“学生成绩表”插入记录时使用下面语句:Query1.SQL.Clear; //1
Query1.SQL.Add('insert into 学生成绩表 values('''+edit_x_num.text+''','''+edit_k_num+''','); //2
Query1.SQL.Add(''''+f+''')'); //3
Query1.SQL.Add.ExecSQL;       //4其中edit_x_num,edit_k_num分别是获得学号,课程号的输入框,而 f 是获得初值的 float变量
现在问题在于:3 ,因为f不是string型,所以第3句报错:string不匹配float
后来我尝试把3改为:
Query1.SQL.Add( f)');   //111
Query1.SQL.Add(:f)');   //222
Query1.SQL.Add('+f+')');//333
都出现错误:
对111句,它认为f这里是一个字符串,而不是一个变量
对222,333也不能用。那位仁兄知道这里如何使用变量?不吝赐教,小弟感激不胜

解决方案 »

  1.   

    Query1.SQL.Add('+f+')');//333//////////////////Query1.SQL.Add(f+')');//333
      

  2.   

    错!是:Query1.SQL.Add(floattostr(f)+')');
      

  3.   

    把数据库中的第三个字段改成字符型,然后
    query1.sql.add(''+floattostr(f)+''' ');
      

  4.   

    Query1.SQL.Clear; //1
    Query1.SQL.Add('insert into 学生成绩表 valu('''+edit_x_num.text+''','''+edit_k_num+''',:a); //2
    Query1.Parameters.ParamByName('a1').Value:=f;
    Query1.SQL.Add.ExecSQL;       //4
      

  5.   

    Query1.SQL.Clear; //1
    Query1.SQL.Add('insert into 学生成绩表 valu('''+edit_x_num.text+''','''+edit_k_num+''',:a); //2
    Query1.Parameters.ParamByName('a').Value:=f;
    Query1.SQL.Add.ExecSQL;       //4刚才多写了一个 1 字
      

  6.   

    var
      a,b,c :integer;Query1.SQL.Clear; //1
    Query1.SQL.Add('insert into 学生成绩表 valu(:a,:b,:c)');
    Query1.Parameters.ParamByName('a').Value:=edt_x_num.text;
    Query1.Parameters.ParamByName('b').Value.....
    .....Query1.SQL.Add.ExecSQL;       //4