根据前几位大哥的方法,还是不行啊。求哪位高手帮助啊。
procedure T_Transfer.Button1Click(Sender: TObject);
var
inzh:string;
begin
inzh:=edit2.text;
query1.close;
query1.SQL.Clear;
query1.SQL.Add('insert into fa.register');
query1.sql.Add('(帐号)');
query1.sql.Add('values(inzh)');
query1.ExecSQL;
end;
     fa.register是我的数据库及表名;
     inzh是我定义的变量,通过edit2用户输入的字符来动态填入'帐号'字段;
可是此过程执行后,delphi窗口提示:“。期待是1.。。”;
我不能给values(inzh)中的inzh中双引号啊,一加后'帐号'里填的就不是用户在edit2里输的,而就是'inzh'了。
  我该怎么解决????

解决方案 »

  1.   

    query1.sql.Add('values(inzh)');=>
    query1.sql.Add('values(''''+inzh+''')');
      

  2.   

    不好意思,多了一个',应为
    query1.sql.Add('values('''+inzh+''')');
      

  3.   

    首先说一点,你的sql语句里面好象少了一个空格
    我把你的代码整理一下,你看能不能运行
    query1.SQL.Clear;
    query1.SQL.Add('insert into fa.register');
    query1.sql.Add('(帐号)');
    query1.sql.Add('  values('+''''+inzh+''''+')');
    query1.ExecSQL;
      

  4.   

    我觉得加一个mySql比较清楚明了。
    var
      inzh:string;
      mySql:String;
    begin
      inzh:=edit2.text;
      mySql := 'insert into fa.register(帐号) values('''+inzh+''')';
      query1.close;
      query1.SQL.Clear;
      query1.sql.Add(mySql);
      query1.ExecSQL;
    end;
      

  5.   

    zzheaptech(风的往事):
    用多个Add语句时相当于有多行,行与行之间相当于有空格
      

  6.   

    另外,这种动态给sql赋值,可不可以不用inzh之类的变量,直接用sql参数实现呢?
      

  7.   

    “=>”在这里是简单地表示把其前语句改为其后语句
    可以用SQL参数实现
    query1.sql.Add('values(:myparam)');
    在最后再给参数赋值
    Query1.ParambyName('myparam').AsString:=inzh;
      

  8.   

    谢谢东北人大哥!!!
    可又有新问题:
    procedure T_Transfer.Button1Click(Sender: TObject);
    var
    mysql:string;
    money:currency;
    dj:string;
    outzh:string;
    inzh:string;
    begin
    money:=strtocurr(edit5.Text);
    dj:=edit3.Text;
    outzh:=edit1.Text;
    inzh:=edit2.text;
    mysql:='insert into fa.register (帐号,业务单位,单据号,收付,金额) values('''+inzh+''','''+outzh+''','''+dj+''',''转'',''+money+'')';
    query1.close;
    query1.SQL.Clear;
    query1.SQL.Add(mysql);
    query1.ExecSQL;在这里就执行不了了。我定义的金额字段为货币型的,我这段代码错在哪里啊?
      

  9.   

    mysql:='insert into fa.register (帐号,业务单位,单据号,收付,金额) values('''+inzh+''','''+outzh+''','''+dj+''',''转'','+FormatCurr('#.##',money)+')';
      

  10.   

    为什么要这么复杂呢?
    我不是已经用strtocurr(edit2.text)将值转换成货币型的、又赋给了变量money吗?
    东北人老师能给解释一下吗?
      

  11.   

    还有:'+FormatCurr('#.##',money)+')' 
    这段是什么意思叱?尤其是两个单引号及两个加号,搞昏 了。
      

  12.   

    要知道,mysql本身是String类型的,所有它的各个组成部分都要与String兼容,所以上述也可改成
    mysql:='insert into fa.register (帐号,业务单位,单据号,收付,金额) values('''+inzh+''','''+outzh+''','''+dj+''',''转'','''+Edit2.text+''')';
    就是说不要money这个变量
      

  13.   

    可是,edit2.text得到的是字符啊,但sql返回的数据库表对应字段是货币型的啊。不用试就应该不行吧?
      

  14.   

    mysql:='insert into fa.register (帐号,业务单位,单据号,收付,金额) values('''+inzh+''','''+outzh+''','''+dj+''',''转'','+Edit2.text+')';