你目前正处于脱机状态,正在等待 Internet 重新连接

在 Access 2002 中、 在 Office Access 2003 中,和在 Office 2007 中的链接表上的性能降低

针对 Office 2003 的支持已终止

Microsoft 已于 2014 年 4 月 8 日终止了针对 Office 2003 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 275085
为这篇文章的一个 Microsoft Access 2000 版本,请参阅 261000
初级用户: 要求用户界面的单用户计算机上的知识。

本文只适用于 Microsoft Access 数据库 (.mdb)。

症状
如果在 Microsoft Office Access 2003 中的 Microsoft Access 2002 中打开链接的表。 或者在 Microsoft Office Access 2007 可显示子数据表中的相关的记录,该过程需要会明显长于当在 Microsoft Access 97 中使用相同的数据库。
原因
如果有多个链接的表还包含许多的关系数据库中会出现这种情况,要打开的表中的其 子数据表名称 属性设置为 [自动]
解决方案
要变通解决此问题,请将表的 子数据表名称 属性设置为 [无]。可以手动或通过使用代码来执行此操作。

手动设置子数据表名称属性

若要将 子数据表名称 属性设置为手动,请按照下列步骤操作。

注意这些步骤只适用于 Access 2002 中。
  1. 在后端数据库中打开设计视图中的表。
  2. 视图 菜单上单击 属性
  3. 子数据表名称 属性设置为 [NONE]
  4. 保存并关闭表。

通过使用代码设置的所有表的子数据表名称属性

使用应用程序功能的 Visual Basic,可以自动设置为 [NONE] 的数据库中的非系统的所有表的 子数据表名称 属性。这样做,请按照下列步骤操作:
  1. 打开后端数据库。
  2. 在数据库窗口上单击 模块,然后单击 新建
  3. 工具 菜单上单击 引用。请确保该 Microsoft DAO 3.6 对象库 复选框处于选中状态,然后单击 确定
  4. 键入或粘贴到新模块下面的代码
    Sub TurnOffSubDataSheets()Dim MyDB As DAO.DatabaseDim MyProperty As DAO.PropertyDim propName As String, propVal As String, rplpropValue As StringDim propType As Integer, i As IntegerDim intCount As IntegerOn Error GoTo tagErrorSet MyDB = CurrentDbpropName = "SubDataSheetName"propType = 10propVal = "[None]"rplpropValue = "[Auto]"intCount = 0For i = 0 To MyDB.TableDefs.Count - 1    If (MyDB.TableDefs(i).Attributes And dbSystemObject) = 0 Then        If MyDB.TableDefs(i).Properties(propName).Value = rplpropValue Then             MyDB.TableDefs(i).Properties(propName).Value = propVal             intCount = intCount + 1        End If    End IftagFromErrorHandling:Next iMyDB.CloseIf intCount > 0 Then    MsgBox "The " & propName & " value for " & intCount & " non-system tables has been updated to " & propVal & "."End IfExit SubtagError:If Err.Number = 3270 Then    Set MyProperty = MyDB.TableDefs(i).CreateProperty(propName)    MyProperty.Type = propType    MyProperty.Value = propVal    MyDB.TableDefs(i).Properties.Append MyProperty    intCount = intCount + 1    Resume tagFromErrorHandlingElse    MsgBox Err.Description & vbCrLf & vbCrLf & " in TurnOffSubDataSheets routine."End IfEnd Sub
  5. 在立即窗口中键入下面的文本,然后按 ENTER 以运行该函数: 在很短的时间后如果已经没有更新的所有表您收到一个消息框,告诉您 SubDataSheetName 属性对于 <numberoftablesupdated>非系统表已都更新为
    TurnOffSubDataSheets						
    笔记[NONE]
更多信息
办公室 Access 2007,Access 2003,Access 2002 和 Access 2000 允许在子数据表中查看表中的相关的记录,此功能在 Access 97 中不可用。若要管理主体和相关表之间关系,系统需要额外的开销可能会增加响应时间,特别是当数据库有大量的链接表和大量的表与表之间的关系。

主体表-一对多关系 ("一"侧的等式的表) 中可以有其 子数据表名称 属性设置为 [无] 在这种情况下不显示子数据表。也可以设置其 子数据表名称 属性,为某一特定的相关表的名称或 [自动]。如果该属性设置为 [自动],就能够选择您想要查看当您单击主表中的记录的 展开 指示符时其记录在相关的表。在属性设置为 [自动],这样可以减少性能明显,特别是在较旧的计算机上时该数据库使用大量的链接表。当同一个数据库中存在的所有表都时,则不会出现此现象。

由于出现此问题的原因是性能降低,因素 (如处理器速度和可用的系统资源可能会导致执行充分执行速度很慢,另一台计算机上的一台计算机上的数据库。

Microsoft 提供的编程示例只,用于说明不附带任何明示或暗示保证。这包括,但不限于对适销性或针对特定用途的适用性的暗示的担保。本文假定您熟悉演示了正在使用的编程语言以及用于创建和调试过程的工具。Microsoft 支持工程师可以帮助解释某个特定过程的功能,但他们不会修改这些示例以提供额外的功能或构建过程来满足您的具体要求。
prb 很长时间 ACC2007

警告:本文已自动翻译

属性

文章 ID:275085 - 上次审阅时间:03/29/2007 18:38:35 - 修订版本: 10.1

Microsoft Office Access 2007, Microsoft Office Access 2003, Microsoft Access 2002 标准版

  • kbmt kbbug kbperformance kbnofix KB275085 KbMtzh
反馈