dbgird问题(30分)

  • 主题发起人 主题发起人 hfutzhu
  • 开始时间 开始时间
H

hfutzhu

Unregistered / Unconfirmed
GUEST, unregistred user!
把数据库里的数据显示在gbgird上,adocon/adoquery/datasourse/dbgrid是这么连的,
在dbgird上加了一列,显示序号,该怎么办???
 
在adoquery中的sql语句加一列名
 
是这么连的,一般很少加一个显示序号的,不过如果加也可以,可以在ADOQuery中加一个计算字段,用于显示。。。。
 
用adocon/adoquery/datasource/dbgrid的组合从数据库读数据,在DBGRID最前面一列加一列序号,在adoquery的CalcFields中写:adoquery.FieldByName('num').asinteger:=adoquery.RecNo;
if adoquery.bof then
adoquery.FieldByName('num').asinteger :=1;
在dbgrid的最后一个数也变成1了,这该怎么办???
 
最后一个数给值为ADOQuery.RecordCount不就行了嘛。。。
 
不行啊 这样的话,第一个也变成RecordCount了 很郁闷,好像头尾分不清了!
 
新增一个caculated字段id,integer;

在oncaculate事件中
with query1 do

filedbyname('id').asinteger:=recno
然后将id显示在grid最左边
 
用临时表的方法!
 
SQL语句 创建临时字段 RRECNO 并保存创建临时表 TEMP01
select top 10 0 as Rrecno ,rname,rtel into temp01
from LinkEyeeInfo
select * from temp01 drop table temp01
事件:
procedure TForm1.FormShow(Sender: TObject);
begin
self.ADOQuery1.First;
while not self.ADOQuery1.Eofdo
begin
self.ADOQuery1.Edit;
self.ADOQuery1.FieldByName('RRecno').AsInteger := Self.ADOQuery1.RecNo;
self.ADOQuery1.Post;
self.ADOQuery1.Next;
end;

end;
 
就用计算字段就行了
 
后退
顶部