s:array [1..4] of string;
a,b,sql,ss:string;
i:integer;
begin
for i:=1 to 4 do
    s[i]:=inttostr(i);
    sql:='insert into fs values ( ';
for i:=1 to 4 do
   sql:=sql+'''''''+s['+inttostr(i)+']+'''''',';
Delete(sql,Length(sql),1);
sql:=sql+')';//adoquery1.Close;
//adoquery1.SQL.Add(sql);
//adoquery1.ExecSQL;
memo1.Text :=ss;-----在这里显示的是insert into fs values ( '''+s[1]+''','''+s[2]+''','''+s[3]+''','''+s[4]+''')如果用adoquery1.SQL.Add(sql);
       adoquery1.ExecSQL;就会提示数据类型不对,如何解决????????
如果sql:='insert into fs values ( '''+s[1]+''','''+s[2]+''','''+s[3]+''','''+s[4]+''')';
    就可以插入~~~~~但是我不想这样做!!!!!!!! 如何解决???????
如果用adoquery1.Close;
//adoquery1.SQL.Add(ss);
//adoquery1.ExecSQL

解决方案 »

  1.   

    错在这一行:
    for i:=1 to 4 do
       sql:=sql+'''''''+s['+inttostr(i)+']+'''''',';你将s[i]当作字符串值传递了,当然会出错了改为:
    for i:=1 to 4 do
       sql:=sql+'+QuotedStr(s[i])+',';
     
      

  2.   

    integer 类型应该
    for i:=1 to 4 do
       sql:=sql+ s[i] +',';
      

  3.   

    可以用ADO的append方法,直接追加。
      

  4.   

    adoquery的SQL可以这样写吗?
    sql:='select a.*,b.*,c.'+G+' from '+G+' a,'+GD+'  b,综合分表 c where a.学号=b.学号 and a.学号=c.学号';