问一个 比较 菜的问题,关于 adoquery 的返回值的…… 在线等

大漠风沙落日 2010-11-12 01:28:39
try
form5.adoquery1.Close;
form5.adoquery1.SQL.Clear;
form5.adoquery1.SQL.Add('select students.number,students.name,gra.grade from students,gra');
form5.adoquery1.SQL.Add('where gradesetterNo='''+number+'''and students.number='''+gradenumber+'''');
form5.adoquery1.open;
finally;
end;
if form5.ADOQuery1.RecordCount>0 then
begin
label2.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[0].Value);
label4.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[1].Value);
end

请问为什么查询结果有多行数据时,使用这段代码的时候,label2.caption总是显示最后一条记录呢?

怎么做才能让 adoquery 逐条返回数据呢?

百思不得其解……

求指导……
...全文
75 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
大漠风沙落日 2010-11-12
  • 打赏
  • 举报
回复
貌似二楼是正解啊,呵呵……那会没有注意到,实在是抱歉,把分全部给你了……
大漠风沙落日 2010-11-12
  • 打赏
  • 举报
回复
自己搞定了,呵呵……用first 和next 就能实现从第一条 到最后一条逐条查询数据了,感谢各位的回答!
大漠风沙落日 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hys_427 的回复:]

引用楼主 wc281279102 的回复:
if form5.ADOQuery1.RecordCount>0 then
begin
label2.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[0].Value);
label4.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[1]……
[/Quote]

对不起,是我表达不清楚,我的意思不是这样的,比如说是查询的结果返回来的是两条记录。
001 name1 100
002 name2 100
使用adoquery1.recordset赋值的时候
label2 和 label4 只是显示最后一条记录
我是把下面的赋值语句写在按钮的clik中的,目的是想实现
点一下按钮 两个label会显示第一条记录的 number 和 name
再点一下 显示第二条记录
不好意思,是我没有表达清楚,能帮忙再回答一次么?
非常感谢!
Versus1008 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 taiguang 的回复:]
try
form5.adoquery1.Close;
form5.adoquery1.SQL.Clear;
form5.adoquery1.SQL.Add('select students.number,students.name,gra.grade from students,gra');
form5.adoquery1.SQL.Add('where gradesette……
[/Quote]

这个就行
youlostme 2010-11-12
  • 打赏
  • 举报
回复
if form5.ADOQuery1.RecordCount>0 then
begin
label2.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[0].Value);
label4.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[1].Value);
end

也可以改成:

while not form5.adoquery1.eof do
begin
label2.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[0].Value);
label4.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[1].Value);
sleep(10000);//停止10秒
form5.adoquery1.next;
end;
andylist 2010-11-12
  • 打赏
  • 举报
回复
用循环好像不行的,只会显示最后一条。
其实还不清楚你要什么效果。
shao113112 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 taiguang 的回复:]

try
form5.adoquery1.Close;
form5.adoquery1.SQL.Clear;
form5.adoquery1.SQL.Add('select students.number,students.name,gra.grade from students,gra');
form5.adoquery1.SQL.Add('where gradesett……
[/Quote]

+1
learning8899 2010-11-12
  • 打赏
  • 举报
回复
是的,用循环读数据记录
软件钢琴师 2010-11-12
  • 打赏
  • 举报
回复
try
form5.adoquery1.Close;
form5.adoquery1.SQL.Clear;
form5.adoquery1.SQL.Add('select students.number,students.name,gra.grade from students,gra');
form5.adoquery1.SQL.Add('where gradesetterNo='''+number+'''and students.number='''+gradenumber+'''');
form5.adoquery1.open;
finally;
end;
if form5.ADOQuery1.RecordCount>0 then
begin
form5.ADOQuery1.first;
while not form5.ADOQuery1.eof do
begin
label2.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[0].Value);
label4.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[1].Value);
sleep(10000)
form5.ADOQuery1.next;
end;
end

一条一条的显示给你看
喝口水 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 wc281279102 的回复:]
if form5.ADOQuery1.RecordCount>0 then
begin
label2.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[0].Value);
label4.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[1].Value);
end;
[/Quote]

改为:

var i:integer;
...
for i:=1 to form5.ADOQuery1.RecordCount do begin
label2.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[0].Value);
label4.Caption:=vartostr(form5.ADOQuery1.Recordset.Fields[1].Value);
showmessage('下一条记录');
form5.ADOQuery1.next;
end;

2,497

社区成员

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

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