为什么Max()不能取得最大值?

xfgncit98 2003-07-14 10:01:59
用adoquery连接oracle数据库是,表名为YKSQJB,里面有一字段为YWBH(业务编号),数据类型为varchar,在orlacle的sql plus 中执行select max(ywbh) as ywbh from yksqjb时,可以得到最大值,但是在delphi中,语句为:
adoquery1.Close;
adoquery1.SQL.Clear;
ADOQuery1.SQL.Add('Select Max(cdm) From YKSQJB');
ADOquery1.Open;
str := AdoQuery1.Fields[0].AsString ;
却得不到数据.
...全文
256 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gardenyang 2003-07-14
  • 打赏
  • 举报
回复
完全同意楼上的说法,你很有可能cdm这个字段出问题了,如果改成楼上的写法肯定没问题的,这个是标准sql语句,不会有问题的,还有必须使用open
things 2003-07-14
  • 打赏
  • 举报
回复
//有cdm字段吗?

adoquery1.Close;
adoquery1.SQL.Clear;
ADOQuery1.SQL.Add('select max(ywbh) as ywbh from yksqjb');
ADOquery1.Open;
str := AdoQuery1.Fields[0].AsString; //or AdoQuery1.FieldByName('ywbh').AsString;

firetoucher 2003-07-14
  • 打赏
  • 举报
回复
什么叫得不到数据?有错误信息么?
可能是你的cdm字段的问题,类型或者max为空
ps,就应该用open而不是execsql
WWWWA 2003-07-14
  • 打赏
  • 举报
回复
检查一下字段类型
wangxj333 2003-07-14
  • 打赏
  • 举报
回复
max(ywbh)
Max(cdm)
两个字段不同,得到的结果当然不同了。
嘿嘿
WWWWA 2003-07-14
  • 打赏
  • 举报
回复
ADOquery1.Open;改为ADOquery1.execsql;
suny_2001 2003-07-14
  • 打赏
  • 举报
回复
ADOQuery1.SQL.Add('Select Max(cdm) maxCdm From YKSQJB');

换成这个看看。

如果还是不行,那么把这个
str := AdoQuery1.Fields[0].AsString ;
换成
str := AdoQuery1.Fieldbyname('maxcdm').asstring;
xfgncit98 2003-07-14
  • 打赏
  • 举报
回复
是数据库表中没有数据,所以发生了错误,谢谢各位高手。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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