关于delphi中ADODataSet的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于delphi中ADODataSet的问题相关的知识,希望对你有一定的参考价值。
我用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楼:你是否测试过了呢?
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;
以上是关于关于delphi中ADODataSet的问题的主要内容,如果未能解决你的问题,请参考以下文章
delphi adodataset如何用如sql语句 增、删、改、查记录 类似于下面这样,但adodataset我不知道怎么弄
delphi中ADODataset.Append,某字段数据录入有错,我需要放弃本次新增的这条数据该怎么做?
delphi怎样在ADO里用ADOproc调用数据库sql server存储过程?,用ADODATASET或者ADOQUERY又怎样调用存储过程?