奇怪的现象:value of field 'COUNT(*)' if out of range

haifengs 2003-10-21 09:22:01
如果执行以下代码:
sSql:='select count(*) from '+
' T_SD_SB_GTXL where XL_ID='''+sXLID+''' ';
DataSet:= GetDataSet(sSql);
if DataSet.FieldCount<1 then exit;
if DataSet.RecordCount<1 then exit;
if DataSet.FieldCount<1 then exit;
sTotalJD:=DataSet.Fields[0].asstring; //执行到这里出错
出错信息为:
value of field 'COUNT(*)' if out of range

如果SQL语句改为这样
sSql:='select * from '+
' T_SD_SB_GTXL where XL_ID='''+sXLID+''' ';
DataSet:= GetDataSet(sSql);
if DataSet.FieldCount<1 then exit;
if DataSet.RecordCount<1 then exit;
if DataSet.FieldCount<1 then exit;
sTotalJD:=DataSet.Fields[0].asstring;
一切执行正常
其中GetDataSet(sSql);函数据定义如下
function GetDataSet(sSql:string):TDataSet;
begin
Result:=nil;
if not SocketConnection.Connected then
begin
ShowMessage('没有连接数据库,请重新连接!');
exit;
end;

ClientDataSet.Close;
ClientDataSet.CommandText:=sSql;
ClientDataSet.Open;

Result:=ClientDataSet;
end;
在三层中,不能执行'select count(*) from table ; 的语句吗?
为什么返回的结果集,有问题?
请指教
...全文
75 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jobs2001 2004-01-09
  • 打赏
  • 举报
回复
等待结果
haifengs 2003-10-27
  • 打赏
  • 举报
回复
sTotalJD为 String

delphi 7.0 windows 2000 server
wuzhongmin 2003-10-24
  • 打赏
  • 举报
回复
你这样是肯定可以的。只是想问你sTotalJD这个变量是什么内型。如下:
var
i:integer;
d:string;
begin
cds1.Close ;
cds1.CommandText :='select count(*) from area where areano = '''+'1234'+''' ';
cds1.Open ;
i:=cds1.Fields[0].AsInteger ;
d:=cds1.Fields[0].AsString ;
showmessage(inttostr(i));
showmessage(d);


这个可以运行的。对了,你的DELPHI是什么版本?OS是什么?
haifengs 2003-10-24
  • 打赏
  • 举报
回复
up
hch_45 2003-10-22
  • 打赏
  • 举报
回复
sSql:='select count(*) as numcount from '+
' T_SD_SB_GTXL where XL_ID='''+sXLID+''' ';

试试
haifengs 2003-10-22
  • 打赏
  • 举报
回复
补充
如果SQL改为
sSql:= 'select Max(XL_ID) from '+
' T_SD_SB_GTXL ';
正确执行

如果为 sSql:='select Max(EID) from TEGIS.TEGIS_POINTS ' ;
即出现同样的错误

语句本身是没有错误的

为什么会这样?
haifengs 2003-10-22
  • 打赏
  • 举报
回复
不行
如果那么简单就好了
我怀疑是控件本身的BUG
但说不出个所以然来
2001Wind 2003-10-22
  • 打赏
  • 举报
回复
sTotalJD:=DataSet.Fields[0].asstring; 是取Count的值吧?
应该是这样:
sTotalJD:=DataSet.Fields[0].asInteger;

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧