如何在dbgrid里显示记录号?(10分)

  • 主题发起人 主题发起人 Angel.wcx
  • 开始时间 开始时间
A

Angel.wcx

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在dbgrid里显示记录号?
我用dbgrid显示sql查询库信息,想在每条记录前加序号,请问怎么实现?
问题很简单,可是我却不知如何解决。
 
看看我的办法。

1。在table 或者 tquery 里面添加一个计算字段,比如:bh,类型 int
2.添加这个字段的事件 OnGetText,
代码为
begin
text:= IntToStr(Table1.RecNo);
end;
这就行了。这个编号和你的索引有关系。

别告诉我你看不懂。
 
to puzzle
我试过了,可是不行呀!
什么叫与索引有关?TQuery怎么建索引?我在库表里建了索引也不行。
 
Table1.RecNo的sql数据库(如oracle)永远是0

下面贴一段郭镇松老弟的代码(来获得recno):
>>to jqw :
>> 我知道 recno 在sql数据库中不对,但也可以自己去做这个属性的。
用 moveby 来实现,比如,得到当前记录行:
oldrec := table1.moveby(-maxint);
table1.moveby(oldrec);
这样表的记录指针不变,oldrec就是对应的recno值了。
再如设置recno值:
table1.first;
table1.moveby(rec); // rec为需要设置的行号。

 
给表建个索引,然后在DBGRID中加个字段
 
我是在local 用的本地数据库的recno是dbe返回的,本地的TTable 和 TQuery 都可以。
你使用的远程数据库吧。那这个方法就没戏了。应为recno 不支持他。
jqw 的方法是个办法,但是如果数据库很大,比如我们公司几百万的纪录,这个办法就是杀人的啦--慢死了。
你从游标上想想办法。或者修改一下 DBGrid.

 
to jqw:
不好意思,我不是很明白,能说的更详细些吗?
 
如果仅仅是显示序号,我建议你使用STRINGGRID来显示数据。
你可以在程序控制每写一条记录时将自己显示序号的列的值自动加1
当然麻烦点,只是要自己控制而已。如果仅仅显示一个数据结果我不太喜欢DBGRID
 
Angel.wcx:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
多人接受答案了。
 
后退
顶部