你用adoquery1.RecNo不就可以了吗,为什么要加行号。

解决方案 »

  1.   

    添加计算字段id 
    ADOQuery1.FieldByName('id').AsInteger:= DBGrid1.DataSource.DataSet.RecNo;
    不过中间可能出现 -1的现象
    疑问中?
      

  2.   

    新增一个字段,对它赋空值,然后在dbgrid的重绘事件中自己根据dateset.recno对此字段赋值,
      

  3.   

    我的理解是不是让我对数据库进行修改?但是现在改库对我来说不是很现实的事情,一改的话要改的地方就太多了,我想问在dbgrid上动手脚有可能吗?
      

  4.   

    可以在TADOQuery的sql第一列加入identity字段啊
      

  5.   

    蹈火者,能不能详细说一下怎么做,或者SQL语句怎么写,我鲁钝了,不好意思。
      

  6.   

    我是这样加的,用两个TABLE控件,一个有过滤,另一个全部,当添加时,把全部这个控件的数量加1不就可以了
      

  7.   

    晕,看不懂,而且我希望是在DBGrid上作ADOQuery,因为涉及到多表联查的问题,Table不能满足要求。
      

  8.   

    在ADOQuery1控件鼠标右击,在fields editer中 添加 all fields
    这时你的ADOQuery的所有字段都显示出来了
    这是在添加new field
    例如:number字段
    然后在ADOQuery1控件的onCalcFields事件中加入你的代码
    使new的值满足你的要求
         DataModule1.ADOQuery1.Fieldsbyname[number].value:=DataModule1.ADOQuery1.recno;这时你要运行程序,你的number字段已经自动添加到了DBGrid中的最后一列。
    如果希望number在第一列,可以更改dbgrid中number的顺序为第一位,也可以回头在上面的fields editer中,将number的顺序改为第一位。
      

  9.   

    多谢,我早上没有注意到新添加的字段类型为Calculated,我做成Data了,无论如何都不成功,多谢多谢,还有一个问题,第一个为什么是-1?
      

  10.   

    添加计算字段id 
    ADOQuery1.FieldByName('id').AsInteger:= DBGrid1.DataSource.DataSet.RecNo;
    不过中间可能出现 -1的现象
    疑问中?
    试试下面这个:
    ADOQuery1.FieldByName('id').AsInteger:= ABS(DBGrid1.DataSource.DataSet.RecNo);