当有其他用户正打开 Access 数据库时,用户不能将设计更改保存到 Microsoft Access 数据库中。确保更改保存的唯一途径是以独占 模式打开 access 数据库。
通常,当试图对数据库对象(不包括表和查询)或共享模式下的某个项目进行设计更改时,如果您当时是 Access 数据库的唯一用户,Access 将临时提升您以独占模式使用 Access 数据库。当保存所有设计更改并关闭所有“设计”视图窗口时,Access 会将 Access 数据库返回为共享模式。在此期间,其他用户将无法打开 access 数据库。如果您正在使用 Visual Basic 编辑器 (VBE),还需要保存所有打开的模块并关闭 VBE。
如果其他用户以共享模式打开了 Access 数据库而您试图做一个主要的设计更改,如修改窗体,则 Access 会警告您可能不能保存更改。但如果其他用户以共享模式打开 Access 数据库而您试图做一个次要的设计更改,如更改打印机设置,则 Access 不会警告您不能保存更改。在这两种情况下,都要等到成为 Access 数据库的唯一用户时,您才能保存主要设计更改,而 access 保存次要设计更改。
数据访问页的处理方式有所不同。尽管创建、重命名、移动和删除数据访问页仍要求使用独占模式(因为这要更改 access 数据库中的信息),但是编辑数据访问页不要求提升为独占模式(因为相应的 HTML 文件存在于数据库以外的文件系统中)。
主次设计更改之间的差别
如果没有以独占模式访问 Access 数据库,则 access 将在可能无法保存以下主要设计更改时向您发出警告:
◆在“设计”视图中对数据库对象的更改(除表和查询以外)
◆在“窗体”视图中对窗体属性表的更改
◆在“Visual Basic 编辑器”中编译项目、修改项目属性、添加或删除引用
◆重命名、粘贴或删除数据库对象
◆将数据库对象另存为其他类型的数据库对象
◆添加或修改命令栏上的控件
◆在“数据库”窗口中编辑自定义组
◆创建、重命名、移动和删除数据访问页
如果没有以独占模式访问 Access 数据库,则在可能无法保存以下次要设计更改时,access 不会发出警告:
◆对数据表格式(如线型和字体属性)的更改
◆冻结、撤消冻结、隐藏和显示数据表列
◆调整数据表列宽和行高
◆对窗体或数据表筛选或排序次序的更改
◆对子数据表状态的更改(展开还是折叠)
◆对 OLE 对象的 OLE/DDE 链接的更改或对未绑定对象框内容的更改
◆对打印机设置的更改
◆对命令栏的更改,如命令栏的位置及其是否可视
◆对“数据库”窗口布局的更改
共享 access 数据库设计和开发的策略
如果要共享 access 数据库的设计,不妨考虑使用以下策略:
◆针对特定的开发者指定特定的对象或对象组。例如,一位开发者设计窗体而另一位设计报表。然后,每位开发者可以在 Access 数据库的私有副本上工作。当开发小组准备测试、组装和生产时,每位开发者从各自的私有数据库副本中将数据库对象导出到主 access 数据库中。
◆使用源代码控制程序。如果使用 Visual SourceSafe,最好定期运行“性能分析器”(在“工具”菜单上指向“分析”,然后单击“性能”即可打开)来保持最佳性能。
有关在共享数据库中保存设计更改的提示
◆如果另一位用户已打开某个表或正在查看基于该表的查询、窗体或报表中的数据,则不能更改该表的设计。Microsoft access 将告知该表为只读。
◆如果某些对象彼此依赖,请同时将它们全部更新,这样其他用户才不至于打开不一致的对象版本。例如,如果要在某窗体中添加新字段,请在更新该窗体前确保也在基础查询中添加了新字段。
◆如果更改另一位用户已经打开的查询,则该用户必须在关闭并重新打开更改的对象后,才能使用最新的版本。在使用 Visual Basic for Applications (VBA) 模块时,其他用户必须先关闭 access 数据库然后再重新打开,才能运行更新后的 Function 或 Sub 过程。