我的代码先贴出来:
var
  sqlstr:=string;
begin
  sqlstr:='insert into 资产类指标 Values('+ary[1]+','+ary[2]+','+ary[3]+','+ary[4]+','+ary[5]+‘)’;
  Try  
    ADOConnection.Execute(sqlstr);
  Except
    ShowMessage(Error!);
    Close;
  End;
End编译没错,但是每次运行到ADOConnection.Execute(sqlstr);这句的时候就出问题!
请高手解决。
我觉得问题在于,ADOConnection.Execute(字符串的长度有限制)!
 
  

解决方案 »

  1.   

    with dm.ADOQuery5 do begin
        SQL.Add('insert into test(日期,线别,班别,厂商,机种,工单,批量,计划产量,实际产量,产量差异,差异原因,应作工时,实作工时,生产总数,不良项目,不良板数,板数DPPM,不良率,备注)');
        SQL.Add('values('''+edit1.text+''','''+combobox1.Text+''','''+combobox2.Text+''','''+edit2.text+''','''+edit3.text+''','''+edit4.text+''','''+edit5.text+''','''+edit6.text+''','''+edit7.text+''','''+edit8.text+''','''+edit9.text+''','''+edit10.text+''','''+edit11.text+''','''+edit12.Text+''','''+combobox3.text+''','''+edit13.text+''','''+edit15.text+''','''+edit14.Text+''','''+edit18.Text+''')');
        execsql;
        close;
        sql.Clear;
        sql.add('select * from test order by 日期 asc');
        open;
      end;
      

  2.   

    var 
      sqlstr:=string; 
    begin 
      sqlstr:='insert into 资产类指标 Values('+ary[1]+','+ary[2]+','+ary[3]+','+ary[4]+','+ary[5]+‘)’; 
      Try  
        ADOConnection.Execute(sqlstr); 
      Except 
        ShowMessage(Error!); 
        Close; 
      End; 
    End 
       
    写个showmessage(sqlstr)看看你的sql语句对不对,主要是引号的问题!!!
      

  3.   

    sqlstr你跟踪看下这个字段的值,可能是你插的语句的问题
      

  4.   

    lz你好,請在每一個ary[1]中都改成QuotedStr(ary[1]),1到5都相同即可,謝謝。
      

  5.   

     如果上面的代碼是直接手寫的要考慮其它地方,
    如果是直接從代碼裏貼過來的,請注意 
      sqlstr:='insert into 资产类指标 Values('+ary[1]+','+ary[2]+','+ary[3]+','+ary[4]+','+ary[5]+‘)’; 
    最後一個 ‘)’這肯定是個錯的。
      其實很簡單,直接在執行前先 Show 出來看下不就一切清楚了
      

  6.   

    sqlstr:='insert into 资产类指标 Values(''+ary[1]+'',''+ary[2]+'',''+ary[3]+'',''+ary[4]+'',''+ary[5]+'')';在delphi 字符串中如果有单引号 ' ,那么需要用两个连续的单引号 '' 来代替。
    如上,
    sqlstr 到了sql 里就成了insert into 资产类指标 Values('+ary[1]+','+ary[2]+','+ary[3]+','+ary[4]+','+ary[5]+')这样子才是对的。
      

  7.   

    我上面回答的是钟对你的  +ary[1]+  是字符串的情况。我没有看清是数组。如果是数组:
    1,字符串类型的数组
    sqlstr:=
    'insert into 资产类指标 Values(''' 
    + ary[1] 
    + ''',''' 
    + ary[2]
    + ''',''' 
    + ary[3] 
    + ''',''' 
    + ary[4] 
    + ''',''' 
    + ary[5] 
    + ''')'; 2.如果是int型的数组
    sqlstr:=
    'insert into 资产类指标 Values(''' 
    + inttostr(ary[1])
    + ''',''' 
    + inttostr(ary[2])
    + ''',''' 
    + inttostr(ary[3])
    + ''',''' 
    + inttostr(ary[4])
    + ''',''' 
    + inttostr(ary[5])
    + ''')'; 3.其他类型的依此类推。希望楼主明白,主要还是引号的问题。
      

  8.   

    错误提示是什么,贴出来下1,ary[]如果不是字符串,就得转换成字符串,应为sqlstr是字符串类型,像11楼,用inttostr
    2,SQL问题,你的SQL语句是insert into 资产类指标 Values(a,b,c,d,e)
       建议表明加括号,然后把药插入的列名也显示出来,SQL有时也会出这种莫名其妙的问题
       应该为:insert into [资产类指标](a列,b列,c列,d列,e列) Values('a','b','c','d','e')3,引号问题,如果你插入的是数字,语句insert into [资产类指标](a列,b列,c列,d列,e列) Values(a,b,c,d,e)这样就行,  DELPHI里不变sqlstr:='insert into [资产类指标](a列,b列,c列,d列,e列) Values('+ary[1]+','+ary[2]+','+ary[3]+','+ary[4]+','+ary[5]+')';  如果你插入的是字符串,语句就得     insert into [资产类指标](a列,b列,c列,d列,e列) Values('a','b','c','d','e')  DELPHI里的语句就是sqlstr:='insert into [资产类指标](a列,b列,c列,d列,e列) Values('''+ary[1]+''','''+ary[2]+''','''+ary[3]+''','''+ary[4]+''',
    '''+ary[5]+''')';OK明白了吧,继续试