急!!!急!!!急!!!急!!!急!!!急!!!急!!!急!!!急!!!太急了!!!高手求救! 哎,我是没法了,我有一ClientDataSet控件已经连接好服务器应用程序了,我现在提交一SQL语句,但是ClientDataSet的CommandText属性所能容纳的字符数量最多256个,我现在这条SQL语句的字符长度远远大于256,请问大虾,这如何是好??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将你的sql语句拆开,再用类似ClientDataSet.CommandText:=sql语句段1+sql语句段2+……+sql语句段n;的方式试试看 绝对不可能。我用的超过256一点问题没有。我在commandtext里面构造了1000多条的insert语句同时发送到sqlserver里面。是不是你的sql字符串写的不对呢?var strsql:string;begin strsql:='asdfasfsafasfasfsdf' ClientDataSet.active:=false; ClientDataSet.commandtext:=strsql; ClientDataSet.active:=true;end; 但是ClientDataSet的CommandText属性所能容纳的字符数量最多256个刚查了一下帮助,没发现有这个限制呀。 不是吧,你从DLEPHI的帮助中看到的COMMAND TEXT属性只能是256个字符吗 ,我怎么没看到,应该是不受字符长度限制的,我的SQL语句就比较长,但没出什么问题呀!! ClientDataSet的CommandText属性所能容纳的字符数量最多256个???誰說的?? ClientDataSet1.CommandText是String类型的,所以就跟Query1.text一样,有256限制。所以要想别的办法。如果你的ClientDataSet1.CommandText不是非得用这种方式的话,可在服务段,用SQl语句取数(如写函数接受Sql语句),而不通过ClientDataSet1来动态申请。 对string类型,你可以设置他的长度,用setlength函数 没有这种限制,string类型可以存储2GB的数据。估计是你的赋值语句使用的字符串常数太长了,你可以考虑拆分它们。例如把cds.CommandText:='111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111';//这一句编译不能通过改成cds.CommandText:='111111111111111111111111111111111111111111111' +'111111111111111111111111111111111111111111111' +'111111111111111111111111111111111111111111111' +'111111111111111111111111111111111111111111111' +'111111111111111111111111111111111111111111111' +'111111111111111111111111111111111111111111111';//这样就可以通过了 OwnerData:=VarArrayOf([‘select * from XX’,LastValue]); //传SQL语句去应用程序服务器。其中,你的在远程数据模板上加一个Query,或ADODataSet来执行查询一定可以的我都有试过,LastValue:=NULL.有时间可以试下! 楼主理解错了!是 IDE 编辑器的一行长度不能超过 255。所以你可以这样: CommandText:='abcd'+ 'cdef'+ 'ddsdf';如果 SQL 也有行长限制,则: CommandText:='abcd'#$0D#$0A+ 'dddd'#$0D#$0A+ 'ssfs'; 问一句,'abcd'#$0D#$0A 的后半部分是干什么的? 分开写不就完了。。cds.commandtext:='select .....';cds.commandtext:=cds.commandtext:=+' .....';.... DELPHI XE2 版本号是多少,FR安装不上 服务程序调用WebService接口报错 小弟初学delphi,不知道这样的函数参数该怎么定义,望过路的大侠指点一二! delphi 获取第三方dll取出得数据与真实数据字符个数不一致问题 怎么做到只打印当前页?急,在线... 计算结果输出 Frame如何实现代码重用? 请教 不能用搜索引擎,只好麻烦大家,如何判断用Query 打开的一个数据集是空的呢?? 谁有D5可用的TsiLang组件,最好是4.95或以上,请发一份给我好吗? 哪有ERP示范软件可下载参观? activeForm问题?
ClientDataSet.CommandText:=sql语句段1+sql语句段2+……+sql语句段n;
的方式试试看
我在commandtext里面构造了1000多条的insert语句同时发送到sqlserver里面。
是不是你的sql字符串写的不对呢?
var
strsql:string;
begin
strsql:='asdfasfsafasfasfsdf'
ClientDataSet.active:=false;
ClientDataSet.commandtext:=strsql;
ClientDataSet.active:=true;
end;
誰說的??
cds.CommandText:='111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111';//这一句编译不能通过
改成
cds.CommandText:='111111111111111111111111111111111111111111111'
+'111111111111111111111111111111111111111111111'
+'111111111111111111111111111111111111111111111'
+'111111111111111111111111111111111111111111111'
+'111111111111111111111111111111111111111111111'
+'111111111111111111111111111111111111111111111';//这样就可以通过了
LastValue:=NULL.有时间可以试下!
是 IDE 编辑器的一行长度不能超过 255。
所以你可以这样:
CommandText:='abcd'+
'cdef'+
'ddsdf';如果 SQL 也有行长限制,则:
CommandText:='abcd'#$0D#$0A+
'dddd'#$0D#$0A+
'ssfs';
cds.commandtext:='select .....';
cds.commandtext:=cds.commandtext:=+' .....';
....