三层求助!!!!!!!!!!!!(100分)

  • 主题发起人 主题发起人 yuol
  • 开始时间 开始时间
Y

yuol

Unregistered / Unconfirmed
GUEST, unregistred user!
我开发三层应用程序,使用'select count(*) as c1 from table'获取表的记录数,执行通过,但是要取出数据时报错。另据测试,sql中含有表达式的都出现同样情况,试问:这是程序设置出错还是这种方法本来就是不可行的?

编译环境:
delphi 7
oracle 8i
windows 2000

编码如下:
WebConnection1.open;
ClientDataSet1.close;
ClientDataSet1.commandtext:='select count(*) as c1 from table';
ClientDataSet1.open;
edit1.text:=ClientDataSet1.fieldbyname('c1').asstring;
ClientDataSet1.close;
WebConnection1.close;
运行错误:value of field 'c1' is out of range

补充:是不是与服务端TDataSetProvider控件的Options属性有关?我只设置poAllowMultiRecordUpdates和poAllowCommandText为True,还有什么要设置为true???
 
在edit1.text:=ClientDataSet1.fieldbyname('c1').asstring;前先
判断 ClientDataSet1的RecordCount,我怀疑是返回为空

或者
edit1.text:=ClientDataSet1.fields[0].asstring
 
没道理啊,如果没有记录,返回应该是0啊
 
试试ClientDataSet1.fieldbyname('c1')..asinteger
可能是你类型不匹配造成的。
 
你没有设置固定字段吧?
 
阿西喊佛,
这是不可能的,首先'count(*) as cl'后就是得到数值型的值了(你应该知道,这不是表字段,是sql生成的,用来统计表记录数),再说edit的text是字符型的啊,怎么可能用asinteger呢?
 

我以前也碰见过这种情况,用recordcount对付过去了
听听大伙怎么说
顶!
 
先Last;First一下再取數據。是不是表中有TEXT字段。
good luck! ^_^
 
你不就是要统计数码?
ClientDataSet1.commandtext:='select count(*) from table';
ClientDataSet1.open;
edit1.text:=ClientDataSet1.fieldbyname('column1').asstring;
 
to coolzew:
能说说为什么吗,这和text字段有关吗?
 
后退
顶部