我现在这么弄得
添加一个计算字段id
然后再query1的onCalcFields事件里加
query1.fieldbyname('bh').asinteger:=query1.recno+1
就可以了]
我就是这么弄得,但是,在dbgrid里显示的结果全是0,怎么回事

解决方案 »

  1.   

    RecNo对本地库,如dbf可正确表示记录序号,其他库表可能无法表示,所以为0,统计记录数很简单:select count(*) from xxxx
      

  2.   

    那我因该怎么办,怎样在dbgrid最左边加一列,显示序号!
      

  3.   

    首先双击DbGird在最右边增加一个新的字段Column
    DBGrid1DrawColumnCell事件中
    if Column.Index = 0 then
        with DBGrid1.Canvas do
        begin
          FillRect(Rect);
          if DBGrid1.DataSource.DataSet.RecNo <> -1 then
            TextOut(Rect.Left + 2, Rect.Top + 2, IntToStr(DBGrid1.DataSource.DataSet.RecNo));
        end;
      

  4.   

    那用对这个最右边增加一个新的字段Column做什么设置吗
    我按照你的作了,可是没有什么显示
      

  5.   

    统计记录:var 
    begin
    m:integer;
    m:=Adoquery1.recordcount;end;
    j就能统计出记录数了;
    query1.recno好象应该有个初始值,比如,query2.recno:=0设为初始值
      

  6.   

    感覺  angle097113(深思不解) 的代碼已經可以了, 建議你再看看!!
      

  7.   

    在SQL語句中修改一下
    SELECT ROWNUM,X1,X2,.... FROM TABLE WHERE ....
    ROWNUM就是序號了,可以在DBGIRD的屬性中設置這個欄位的顯示出來是'ID'
      

  8.   

    我以前用的笨办法
    select '  'id ,a,b... from xx
    for i:=1 to query1.recordcount do
    begin
      Query1.fieldbyname('id').asstring:=inttostr(i);
      Query1.next
    end;