关于delphi中ADODataSet的问题 30

我用ADOdataset查找数据库并得到一个记录集,其中用recordcount得到是有一条记录,但是我在用filedvalues显示时却为null,这是怎么回事,而且在... 我用ADOdataset查找数据库并得到一个记录集,其中用recordcount得到是有一条记录,但是我在用filedvalues显示时却为null,这是怎么回事,而且在sql查询分析器中也是有记录的
源代码如下
//查找上次查询最大日期
sql1:='select max(otime) as maxdate from amnet_total where userid='''+cardcode+'''';
showmessage(sql1);
ADODataSet1.Active:=false;
ADODataSet1.CommandText:=sql1;
ADODataSet1.Active:=true;
k:=ADODataSet1.RecordCount;

//showmessage(maxdate);
//如果查询结果不为空
if (k=0) then
maxdate:='2010-04-01'
//如果查询结果为空
else
begin
maxdate:=ADODataset1.Fieldvalues['maxdate'];
end;
showmessage(maxdate);
回一楼:
不是,最奇怪的就是在数据库能查到,记录数也是1,但是就是得到的结果是null
回2楼:
但是我数据库得到的是一个具体的日期啊,但是为什么用dataset不能得到
回3楼:
dataset不是只有一条数据的时候就直接使用就行吗?

最后补充下,我用adoquery查询数据库就成功了不知道为什么? 我的代码原来用的是if adodataset.fieldvalues['otime']<>null then
期间出现的错误时不能将null转为string所以又改为adodataset。filedbyname('otime').isnull虽然判断是否为空的解决了,但是还是出现了上面我说的内容,有没有高手顺便解释下delphi的null处理时怎么回事?
回4楼:你是否测试过了呢?
展开
 我来答
keyiwenwo
2010-05-14 · TA获得超过8871个赞
知道小有建树答主
回答量:993
采纳率:100%
帮助的人:1051万
展开全部
是不是类型不匹配
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
青城山道士
2010-05-14 · TA获得超过126个赞
知道小有建树答主
回答量:190
采纳率:66%
帮助的人:118万
展开全部
使用max来进行计算时,数据库会自动返回一条记录,无论是否存在数据内容。当没有数据内容时,返回值为NULL。因此,如果需要采用max计算,最好判断数据是否为nil,然后再进行内容判断。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
注册ID太难
2010-05-14 · 超过18用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:0
展开全部
把ADODATASET指向你要读取数据的那条记录!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ysjqrmpv
2010-05-15 · TA获得超过116个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:205万
展开全部
var
maxdate:string;
begin
sql1:='select max(otime) as maxdate from amnet_total where userid='''+cardcode+'''';
showmessage(sql1);
ADODataSet1.Active:=false;
ADODataSet1.CommandText:=sql1;
ADODataSet1.Active:=true;
k:=ADODataSet1.RecordCount;

//showmessage(maxdate);
//如果查询结果不为空
if (k<>0) then
maxdate:=ADODataset1.Fieldvalues('maxdate').asstring;
//如果查询结果为空
else
begin
maxdate:='2010-04-01'
end;
showmessage(maxdate);
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式