0

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

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 1435 应该是 1433、1436 到 1434、1440 到 1435 等等。

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

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

直到 1430 条记录有序,在 1430 年和 2015 年 4 月 1 日之后存在差距。表中有大约 18,000 条记录,因此不容易手动更正记录。我如何使用 SQL 或任何其他命令更正此问题。

PS:没有相关的表或条目受到影响。我们只是想维护条目的顺序以用于会计目的。

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

4

3 回答 3

1

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

于 2015-09-21T16:56:14.113 回答
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

于 2015-09-21T22:21:24.377 回答
1

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

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

希望这可以帮助

于 2015-09-21T14:57:16.580 回答