关于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楼:你是否测试过了呢? 展开
源代码如下
//查找上次查询最大日期
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楼:你是否测试过了呢? 展开
4个回答
展开全部
是不是类型不匹配
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用max来进行计算时,数据库会自动返回一条记录,无论是否存在数据内容。当没有数据内容时,返回值为NULL。因此,如果需要采用max计算,最好判断数据是否为nil,然后再进行内容判断。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把ADODATASET指向你要读取数据的那条记录!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询