显示返回数据集的问题!
我用adoquery 查找表yt 中no=1 的数据
adoquery1。sql。strings[0]:='select * from yt where no=1'
if adoquery1.recondcont>0 then
edit1.text:=adofieldbyname('ino_id').asstring;
可是如果返回的记录多于一条,例如返回:no ino_id ss
1 t tit
1 f dff
那edit1.text不会有值,有什么方法可以让edit1.text 为第一条记录的ino_id 也就是 t
如果加一个edit2.text 把第二条记录的ino_id 也就是 f赋值给它
有什么方法可以实现啊?
请大侠指教!
问题点数:50、回复次数:9Top
1 楼huawei55(新用户)回复于 2005-06-02 00:56:03 得分 0
只有一条是可以的,但一多就不行了,有办法解决么?Top
2 楼JetJack(喷气引擎)回复于 2005-06-02 08:36:40 得分 20
可不可以这样;
adoquery1.open;
if not adoquery1.isempty then begin
adoquery1.first;
edit1.text:=adofieldbyname('ino_id').asstring;
adoquery1.next;
if not adoquery1.eof then
edit1.text:=adofieldbyname('ino_id').asstring;
end;Top
3 楼hellolongbin(一个人(自从扩充话题改版,再也不去灌水乐园了))回复于 2005-06-02 08:50:01 得分 10
用adoquery1.first读取第一条记录,next读取下一条记录
另外你加载sql语句的写法不大规范,最好用
adoquery1.sql.clear;
adoquery1.sql.add('select * from yt where no=1');
Top
4 楼zjh527()回复于 2005-06-02 09:02:52 得分 10
同意楼上的。要么你在加个Button
procedure TForm1.Button1Click(Sender: TObject);
begin
if not adoquery1.eof then
begin
adoquery1.next;
edit1.text:=adoquery1.fieldbyname('ino_id').asstring;
end
else
begin
adoquery1.first;
edit1.text:=adoquery1.fieldbyname('ino_id').asstring;
end;
end;Top
5 楼dashi111(sally)回复于 2005-06-02 09:06:38 得分 10
if adoquery1.recondcont>0 then
adoquery1.first;
edit1.text:=adofieldbyname('ino_id').asstring;
edit1里面就为第一条的ino_id的值了
if adoquery1.recondcont>0 then
当执行完这条语句的时候,遍历了所有的记录后,指针指向最后一条记录的下一条,即指向了空纪录,所以取不到值,edit1
的值就为空,Top
6 楼liu23xing(编程小猫1000号)回复于 2005-06-02 09:16:59 得分 0
adoquery1.first;
while not adoquery1.eof do
begin
edit1.text:=adofieldbyname('ino_id').asstring;
adoquery1.next;
end;
edit2.text:=adofieldbyname('ino_id').asstring;Top
7 楼huawei55(新用户)回复于 2005-06-02 10:08:54 得分 0
谢谢大家的解答,如果返回的不止2条,有5,6条呢?
可以么?Top
8 楼JetJack(喷气引擎)回复于 2005-06-02 11:16:48 得分 0
如果记录数多的话还是用DBGrid控件好Top
9 楼huawei55(新用户)回复于 2005-06-02 11:52:41 得分 0
我已经解决了
谢谢大家!Top




