怎么动态的给表加序号列?
我用adoquery连接dbgrid显示一帐表的数据:例如我有10行数据,我想添加一个序号列(当任意删除dbgrid一行数据时,最后一行数据序号从10变9),此列在真实的数据库表中不存在。
我试着在adoquery控件中添加了一个计算列,但不知道怎么写语句,实现序号功能,请高手指点。

解决方案 »

  1.   

    如果你用的是ORACLE数据库,那么在查询时直接附加一个ROWID列即可。
      

  2.   

    记错了,是ROWNUM而不是ROWID:
    SELECT ROWNUM, NAME FROM TEST1;
      

  3.   

    {如下方法可以解决你的问题,
     尽管删除记录后重置编号显得有些拙劣。}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;