急啊,TClientDataSet查询遇到问题了,改如何解决啊 ( 积分: 200 )

  • 主题发起人 主题发起人 bilujun
  • 开始时间 开始时间
B

bilujun

Unregistered / Unconfirmed
GUEST, unregistred user!
ClientDataSet的CommandText字符串中,用到SUM,AVG聚合函数和GROUP BY 分组,就会出现 Value of Filed "字段"
is out of range 错误.
例如
select field1,sum(field2) as field2,avg(field3) as field2 from table1 group by field1
怎么办啊
救命
 
聚合字段的数值范围不能满足要求。
我也曾经出过这个错误。
可能是数值长度不够,也可能是小数位数不够。
可尝试下面的方法
修改你的SQL,如
cast(avg(field3) as float)
根据你的要求调整字段。
 
楼上,你好,可是这个语句在sqlplus中可以运行的阿
 
是的,可以。
但是Delphi里就会报错。在打开数据时,因为不是所有的数据都满足你的聚合函数的值
的范围。可能是数据集控件有关。具体我也不太清楚。
如 我在SQL里建立一个临时字段
select a,b,c,t=0 from biao
则数据库会以最小数据类型与之匹配。
如果再试图给它赋0.1就会报错。
你根据你的数据库里的最大值对临时字段的值进行扩充就不会有问题。
我遇的问题就是这样的解决的。
你这样试一下。情况应该差不多。
 
好的,谢谢你。我先试一下,有问题再向你请教
 
happycyp, 你好,我修改成 cast(sum(字段) as float) 还是报错啊,value of field "cast(sum(字段) as float)"
is out of range.
你能不能帮我写个简单能通过的例子,拜托了,急。
 
你的ClientDataSet或者其Provider对应的DateSet不要预定义字段,全部运行时生成
 
如果是sqlserver服务器 你把中间层对应的数据集控件和客户端对应的数据集控件上面写定的字段都去掉。
如果是oracle ,你把中间层和客户端对应的数据集上面的字段都重新提取一下看看。
 
我的中間層24*30天從不掉機. 你可以上QQ:43149565 群的[共享]中下載試試。
 
后退
顶部