str:string;
begin
str:=label27.caption+','+label28.caption+','+edit1.text+......;adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('insert into  维修部(id,id2,id3,.......,) values('''+str+''') ');
adoquery1.SQL.Add('values(' '''+label27.caption+''','''+label28.caption+''' ')');
adoquery1.ExecSQL;
end;
我的大概意思是想插入入一条有很多个字段的记录,显然会超过adoquery字符串数255的限制,请问该如何改我上面的语句?

解决方案 »

  1.   

    ADOCommand1.commandtext:='insert into .................';
    ADOCommand1.Execute;
      

  2.   

    sql server
    sql语句长度 跟 网络包 大小 有关。
    一般是 254 兆。
    我以前1-2兆的 语句 运行 没问题
      

  3.   

    我的意思是adoquery里的SQL字符串的长度问题!!!!!
      

  4.   

    ADOquery1.Close;
          ADOquery1.sql.Clear;
          sqlstr:='SELECT * FROM 维修部'; //关联表
          ADOquery1.SQL.Add(sqlstr);
          ADOquery1.Open;       //插入新记录
          ADOquery1.Insert;
          ADOquery1.fieldbyName('id').Value:=label27.caption;
          ADOquery1.FieldByName('id2').Value:=label28.caption;
          ADOquery1.FieldByName('id3').Value:=...;
          ...
     
          ADOquery1.Post;
    我采用这种办法,把Tmemo控件的Text值(几千个字)都插入记录中。
      

  5.   

    可以先用Insert插入主记录,再使用Update更新其它字段,我以前就是用的这种方法.
      

  6.   

    对,很多方法可以实现,比如说,通过Adoquery.Append方法
    然后下面用
    Adoquery.FieldByName('').value := 值
    Adoquery.FieldByName('').value := 值
    Adoquery.FieldByName('').value := 值
    最后用
    ADOQuery.Post

    Adoquery.UpdateBatch()或使用
    adoquery.sql.loadfromfile(file:string);
    然后执行
      

  7.   

    我的意思是adoquery里的SQL字符串的长度问题sql语句长度 跟 网络包 大小 有关。
    一般是 254 兆。
    我说的 也是这个
    adoquery.sql.text:='............';//一般最大是 254 兆
      

  8.   

    先用Insert在本地插入记录,再使用post/Update更新到数据库中