dbgrid中自动添加序号的问题(100分)

  • 主题发起人 主题发起人 iwantdown
  • 开始时间 开始时间
I

iwantdown

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是Adoquery连接Access
写的程序是:
procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
begin
if dataset.RecNo<0 then
begin
dataset.FieldByName('number').AsInteger:=1;
exit;
end;
dataset.FieldByName('number').AsInteger:=dataset.RecNo;
end;

序号是可以自动加了,但是会出现直接拉右侧控制条到底,最后一项也显示序号为1
 
其实简单应用,直接用自增字段就行了
 
楼上说的不行。
比如进销存的销售单号,是本销售号的序号,并不是表中自增字段显示的阿!
 
单号也是子增,不过不是从1开始而已,可以自己设置的
 
procedure TDataModule1.ADOQuery_MDBCalcFields(DataSet: TDataSet);
begin
DataSet.FieldByName('SeqNo').AsInteger := abs(DataSet.RecNo);
end;
我这样用,没一点问题
 
我是在dbgrid中显示
首先如果在数据库中设自增字段,当你重新排序或者删除记录后,序号就不是顺序排列了
如果是在别的地方添加,还请luyear帮忙解释清楚
bjaman:我不知道你用的什么控件,在哪里产生的TDataModule1.ADOQuery_MDBCalcFields
 
if DataSet.isempty then
exit;
ataSet.FieldByName('SeqNo').AsInteger := DataSet.RecNo;
 
DataSet有一个事件OnCalcFields,在在里边放bjaman兄的代码即可,
嗯,这个不错,我就喜欢这样用
 
高手们我都快疯了
“DataSet有一个事件OnCalcFields,在在里边放bjaman兄的代码即可,
嗯,这个不错,我就喜欢这样用 ”

哪个控件啊!!
我用的是delphi,用的是Adoquery,datasource,用的access数据库
 
自动添加序号我能解决,请注意需要解决的是
[red]序号是可以自动加了,但是会出现直接拉右侧控制条到底,最后一项和第一项显示的序号一样[/red]
例如,总共10行,一次屏幕显示到第7行,序号为
[green]1 [/green]2 3 4 5 6 7
需要下拉右边的控制条到底,就会显示
4 5 6 7 8 9 1
 
这个问题我也遇到过,也是没解决,关注
 
clientDataset 有一事件是'当增加新记录时'可以对field赋值
 
在DataSet的OnCalcFields事件中写下列代码,即可:
if DataSet.isempty then
exit;
if DataSet.RecNo > 0 then
DataSet.FieldByName('SeqNo').AsInteger := DataSet.RecNo
else
DataSet.FieldByName('SeqNo').AsInteger := DataSet.RecordCount;
SeqNo要是一个计算字段
不但可以解决序号问题,而且新增时显示也正常,拖动也正常
 
第一行跟最后一行都是空。。。。。。。。。。。
 
后退
顶部