在MS ACCESS中使用自动增量值填充数字字段

时间:2015-09-21 14:39:29

标签: sql ms-access ms-access-2007 ms-access-2000

我有一个具有以下结构的访问表:

INO   IDATE      NAME ADDRESS CITY PHONE CONTACT & Other Fields.....
1430  01-Apr-15 
1431 01-Apr-15 
1432 01-Apr-15 
1435 01-Apr-15 
1436 01-Apr-15 
1440 01-Apr-15 
1441 01-Apr-15 
1448 01-Apr-15 
1450 01-Apr-15 
1455 02-Apr-15 
1456 02-Apr-15 
1459 02-Apr-15 

字段“INO”设置为数据类型“NUMBER”字段大小:双重索引=是

此字段是以编程方式自动增量,但在删除一些无用的&取消了数据库中的记录INO。系列不合适。我想重新生成数字&填补已删除号码的空白。 即INO 1435应为1433,1436至1434,1440至1435&等等。

选择我用来过滤表中记录的语句:

SELECT *
FROM IDETAIL
WHERE TYPE=True AND INO>=1430 ORDER BY INO;

到1430年之前,有1430条记录存在差距。日期为01年4月1日至15日。 表中有大约18,000条记录,因此不容易手动更正记录。如何使用SQL或任何其他命令更正此问题。

P.S。 :没有相关的表或条目。我们只想保留用于会计目的的条目序列。

就像我们使用“Do While”功能一样。 开始输入INo是正确且已知的。所有条目都以循环编号,从第一个记录INo = 1430开始,下一个记录INO = 1430 + 1,下一个1430 + 2直到最后一个条目。如何在UPDATE查询中实现相同的“WHERE TYPE = True”。

3 个答案:

答案 0 :(得分:1)

如果此表中未引用任何表,您可以使用以下查询: -

UPDATE YourTable
SET INO = DCount('*', 'YourTable', 'INO <= ' & INO)

希望这有帮助

答案 1 :(得分:1)

如果在表中插入新的自动编号字段,它应该为行生成一组新的ID。然后,如果需要,可以将现有字段更新为新ID值并删除自动编号字段。

答案 2 :(得分:1)

在这里使用和改进@Ankit Bajpai的好答案可能就是你需要的:

UPDATE (SELECT * FROM IDETAIL WHERE TYPE=True AND INO>=1430 ORDER BY INO) 
SET INO = DCount('*', 'IDETAIL ', 'INO <=' & INO & ' AND INO >= 1430  AND Type = True') + 1429

请注意,如果INO已编入索引且没有重复, 它可能会在记录集Type = false

中创建错误