当前位置:主页>仓库管理软件> 列表

TClientDataSet如何取得统计结果的值?请高手指 找用友财务软件使用

财务软件版1楼: 我使用三层系统,在执行下行语句时老是出错,请问如何解决?
客户端程序如下:
With DM_Frm.ClientDataSet1 do
begin
Close;
CommandText:=''Select count(*) From qslb_EQinfo'';
Open;
end;
LE_Mo_Total.Text:=Fields[0].AsString;

执行到“LE_Mo_Total.Text:=Fields[0].AsString;”这句时出错,报“value of field ''count(*) is out of range”,请问错在哪里,我如何得到统计结果!请高手指点啊!先谢啦!

2楼: 您好!

LE_Mo_Total.Text:=Fields[0].AsString;
这句是不是应该放在begin...end之间呢?因为你用的是With ..do 语句. 如用excel制作进销存

3楼: 不好意思啊,已经写在begin....end之间了,上面写错了,程序是这样的
客户端程序如下:
With DM_Frm.ClientDataSet1 do
begin
Close;
CommandText:=''Select count(*) From qslb_EQinfo'';
Open;
LE_Mo_Total.Text:=Fields[0].AsString;
end;

4楼: 你的统计结果是数值,但你把他当string付给LE_Mo_Total.Text,肯定错啦.要转换:
LE_Mo_Total.Text:=inttostr(Fields[0].value);

5楼: to:pascal!
你说的数值类型问题我试过了,转换成数值型还是错

6楼: 难道就没人遇到过这种问题,还是说高手都用其它方法?有其他方法可以说啊,我只要得到返回值就行了。

财务软件版7楼: value of field ''count(*) is out of range这个错不在ClientDataSet1这边,应该在数据库里.你用什么数据库?中间层用什么?
把你这句放中间层里,应该也出错:
Select count(*) From qslb_EQinfo

8楼: 执行Select count(*) From qslb_EQinfo语句并不会出错,而是LE_Mo_Total.Text:=Fields[0].AsString;出错

9楼: 你可以用调试检查一下在ClientDataSet1执行后,其数据缓冲是否有记录数。

10楼: CommandText:=''Select count(*) as [A] From qslb_EQinfo'';

11楼: 这和字段名应该没有什么关系,楼主是用fields[0]数组来取字段的值.

12楼: With DM_Frm.ClientDataSet1 do
begin
Close;
CommandText:=''Select count(*) as infocount From qslb_EQinfo'';
Open;
end;
clientdataset1.FieldByName(''infocount '').AsString; 呢 如用友财务软件使用

13楼: 谢谢sbzldlb的回答,用字段别名我也试过了,还是不行,我就怀疑是不是服务端没有把数据传回给客户端组件。

财务软件版14楼: 后台数据库是SQL SERVER还是ORALCE,还是什么?


如果你用ADO,后台用ORACLE数据库就会出现这个问题。

15楼: 你得语法有问题,"count(*) as 自己定义个变量"

16楼: 清空查询了吗??

17楼: TO:jennykiller
我的数据库就是ORACLE,请问如何解决,SQLSERVER为何不会出现此问题?

18楼: 这跟ORACLE的数据类型有关,因为ORACLE的Number类型的精度太高了,ado的驱动也有问题,不只是count,如果你的数据库中number类型的字段不指定精度也会有问题。
解决也不是没办法,可以用TO_CHAR转换一下
select to_char(count(*)) from qslb_EQinfo

19楼: 你不要用AsString,用AsInteger,变量定义为整型看看。
赋给LE_Mo_Total.Text再用IntToStr进行转换。试试