设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

287603-ACC2002:在大数据库中保存对象比在早期版本中慢

1970-1-1 08:00| 发布者: 微软| 查看: 2738| 评论: 0

版权:微软
原文地址: http://support.microsoft.com/default.aspx?scid=kb;zh-cn;202479

建议阅读微软原文, 以保证是最新最准确的KB版本及最新更新!!

如果原文无法链接,可阅读下面转贴:

ACC2002:在大数据库中保存对象比在早期版本中慢

View products that this article applies to.
中级用户:要求具备基本宏、编码和互操作技能。

本文适用于 Microsoft Access 数据库 (.mdb) 和 Microsoft Access 项目 (.adp)。

有关本文的 Microsoft Access 2000 版本,请参见 246306。

症状

当您尝试保存对 Microsoft Access 对象所作的设计更改,而这些对象包含模块(窗体、报表、或标准模块)时,保存对象可能比在 Microsoft Access 95 或 97 中花的时间更长。特别是在包含大的 Visual Basic for Application (VBA) 项目的数据库中尤其如此。

更多信息

位于 Microsoft Access 内部的 Visual Basic 环境 (VBE) 指示 Access 如何在数据库内存储 VBA 项目。VBA 项目是标准和类模块(包括窗体和报表模块)、库引用,以及存储在 Microsoft Access 数据库 (MDB) 或项目 (ADP) 文件中的其他属性的集合。

VBE 要求所有宿主应用程序一次读取和写入整个 VBA 项目。由于 VBE 集成在 Access 2000 中,Access 保存模式遵循这一要求。在保存时,保存整个 VBA 项目,而不只是保存单个 模块。这意味着,如果数据库含有大的 VBA 项目,将花比较长的时间进行保存,因为要重写整个项目,而不只是您修改过的单个对象。这一模式与 Microsoft Access 95 和 97 中使用的保存模式不同。在那些版本中,VBA 项目中的项作为系统表内的单个行存储,且在保存时 Access 分别地保存每个 对象,然后将那些更改合并回数据库的 VBA 项目中。

当保存 VBA 项目时,有两种表示法。有规范表示法或文字表示法,以及编译表示法。VBA 项目的规范部分代表您在 VBE 内部的模块中看到的文本代码。项目的编译部分是当用户编译和保存项目时该代码的二进制存储。例如,在 Access MDB 和 ADP 文件中,项目的两个部分都存储在文件内部,而在 MDE 和 ADE 文件中,项目的规范部分被删除,只有编译部分存储在文件内部。

Microsoft Access 2002 保存模式比 Access 2000 保存模式有所改进。在 Access 2000 中,如果对模块进行编辑,并加以保存,项目的规范部分和编译部分都写入文件中,即使您不编译该项目。在 Access 2002 中,如果您不编译项目,则当保存时,只有规范部分写回,这样就使保存时间比 Access 2000 短。如果您编译项目并保存,项目的规范部分和编译部分都保存到文件中。

例如,假设 Access 文件内的 VBA 项目的大小是 10 兆字节 (MB),您对一个 100 千字节 (KB) 的模块作了一行代码更改。在保存期间,Microsoft Access 95 和 97 只需将那个模块写回,意思是,需要将 100 KB 的数据写回该文件。在 Microsoft Access 2000 中,相同的操作将迫使将整个 10 MB VBA 项目重新写入该文件。在 Microsoft Access 2002 中,相同的操作将只把一个模块写回到该文件,除非您首先编译了该项目,这样做将迫使将整个项目重新写入。

除了其他 Visual Basic 环境宿主应用程序提供的一致性外,这种项目存储模式还有其他优势:
  • 消除了对 Microsoft Jet 数据库引擎的依赖。
  • 改善了 Access 特定对象的稳定性。

消除了对 Microsoft Jet 数据库引擎的依赖。



在 Microsoft Access 2002 中,可以创建 Microsoft Access 项目文件 (.adp) 以及 Microsoft Jet 数据库文件 (.mdb)。通过使用 Access 项目文件,可以将 Microsoft SQL Server 用作 Microsoft Jet 的备用数据库引擎。在 Access 2000 之前,所有 Access 特定的对象(窗体、报表、宏、模块和命令栏)都依靠 Microsoft Jet 数据库引擎进行存储。这些对象过去存储在 Microsoft Jet 数据库内 Access 特定的系统表中。由于 Microsoft Access 2002 可以使用 Microsoft SQL Server 作为 Microsoft Jet 备用引擎,因此,Microsoft 为 Access 特定的对象开发了一种存储机制,该机制不依赖于 Microsoft Jet。

改善了 Access 特定对象的稳定性



Access 2002 中的项目存储模式改善了 Access 特定对象和 Visual Basic 项目的稳定性。Visual Basic for Applications 从来没有在不对源代码进行控制的情况下允许对 Visual Basic 项目进行多用户编辑。

Microsoft Access 95 和 97 能够对 Visual Basic for Applications 隐藏在多用户环境中对项目进行的更改,并在以后将它们合并到项目中,从而避开这一限制。但是,这样做会对 Visual Basic 项目的稳定性造成负面影响。当用户修改 Access 特定对象的设计时,Access 2002 要求独占锁定,才能确保该项目只有一个编辑者。

参考

有关 Microsoft Access 2002 中的项目存储更改的其他信息,请单击以下文章编号,查看相应的 Microsoft Knowledge Base 文章:

283228 ACC2002: Exclusive Lock Required for Saving Design Changes to Access Objects

这篇文章中的信息适用于:

  • Microsoft Access 2002
最近更新: 2003-11-12 (2.0)
关键字: kbdta kbprb KB287603

最新评论

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-17 07:39 , Processed in 0.061949 second(s), 16 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部