在 Access 中保存表时出现“定义的字段过多”错误
中等:需要基本的宏、编码和互操作性技能。
本文仅适用于 Microsoft Access 数据库 (.mdb) 。
症状
添加新字段或更改现有字段的属性后保存表时,会收到以下错误消息:
定义了过多字段。
此消息后跟:
保存期间遇到错误。 数据类型未更改。
即使表中定义了 255 个或更少的字段,也会收到这些消息。
注意 如果在基于字段过多的表的报表中添加或修改字段,也会收到此消息。
原因
Microsoft Access 用于跟踪表中字段数的内部列计数已达到 255,即使表中的字段数可能少于 255 个。 发生这种情况的原因是,当您删除字段时,Access 不会更改内部列计数。 Access 还会创建一个新字段, (修改其属性的每个字段的内部列计数增加 1) 。
解决方案
若要释放已删除字段或修改其属性的字段的内部列计数,请执行下列操作之一:
压缩数据库。 为此,请在“工具”菜单上指向“数据库实用工具”,然后单击“ 压缩和修复数据库”。
创建表的新副本。 为此,请执行以下步骤:
- 记下与表的任何关系。
- 选择表。
- 在“文件”菜单上,单击“另存为”。
- 在“保存表'表名称'到”框中,键入新名称,然后单击“确定”。
- 选择步骤 2 中选择的同一表,然后按 DELETE。
- 将步骤 3 中保存的表重命名为原始表名称。
- 重新建立与新表的任何关系。
更多信息
在 Access 中,一个表中最多可以定义 255 个字段。 如果创建 255 个字段,然后删除 10 个字段,Access 不会从内部列计数中释放字段。 此外,对于您修改其属性的每个字段,Access 会创建一个新字段,并且不会从内部列计数中释放原始字段。
重现行为的步骤
注意
本文中的示例代码使用 Microsoft 数据访问对象。 若要正确运行此代码,必须引用 Microsoft DAO 3.6 对象库。 为此,请在 Visual Basic 编辑器的“工具”菜单上单击“引用”,并确保选中“Microsoft DAO 3.6 对象库检查”框。
- 创建以下Visual Basic for Applications代码以创建包含 255 个字段的新表:
' ****************************************************************
' Declarations section of the module
' ****************************************************************
Option Compare Database
Option Explicit
' ****************************************************************
' The Fill_Table() function creates a table in the current database
' named Field Test with 255 fields, each of which has a Text data
' type and a size of one character.
' ****************************************************************
Function Fill_Table()
Dim mydb As DAO.Database
Dim tbl As DAO.TableDef
Dim fld As DAO.Field
Dim i As Integer
Set mydb = CurrentDb()
Set tbl = mydb.CreateTableDef("Field Test")
For i = 0 To 254
Set fld = tbl.CreateField("Field" & CStr(i + 1))
fld.Type = dbText
fld.Size = 1
tbl.Fields.Append fld
Next i
mydb.TableDefs.Append tbl
End Function
在“即时”窗口中键入以下行以运行函数并创建表:
Fill_Table
在“设计”视图中查看“字段测试”表,然后删除最后一个字段,以便表中只定义了 254 个字段。
再次添加字段,并尝试保存表。 请注意,你会收到以下错误消息:
Too many fields defined. Errors were encountered during the save operation. Fields were not added. Properties were not updated.
References
有关数据库规范的详细信息,请单击“帮助”菜单上的“Microsoft Access 帮助”,在“Office 助手”或“答案向导”中键入“Access 规范”,然后单击“搜索”查看返回的主题。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈