怎么动态的给表加序号列?

xusun 2002-10-04 02:50:15
怎么动态的给表加序号列?
我用adoquery连接dbgrid显示一帐表的数据:例如我有10行数据,我想添加一个序号列(当任意删除dbgrid一行数据时,最后一行数据序号从10变9),此列在真实的数据库表中不存在。
我试着在adoquery控件中添加了一个计算列,但不知道怎么写语句,实现序号功能,请高手指点。
...全文
155 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnsuyong 2002-10-04
  • 打赏
  • 举报
回复
{如下方法可以解决你的问题,
尽管删除记录后重置编号显得有些拙劣。}

var
FID: Integer = -1;

procedure TForm1.Query1CalcFields(DataSet: TDataSet);
begin
{ROWNUM是一个计算字段,数据类型为Integer}
if VarIsNULL(Query1.FieldByName('ROWNUM').AsVariant) then begin
INC(FID);
Query1.FieldByName('ROWNUM').AsInteger := FID;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
{在此处执行删除记录的操作}
Query1.Close;
Query1.Open;
end;

procedure TForm1.Query1BeforeOpen(DataSet: TDataSet);
begin
FID := -1;
end;
cnsuyong 2002-10-04
  • 打赏
  • 举报
回复
记错了,是ROWNUM而不是ROWID:
SELECT ROWNUM, NAME FROM TEST1;
cnsuyong 2002-10-04
  • 打赏
  • 举报
回复
如果你用的是ORACLE数据库,那么在查询时直接附加一个ROWID列即可。
chenypluck 2002-10-04
  • 打赏
  • 举报
回复
关注

5,387

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧