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

文章翻译 文章翻译
文章编号: 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.Database
    Dim MyProperty As DAO.Property
    Dim propName As String, propVal As String, rplpropValue As String
    Dim propType As Integer, i As Integer
    Dim intCount As Integer
    
    On Error GoTo tagError
    
    Set MyDB = CurrentDb
    propName = "SubDataSheetName"
    propType = 10
    propVal = "[None]"
    rplpropValue = "[Auto]"
    intCount = 0
    
    For 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 If
    tagFromErrorHandling:
    Next i
    
    MyDB.Close
    
    If intCount > 0 Then
        MsgBox "The " & propName & " value for " & intCount & " non-system tables has been updated to " & propVal & "."
    End If
    
    Exit Sub
    
    tagError:
    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 tagFromErrorHandling
    Else
        MsgBox Err.Description & vbCrLf & vbCrLf & " in TurnOffSubDataSheets routine."
    End If
    End Sub
    
  5. 在立即窗口中键入下面的文本,然后按 ENTER 以运行该函数: 在很短的时间后如果已经没有更新的所有表您收到一个消息框,告诉您 SubDataSheetName 属性对于 <numberoftablesupdated>非系统表已都更新为
    TurnOffSubDataSheets
    						
    笔记[NONE]

更多信息

办公室 Access 2007,Access 2003,Access 2002 和 Access 2000 允许在子数据表中查看表中的相关的记录,此功能在 Access 97 中不可用。若要管理主体和相关表之间关系,系统需要额外的开销可能会增加响应时间,特别是当数据库有大量的链接表和大量的表与表之间的关系。

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

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

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

属性

文章编号: 275085 - 最后修改: 2007年3月29日 - 修订: 10.1
这篇文章中的信息适用于:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 标准版
关键字:?
kbmt kbbug kbperformance kbnofix KB275085 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 275085
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com