我做了一个数据库,里面有一个表,我用adotable和dbgrid控件和它建立了连接。表的结构如下:
序号 货号 现价 建立日期
1 090842 鸡蛋 2003-12-05
2 025361 面包 2003-12-31其中序号字段是用的identity类型,初始值为1(为主键)
我做了一个界面,通过DBGRID可以显示这些记录。用户可以“添加”、“修改”,“删除”,为了达到用户每添加修改一个记录,都能使dbgrid的当前记录停留在我操作的这条记录,我使用了这样的方法,因为序号字段记录了序号的顺序,而且又是主键,所以每次操作后,我就首先取得操作记录的序号值赋给seq变量,然后seq-1,接着写下面的代码
adotable1.first
adotable1.movtby(seq)
这样倒是可以实现我要的效果,但是如果曾经删除过记录后,因为identity是递增的,就会造成序号不连续,这样移动的位置就不准了,请高手们帮我想一个简明的解决方案。
序号 货号 现价 建立日期
1 090842 鸡蛋 2003-12-05
2 025361 面包 2003-12-31其中序号字段是用的identity类型,初始值为1(为主键)
我做了一个界面,通过DBGRID可以显示这些记录。用户可以“添加”、“修改”,“删除”,为了达到用户每添加修改一个记录,都能使dbgrid的当前记录停留在我操作的这条记录,我使用了这样的方法,因为序号字段记录了序号的顺序,而且又是主键,所以每次操作后,我就首先取得操作记录的序号值赋给seq变量,然后seq-1,接着写下面的代码
adotable1.first
adotable1.movtby(seq)
这样倒是可以实现我要的效果,但是如果曾经删除过记录后,因为identity是递增的,就会造成序号不连续,这样移动的位置就不准了,请高手们帮我想一个简明的解决方案。
idntity值不是41而是42
public
ROW:integer;
然后在DBGRID的DBGrid1CellClick
写如下
row:=ADOQUERY.RECNO//实时记住位置;
当你添加或删除或修时
加上一句ADOQUERY.RecNo:=ROW;
至于误差就自己搞+-一下就可以了.