访问表中的最大记录

时间:2018-02-13 10:36:55

标签: ms-access database-design autonumber

我最近遇到了在我的表中达到最大记录数量的问题,大约在32567左右。我在尝试访问记录时出现溢出错误。我想出了它是如何发生的,因为我在表中只有大约2000个实际记录。这是自动编号Id达到32567。

这是因为我使用了两个表。文件和档案。每天都会在文档中填写硬盘上文件夹中的所有文件。然后将其与表Archive进行比较,并从Documents表中删除所有双记录。之后,新文件将添加到Archive表中,Documents表将再次清空。

然而,来自Documents的所有已删除记录都使用了自动编号,这使得它快速增加。我该怎么做才能防止这种情况发生?

此致 马可

3 个答案:

答案 0 :(得分:2)

Autonumber和#records都不限于32567(2 ^ 15 - 1)。

您可能将Archive中的ID列定义为Integer(16位)而不是Long(32位)。

将其更改为Long,您将有很长的路要走。 :)

答案 1 :(得分:0)

只需确保您的自动编号字段设置为长整数

据我所知,表中没有最大行数。但是,整数字段的最大大小为32,767,表的最大大小为2GB。请注意,这也是数据库的最大值,因此系统对象会提前达到限制。

长整数的限制为9,223,372,036,854,775,807(短整数为32,767)。这应该给你很大的空间。

如果由于经常删除并重新填充表格而导致您不够,则可以在清空时重置计数器。但如果你没有完全清空桌子,那可能很难。

答案 2 :(得分:0)

根据您的描述,您似乎使用[Documents]作为临时表。你可以扩展

  

“文件表再次清空。”

用于重新创建文档表,删除旧文档表。这将重置自动编号问题。

DoCmd.TransferDatabase acImport, "Microsoft Access", currentproject.Path & "\" & currentproject.Name,acTable,"Documents","DocumentsFresh",structureonly:=true

docmd.DeleteObject acTable,"Documents"
Docmd.rename "Documents", acTable, "DocumentsFresh"

另外要注意,如果您要转发document.autonumber身份,则不应遵循此流程。仅在需要临时表功能时才执行此操作。