奇怪的现象:value of field 'COUNT(*)' if out of range
如果执行以下代码:
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 ; 的语句吗?
为什么返回的结果集,有问题?
请指教