我在中间层写了一个方法
procedure TDataSrv.ExecSqlBatch(sqltext: OleVariant);
begin
adoquery2.Close;
  adoquery2.SQL.Clear;
  adoquery2.SQL.add(sqltext);
  adoquery2.Open; 
end;客户端调用如下
procedure TFNewHF.BtnOKClick(Sender: TObject);
var
  sss:tstringlist;
begin
  sss:=TStringList.Create;
  sss.Add('SET XACT_ABORT ON');
  sss.Add('Begin TransAction');
  sss.Add('update khsj set lasthf=''20070101'' where khh=''11100001''');
  sss.Add('Insert Into thf(khh,xm,hfry,hfrq)');
  sss.Add('Values(''1'',''Name1'',''www'',''200905hhhh06'')');
  sss.Add('Commit TransAction');
  dm.SocketConnection1.AppServer.execsqlbatch(sss.Text);
end;
客户端运行的时候sss.text传到中间层看sqltext内容只有前4句,'Values(''1'',''Name1'',''www'',''200905hhhh06'')'和后面的内容就没有了,请问如何解决?

解决方案 »

  1.   

    把adoquery2.SQL.add(sqltext); 改成adoquery2.SQL.Text := sqltext; 看行不行不行可以改用Variant数组
      

  2.   

    to lihuasoft 
    我试过在中间层定义一个sss:tstringlist变量,然后sss.text:=sqltext,查看sss的值也是只有前半部分to dacsd
    我把客户端里添加的每一个字符串长度改小一点,同样还是有  sss.Add('Values(''1'',''N'',''w'',''6'')')就可以传到中间层所以我怀疑还是sqltext: OleVariant长度不够