ACCESS 自动编号不存在自动将缺号补上的功能,并非 ACCESS 功能不全,而是您的在使用方法上错误了
关于自动编号和压缩数据库
你必须理解,自动编号(长整型)的目的不是为了使记录号连续,其用途有2个
1、标识记录的唯一性
2、标识记录的生成顺序
基于上述原因,你想使用自动编号字段来表示连续的记录号本身这个思路就是错误的。
如何表示连续的记录号有以下几个办法:
1、再建立一个专门用来存放记录号的字段,比如 RecordNo
添加记录时可以用 MAX(recordNO)+1 的方法。
当要删除某条记录时,比如这条记录的recordNo=6,我们用
delete from table where recordNo=6
来做。这样就会产生空号,然后再用
update table set recordno=recordno-1 where recordno>6
即可
2、在表中不存放记录号的数据,用sql查询自动生成
select [id],a,b,c,(select count(*) from table table2 where table2.[id]<=table1.[id]) as recordno from table table1 order by [id]
其中 [id] 字段为自动编号字段