关于DBGRIDEH控件的一个问题,急!各位大虾帮帮忙.(50分)

  • 主题发起人 主题发起人 limao
  • 开始时间 开始时间
L

limao

Unregistered / Unconfirmed
GUEST, unregistred user!
我用DBgridEh控件显示一个数据库查询的结果集,我想在第一列显示自动生成的序号。
不知如何才能做到,或用什么其它方法可以实现。望各位多多指教。
 
用数据源的计算字段,具体如下:为数据源(TableName)加一个计算字段NO:Integer
在它的OnCaleFields中写
begin
No:=TableName.RecNo;
end;
就可以了。

 
版本2.0
用数据源的计算字段,具体如下:假设是一个表TTable,名字:TableName
为它创建一个计算字段 NO,类型Integer
在它的OnCaleFields中写
begin
No.Value:=TableName.RecNo;
end;
剩下的就是DBGrid的问题了。



 
如果数据库是SQL之类的RecNo好象没用。
 
我的结果集是用SQL查询产生的,不是一个表,还用其它方法吗?
 
同意教父.
应当用select count(*) from...先返回结果集的个数,
 
返回结果集个数后,如何在DBGRIDEH控件上产生1,2,...这样的序号呢?
DBGRIDEH是数据帮定的,我如何在第一列添加这些序号呢?
帮帮忙说的详细一些,拜托了!
 
我用ADOQuery+Access是可以的,但有时第一个序号会是-1!!!,加上ABS就好了。
 
to : 杜宝
我用的也是ADOQuery+Access 可否说的详细些。如何创建计算字段?
 
创建计算字段?双击ADOQuery,弹出field Edit,右键选New field...弹出对话框,
输入字段名NO,type 选Integer,选上Calculated,退出。再响应ADOQuery的OnCaleFields
事件中写
begin
No.Value:=ABS(TADOQUERY.RecNo);
end;
再在DBGrid中加入这个字段。你用的DBGridEn我没用过,但想来应该一样的。
这个方法原来用Delphi5企业版自带的ADO控件中没有问题,后来我升级了Delphi5 SP 1 和
Delphi5 ADO SP1后就出现了负值,加了ABS就可以了,不知道为什么。
如果有问题欢迎再讨论。
 
to: 杜宝
我的adoquery的sql是动态生成的,adoquery的field是否也需动态添加,如何添加?
谢谢!
 
不用,你只使用数据集的记录数,只用创建一个字段对象NO就可以了,设置同上,
它与SQL脚本无关。
 
to 杜宝
我刚试过了,我在adoquery中添加一个新字段,动态生成一个sql语句,给dbgrid动态添加
列时会出错,说新字段后的字段没有发现。
 
接受答案了.
 
后退
顶部