我有一个具有以下结构的访问表:
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”。
答案 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
中创建错误