哎,我是没法了,我有一ClientDataSet控件已经连接好服务器应用程序了,我现在提交一SQL语句,但是ClientDataSet的CommandText属性所能容纳的字符数量最多256个,我现在这条SQL语句的字符长度远远大于256,请问大虾,这如何是好???

解决方案 »

  1.   

    将你的sql语句拆开,再用类似
    ClientDataSet.CommandText:=sql语句段1+sql语句段2+……+sql语句段n;
    的方式试试看
      

  2.   

    绝对不可能。我用的超过256一点问题没有。
    我在commandtext里面构造了1000多条的insert语句同时发送到sqlserver里面。
    是不是你的sql字符串写的不对呢?
    var
     strsql:string;
    begin
      strsql:='asdfasfsafasfasfsdf'
      ClientDataSet.active:=false;
      ClientDataSet.commandtext:=strsql;
      ClientDataSet.active:=true;
    end;
      

  3.   

    但是ClientDataSet的CommandText属性所能容纳的字符数量最多256个刚查了一下帮助,没发现有这个限制呀。
      

  4.   

    不是吧,你从DLEPHI的帮助中看到的COMMAND TEXT属性只能是256个字符吗 ,我怎么没看到,应该是不受字符长度限制的,我的SQL语句就比较长,但没出什么问题呀!!
      

  5.   

    ClientDataSet的CommandText属性所能容纳的字符数量最多256个???
    誰說的??
      

  6.   

    ClientDataSet1.CommandText是String类型的,所以就跟Query1.text一样,有256限制。所以要想别的办法。如果你的ClientDataSet1.CommandText不是非得用这种方式的话,可在服务段,用SQl语句取数(如写函数接受Sql语句),而不通过ClientDataSet1来动态申请。
      

  7.   

    对string类型,你可以设置他的长度,用setlength函数
      

  8.   

    没有这种限制,string类型可以存储2GB的数据。估计是你的赋值语句使用的字符串常数太长了,你可以考虑拆分它们。例如把
    cds.CommandText:='111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111';//这一句编译不能通过
    改成
    cds.CommandText:='111111111111111111111111111111111111111111111'
      +'111111111111111111111111111111111111111111111'
      +'111111111111111111111111111111111111111111111'
      +'111111111111111111111111111111111111111111111'
      +'111111111111111111111111111111111111111111111'
      +'111111111111111111111111111111111111111111111';//这样就可以通过了
      

  9.   

    OwnerData:=VarArrayOf([‘select * from XX’,LastValue]); //传SQL语句去应用程序服务器。其中,你的在远程数据模板上加一个Query,或ADODataSet来执行查询一定可以的我都有试过,
    LastValue:=NULL.有时间可以试下!
      

  10.   

    楼主理解错了!
    是 IDE 编辑器的一行长度不能超过 255。
    所以你可以这样:
      CommandText:='abcd'+
        'cdef'+
        'ddsdf';如果 SQL 也有行长限制,则:
     CommandText:='abcd'#$0D#$0A+
       'dddd'#$0D#$0A+
      'ssfs';
      

  11.   

    问一句,'abcd'#$0D#$0A 的后半部分是干什么的?
      

  12.   

    分开写不就完了。。
    cds.commandtext:='select .....';
    cds.commandtext:=cds.commandtext:=+' .....';
    ....