文章编号: 128221 - 最后修改: 2007年1月19日 - 修订: 2.3

ACC:"太多的字段定义"保存表的错误信息

中等: 要求基本的宏、 编码,和互操作技能。

本页

展开全部 | 关闭全部

症状

当您保存表后添加新字段或更改现有域的属性时,您收到消息"太定义的许多字段,过程中遇到错误"消息后跟"保存。 数据类型都不更改。 即使有 255 个或更少在表中定义的字段,您会收到这些消息。

注意: 还收到此消息如果添加或修改报表基于具有太多的字段的表中的字段。

注意: 此错误消息生成 Microsoft Jet 数据库引擎 3.0 保留错误号 3190。

本文假设您熟悉 Visual Basic 应用程序的使用和创建使用编程的工具使用 Microsoft Access 提供的 Microsoft Access 应用程序。 应用程序的 Visual Basic 的详细信息,请参阅您构建应用程序与 Microsoft 访问手册的版本。

注意: 为应用程序的 Visual Basic 称为基本访问中 Microsoft Access 版本 1.x 和 2.0 版。 有关访问基本的详细信息请参考 Microsoft Access 1.x 版本中的"简介到编程"手动或 Microsoft Access 版本 2.0 中的"构建应用程序"手册

原因

Microsoft Access 将使用跟踪的表中的字段数内部列计数已达到 255,即使您可能有表中的少于 255 个字段。 因为 Microsoft Access 不会删除字段时更改内部列计数,可能会发生这种情况。 Microsoft Access 将为每个字段,修改其属性还创建一个新的字段 (由 1 增加内部列计数)。

解决方案

要释放内部列计数为已删除的字段或字段,修改其属性执行下列选项之一:
  • 在 Microsoft Access 7.0 或 97,单击另存为 / 导出文件菜单并保存不同的名称表。 然后删除原始表将重命名为原始的表名的新表。

    警告: 在版本 1.x 或 2.0 中的文件菜单上单击另存为复制表不记录的结构。 不要删除原始表,直到您可以使用追加查询来填充新的表。
  • 在 Microsoft Access 1.x 或 2.0,请单击文件菜单上的另存为并保存不同的名称表。 填充新表与来自原始表中的数据。 然后删除原始表将重命名为原始的表名的新表。

    您还可以通过压缩数据库释放内部列计数。

状态

此行为是设计使然。

更多信息

在 Microsoft Access 中,您可以定义一个表中的最多 255 个字段。 如果创建 255 个字段然后删除 10 Microsoft Access 将不会释放来自内部列计数字段。 此外,每个字段,修改其属性的 Microsoft Access 创建一个新的字段,并不释放内部列计数从原始字段。

重现行为的步骤

注意: 对于 Microsoft Access 1.x 版本,手动创建表与所有与文本的数据类型 255 个字段。 下面的代码的工作只为 Microsoft Access 2.0 及更高版本。
  1. 创建的应用程序代码与 255 个字段创建一个新表将以下 Visual Basic:
          ' ****************************************************************
          ' 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 Database
             Dim tbl As TableDef
             Dim fld As 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 = DB_TEXT
                fld.size = 1
                tbl.fields.Append fld
             Next i
             mydb.tabledefs.Append tbl
          End Function
    						
  2. 在调试窗口 (或 2.0 版中的立即窗口) 运行该函数并创建表中键入以下行:
    ? Fill_Table()
  3. 在设计视图中查看表字段测试和删除最后一个字段,以便仅有 254 表中定义的字段。
  4. 再次,添加字段并试图保存表。

    在 Microsoft Access 97 中,请参阅下面的错误消息:
    定义的字段太多。

    在保存期间遇到了错误操作。 无法添加字段。 属性未被更新。
    在 Microsoft Access 7.0,请参阅下面的错误消息:
    定义的字段太多

    无法添加字段。 属性未被更新。
    在 Microsoft Access 版本 1.x 和 2.0 版中, 看到以下内容:
    定义的字段太多

    在过程中遇到了错误保存。 数据类型未被更改。

参考

有关表规范的详细信息搜索帮助索引的 规范,或询问 Microsoft Access 97 Office 助手。

这篇文章中的信息适用于:
  • Microsoft Access 1.0 标准版
  • Microsoft Access 1.1 标准版
  • Microsoft Access 2.0 标准版
  • Microsoft Access 95 标准版
  • Microsoft Access 97 标准版
关键字:?
kbmt kberrmsg kbprb kbprogramming kbusage KB128221 KbMtzh
机器翻译机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 128221? (http://support.microsoft.com/kb/128221/en-us/ )
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
Retired KB Article不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。
 

文章翻译