RecNo的用法让我迷惑.(100分)

  • 主题发起人 主题发起人 phipen
  • 开始时间 开始时间
P

phipen

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用的是sql server数据库,用Ttable控件.
当想用Table1.RecNo时返回当前的记录号时,一直反回-1
请问我该怎么做才能得到记录号.谢谢


 
关系型数据库一般不提供纪录号
 
和关系型数据库没什么关系,主要是现在的数据库系统都是面象数据集的了,而不是几年前的
DBASE,PRADOX,FOX等等是面向记录的,标准SQL的方向,都是处理数据集,RECNO过时了。
 
recno只能用于文件型数据库 dBase/FoxPro/Paradox 等,Access 好像都不行
 
SQL server是没有记录号的。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=692313
获得记录总笔数要用SQL count函数
 
道底是怎么回事?
我用adoQuery完全可以从Sql7和Acc2000的中得到某一个结果集的RecordCount,和RecNo。
你换种思路看看,注意到数据库的连接方式。
 
我对这个问题困惑的原因是ado支持recNo,BDE不支持,真是这样的。
我以前是用 vb的,所以开始用delphi时,用习惯用ado访问数据库,ado就支持recNO。
现在用不小心用了BDE,却发现不支持。船大难掉头了,现在已经有很多程序是用BDE写的了
要换控件工作量太大了。没有办法了。
我想实现的效果是,在滚动记录的时候显示当前记录是第几笔,如何实现呢?

 
我觉得应该是BUG,还是改用ado吧,或者该dbexpress
 
自己处理一下吧,先用SQL取得记录总数,并设置一变量,再选择所需要记录,当记录指针指向记录集中的第一条记录时,
该变量初如化为1,指针移动,变量也跟着变化。你看看这样行不行?
 
我也试过
是不能用recno 的
 
没提供。
思路:添加一计算字段表示序号,在Dataset的OnScroll之类的实践中写代码。
没试过,不过我想可以解决。
 
实践 -〉事件
 
简单,用TClientDateSet来打开即可(不要以为它只能用于远程)
 
donkey说的对。
 
是否有数据显示,没有数据是这样的
 
用ADO是可以的, BDE的关系型数据库的话可以用这种方法:
I := Table1.Moveby(Low(Integer));//移到首记录
Table1.Moveby(- I);//移回去

-I就是当前的记录号
 
先first,再RECNO ,ACCSESS下可以。
 
后退
顶部