这是我在大富翁的第二个贴子,请不要打击我!(50分)

  • 主题发起人 主题发起人 okzjq
  • 开始时间 开始时间
O

okzjq

Unregistered / Unconfirmed
GUEST, unregistred user!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1331189
这里我在大富翁的第一个贴子,只有一个朋友回了“有意思”,下面是我的问题:

用TADOQuery连接本地数据库,在ADOQuery中添加了一个calculated field,设置
 Query.FieldByName('NO').AsInteger:=Query.RecNo;
程序开始运行时,第一条记录显示-1,其余显示正确,当Query.Last时,最后一条记录
也是显示-1,其余显示正确。

后来我变一种方法:
Query.FieldByName('No').AsInteger:=abs(Query.RecNo);
if Query.Eof then
begin
Query.FieldByName('No').AsInteger:=Query.RecordCount;
end;

可当Query.first是,No的值却为Query.RecordCount!!!
请问怎样判断当前记录是最后一条记录?

 
i:=1;
query.open;
while not query.eof do
begin
query.fieldbyname('no').asinteger:=i;
inc(i);
query.next;
end;
 
Query.RecNo一般是不正确,这个属性最好不要用
如果Query.RecordCount有问题,可以query.last; Query.first;这样,一般Recordcount就正确了
Query.eof=true则是最后一条
query.bof=true则是第一条
Query.bof and query.eof 则结果集是空集
 
to 哈利波特:你和办法我试了,但也有问题!程序运行时,显示前面5条记录,序号为1--5,
但我执行 Query.Last后,最后几条记录的序号为6--10,即中间的记录没有分配到序号!!

to twos: Query.RecordCount没问题,Query.Last,Query.first,不是procedure嘛,能用来
判断当前记录是否为最后一条记录嘛?我上面的意思是说,上面程序运行后,当执行
query.first后,No字段却显示为记录的总数而不是一?



 
你的开发环境是什么,还有你的ADO的版本是什么?
 
在面向數據集的Database中, 記錄號是沒有什麼意義的.
 
你的意思我不懂
不过访问本地据库,直接使用BDE好了
我认为如果直接使用BDE,你说的问题应该不会有
如果要修改结果集,Query.RequestLive设为True,首先Edit,然后修改,然后post
 
我用Delphi6+access2000数据库,
 
我用win2K+Delphi6+access2000数据库,
 
First是到第一条记录之前,但显示的是第一条记录
Last正好相反,你看TDBNavigator的按钮就知道了,DELPHI也不知道当前记录是不是
第一条,只有向上滚到没有记录了才把First变灰!
 
顶楼的里面有一个错误,
当Eof为true时,record_no一定是-1,代表没有记录了,
同样Bof为true时也一样。
也就是说当Eof或Bof时,当前记录的指针已经指向了最后(或最前)一条记录
的后面(或前面),而不是最后一条记录,自然记录号就是-1了。
 
对,上面说的对,这里要明确数据集和游标的概念
 
只有当游标的位置是useclient时,record_no才有效
 
to CuteCat:
怎样判断游标的位置是否在UseClient呢?能否给些程序说明下,谢谢!
 
就是要序号是吧,再简单不过的代码,在D5下运行没问题
procedure TForm1.Query1CalcFields(DataSet: TDataSet);
begin
query1no.Value:= query1.RecNo;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
query1.close;
query1.open;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
query1.first;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
query1.last;
end;
 
你下一个问题的标题是:
"这是我在大富翁的第三个贴子,请不要打击我!"?
 
Access 2000 肯定不支持 RecNo 属性
 
Access 2000 肯定支持 RecNo 属性,但有时RecNo的值不对。
 
你并没有说明你的真正需求是什么,而是提出你实施你的方案时遇到的问题,
事实是应有另外的方案来解决你的问题,而你选择的方案根本就行不通;

正如CuteCat所说,RecNo和RecordCount只有当游标的位置是useclient时才有效;
说说你到底要做什么;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部