我想在用一条sql中对一个表插入一条新记录,这个记录中有的字段为文本有的为时间有的为数字。
这条添加的sql怎么写。我想用insert into 某个表()();
好象用简单的如:
Adoquery1.SQL.Clear;
s:='insert into T_RegAthlete values(s1+s2+s3);//s1对应为某字段的字符串;
adoquery1.sql.Add(s);
Adoquery1.ExecSQL;
这好象不行总是提示,s1参数没有默认值。
为什么?谢谢大家,给点意见,我想用 inset into 是想实现多表操作。

解决方案 »

  1.   

    Adoquery1.SQL.Clear;
    s:='insert into T_RegAthlete(列名1,列名2,列名3) values(:A,:B,:C)';
    adoquery1.sql.Add(s);
    adoquery1.Parameters.ParamByName('A').Value:='s1';
    adoquery1.Parameters.ParamByName('B').Value:=s2;
    adoquery1.Parameters.ParamByName('C').Value:=s3;
    Adoquery1.ExecSQL;
    你这里的s2和s3算是什么类型的?????????????????
      

  2.   

    Adoquery1.SQL.Clear;
    s:=foramt('insert into T_RegAthlete values(''%s'',%d,''%s'')',[s1,strtoint(s2),strtodate(s3)]);
    //s1,s2,s3分别对应为字符串,数字,日期;
    adoquery1.sql.Add(s);
    Adoquery1.ExecSQL;
      

  3.   

    Adoquery1.SQL.Clear;
    s:=format('insert into T_RegAthlete values(''%s'',%d,''%s'')',[s1,strtoint(s2),strtodate(s3)]);
    //s1,s2,s3分别对应为字符串,数字,日期;
    adoquery1.sql.Add(s);
    Adoquery1.ExecSQL;
      

  4.   

    Adoquery1.SQL.Clear;
    s:='insert into T_RegAthlete values(s1+s2+s3);//s1对应为某字段的字符串;
    adoquery1.sql.Add(s);
    Adoquery1.ExecSQL;
    在sql.add之前加一个showmessage(s)看看sql语句对不对正确的s应该这样写:
    s:='insert into T_RegAthlete values ('''+s1+','''+s2+''','''+s3+''')';