我通过SQL语句在一DBgrid里显示了有N条记录的数据,现希望在DBgrid里能另有一列显示其ID,
效果如下:
原DBgrid显示:
字段名1  字段名2  字段名3
 aa        bb       cc
 dd        ee       ff
 ……
 xx        yy       zz现欲DBgrid显示:
ID  字段名1  字段名2  字段名3
1    aa        bb       cc
2    dd        ee       ff
……
N    xx        yy       zz不知怎样实现,望各位大鸟帮忙,不甚感激!!
解决即给分!

解决方案 »

  1.   

    我的意思是不论其他字段的值怎样变化,都要有一列ID显示为ID:1 2 3 4……,即DBgrid不一定如上为:
    ID  字段名1  字段名2  字段名3
    1    aa        bb       cc
    2    dd        ee       ff
    ……
    N    xx        yy       zz也可为:
    ID  字段名1  字段名2  字段名3
    1    dd        ee       ff
    2    aa        bb       cc 
    ……
    N    xx        yy       zz如果在表里增加一个字段ID,其ID值就会跟其它字段的值一起出现,在DBgrid里就会显示如下:
    ID  字段名1  字段名2  字段名3
    2    dd        ee       ff
    1    aa        bb       cc 
    ……
    N    xx        yy       zz怎样才能不受其它字段值的影响,实现ID值从1到N顺排,即在DBgrid里专门增加一列用来显示其记录条数?望赐教,谢谢!
      

  2.   

    very thanks!英语比我还差,欣慰ing
      

  3.   

    假设在数据集为ADOQuery1,数据集中有个字段ID是integer 类型.可以
    利用数据集ADOQuery1的AfterOpen事件实现:
    procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet);
     var i:integer;
    begin
       adoquery1.First;
        i:=1;    while not adoquery1.Eof do
        begin
           adoquery1.Edit ;
           adoquery1.FieldByName('xh').AsInteger :=i;
           i:=i+1;
           adoquery1.Next;
        end;end;
      

  4.   

    加一个计算字段
    在它OnCalcFields事件中实现
      

  5.   

    添加一个临时字段,也可叫计算字段‘a’然后:procedure Tfrm_playrec.ADOQuery1CalcFields(DataSet: TDataSet);
    begin
    dataset.FieldByName('a').AsInteger:=dataset.RecNo+1 ;
    end;
    给分吧
      

  6.   

    补充一下,先加一个计算字段
    在Table的OnCalcFields事件中添加一行代码
    如AdoTable1ID.Value:=Adotable1.Recno();
      

  7.   

    用drawgrid ,它有故定行和列,把显示在故定列上即可.