如果执行以下代码:
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 ; 的语句吗?
为什么返回的结果集,有问题?
请指教
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 ; 的语句吗?
为什么返回的结果集,有问题?
请指教
解决方案 »
- DataMoule中引用MainForm的一个控件,是在DataMouleUnit的uses后面加上:MainFormUnit吗?
- 关于Quickreport只能打印出第一条记录的问题.
- Rave报表中的页码如何实现?
- 自动打开菜单项
- 我测试一个窗体句柄,得出结果,所有的控件都和窗体是同一个号,何解
- 请帮忙!!!这个两个字符串到底应该怎么转换????
- 进来者就是风流倜傥,英俊潇洒,才高八斗,貌似藩安,号称一朵梨花压海棠,送绰号上天下
- 过年送大礼!大散分!!
- 100分送上: 谁能把OICQ 做成控件
- 请问高手:读取数据表中的数字型字段,动态的来设置timer控件的interval属性,并用table1.moveby()自动显示"该"数据表中的数据条目,该怎么作?
- 用Delphi8的同志们可要小心?
- 如何在while循环中做其他的操作,急!
如果SQL改为
sSql:= 'select Max(XL_ID) from '+
' T_SD_SB_GTXL ';
正确执行如果为 sSql:='select Max(EID) from TEGIS.TEGIS_POINTS ' ;
即出现同样的错误语句本身是没有错误的为什么会这样?
' T_SD_SB_GTXL where XL_ID='''+sXLID+''' ';试试
应该是这样:
sTotalJD:=DataSet.Fields[0].asInteger;
如果那么简单就好了
我怀疑是控件本身的BUG
但说不出个所以然来
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是什么?