多用户同时使用ACCESS
时 间:2013-10-05 08:06:11
作 者:宏鹏(转载) ID:21115 城市:上海
摘 要:多用户同时使用ACCESS
正 文:
前提是每个用户都不能使用独占的方式打开。
共享数据库 (MDB)
注释 本主题中的信息仅适用于 Microsoft Access 数据库 (.mdb)。
若要从另一台计算机上访问共享的 Microsoft Access 数据库,另一台计算机上必须具备下列条件之一:Access 的本地安装、Access 的网络安装(逐个用户地授权)或运行时应用程序。
设置共享文件夹。
有关共享文件夹的详细信息,请使用 Microsoft Windows 的“帮助索引”。如果共享文件夹位于网络服务器上,则可能需要网络管理员的协助。
将 Microsoft Access 数据库复制到一个共享文件夹。
确保 Access 数据库设为在共享方式下打开,这是默认设置。
操作方法:
在“工具”菜单上,单击“选项”。
在“高级”选项卡上“默认打开模式”下,单击“共享”。
注释 共享数据库之前,应该删除文件中可能存储的任何个人信息。有关详细信息,请参阅删除 Access 文件或页面中的个人信息。
注释 本主题中的信息仅适用于 Microsoft Access 数据库 (.mdb)。
如果您的计算机已经连接到网络中,则您和其他用户可以同时使用一个 Microsoft Access 数据库。
用于共享数据的方法
在多用户环境下共享数据的方法有多种。
共享整个 Access 数据库 可以将整个 Access 数据库放在网络服务器或共享文件夹中。这是实现整个 Access 数据库共享的最简单的方法。每个用户都能共享数据,并能使用相同的窗体、报表、查询、宏和模块。如果要让每个用户都以相同的方式使用 Access 数据库,或者您不能支持其他用户创建其自己的对象,则可以采取这种策略。
仅共享 Access 数据库中的表 可以只将表放在网络服务器上,而将其他数据库对象都留在用户的计算机上。这种情况下,Access 数据库的性能会有所提高,因为只有数据是通过网络发送的。当将一个数据库拆分为后端(表)和前端时,用户可以在不影响别人的情况下,对其自己的前端数据库中的窗体、报表和其他对象进行自定义。
在 Internet 上共享 Access 数据库对象或数据访问页 可以将一个或多个数据库对象输出为静态的 HTML 或服务器生成的 HTML 格式,或者创建数据访问页,然后用浏览器(如 Microsoft Internet Explorer)显示它们在万维网上的显示情况。
同步复制 Access 数据库 如果使用两台计算机(如,办公室计算机和便携式计算机),则可用 Microsoft Windows“公文包”来制作 Access 数据库的副本,并使这些副本保持同步。另外,在不同地点工作的用户也可以同时使用其自己的副本,然后通过网络(拨号连接或 Internet)将这些副本同步。
创建客户/服务器应用程序 如果工作在客户/服务器环境中,则可以通过创建客户/服务器应用程序而利用这种环境所提供的显著功能和安全性。应该将数据存储在数据库服务器(如 Microsoft SQL Server)上的表中,而不要存储在 Microsoft Access 中的本地表内。Access 应用程序(客户程序)从服务器中检索它所需要的数据。服务器维护数据的完整性并运行任何它可以求解的查询。
锁定信息 (.ldb) 文件
以共享方式打开 Access 数据库文件 (.mdb) 时,Microsoft Access 会用同一文件名(例如,Northwind.ldb)在该数据库文件所在的文件夹中,创建一个锁定信息文件 (.ldb)。该锁定信息文件存储计算机名(如 mypc)和每位数据库共享用户的安全名称(如 Admin)。Microsoft Access 使用该信息来控制并发访问。大多数情况下,在最后一个用户关闭数据库文件时,Microsoft Access 会自动删除锁定信息文件。
编辑共享数据库中的数据
在多用户环境下,可能会有多个人同时对同一条记录进行操作。因为其他人可以更改,甚至可以删除您正在编辑的数据,所以有时可能会与其他工作用户发生冲突。
Microsoft Access 可以帮助追踪正在编辑的记录的状态,并确保您使用的是最新数据。当两人或多人都要编辑同一条记录时,Microsoft Access 会显示信息来帮助解决冲突。例如,如果试图保存一条由其他用户锁定的记录,则 Microsoft Access 会显示锁定该记录的用户的名称。
为了帮助追踪记录的状态,Microsoft Access 将在当前记录选定器内显示下列符号:
符号 含义
这条记录是当前记录并且尚未编辑。
您已编辑过这条记录,但尚未保存所做的更改。只要显示该符号,其他用户就看不到对这条记录的更改,而且如果将这个记录锁定,他们也不能编辑这条记录。若要将该记录释放给其他用户使用,请保存或撤消所做的更改。
这条记录已由其他用户锁定。不能对其进行编辑。如果试图在一个锁定的记录内键入数据,Microsoft Access 将发出警告声。
还可以设置以下选项,用以控制共享数据库中数据的锁定和数据的刷新。
默认记录锁定设置
不锁定 Microsoft Access 不锁定您正在编辑的记录。当试图保存对某条记录的更改,而其他用户已对该记录作了更改时,Microsoft Access 将显示选择信息:是覆盖其他用户对该记录所做的更改,将自己的记录版本复制到剪贴板上,还是放弃所做的更改。该策略可以确保记录总可以被编辑,但会造成用户之间的编辑冲突。
已编辑的记录 Microsoft Access 将锁定您正在编辑的记录,因此其他用户不能更改该记录。这样也可能同时锁定存储在您磁盘上的其他相邻记录。如果另一位用户试图编辑您已锁定的记录,则 Microsoft Access 会在那位用户的数据表中显示锁定记录指示符 。该策略可以确保您总能完成已经开始的更改任务。如果不经常有编辑上的冲突,则最好采用该策略。
所有记录 对于您已打开进行编辑的窗体或数据表(及基表),Microsoft Access 将在打开的整段时间内,锁定其中的所有记录,使其他人不能编辑或锁定这些记录。该策略具有限制性,因此请在确认您是唯一需要编辑记录的人时,才选用该策略。
在使用 ODBC 编辑链接的 SQL 数据库表中的数据时,Microsoft Access 并不锁定记录;而由该 SQL 数据库的规则来管理锁定。这种情况下,不论对数据库选择哪一种锁定记录设置,Microsoft Access 都会按选择“不锁定”设置来处理。
页级和记录级锁定
可以指定 Access 在共享数据库中使用的锁定级别。如果使用页级锁定,则 Access 会锁定 4K 的页(记录所在的内存区域),而且编辑记录时可能会导致附近存储的其他记录也被锁定。不过,使用页级锁定时性能往往较好。
如果使用记录级锁定,Access 将只锁定您正编辑的记录。这将成为通过窗体、数据表访问数据时,以及通过使用记录集对象循环遍历记录的代码来访问数据时的默认行为,但不是通过操作查询或通过使用 SQL 语句进行大量数据操作访问数据的默认行为。
更新重试间隔和刷新间隔设置
可以使用“更新重试间隔”和“更新重试次数”设置来指定 Microsoft Access 尝试保存被另一用户锁定的记录的频率和次数。也可以使用“ODBC 刷新间隔”和“刷新间隔”设置来控制 Access 刷新数据的频率。刷新只会更新数据表或窗体中已有的数据,并不将记录重新排序,不显示新记录,也不去除已删除的记录和已不再满足条件的记录。若要查看这些更改,必须重新查询数据表或窗体的基础记录。
保存共享数据库中的设计更改
当有其他用户正打开 Access 数据库时,用户不能将设计更改保存到 Microsoft Access 数据库中。确保更改保存的唯一途径是以独占 模式打开 Access 数据库。
通常,当试图对数据库对象(除了表和查询)或共享模式中的某一项进行设计更改时,如果当时您是 Access 数据库的唯一用户,则 Access 将临时提升您以独占模式使用 Access 数据库。当保存所有设计更改并关闭所有“设计”视图窗口时,Access 会将 Access 数据库返回共享模式。在此期间,其他用户不能打开 Access 数据库。
如果其他用户以共享模式打开了 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 过程。
设置共享 Access 数据库的选项 (MDB)
注释 本主题中的信息仅适用于 Microsoft Access 数据库 (.mdb)。
在“工具”菜单上,单击“选项”。
单击“高级”选项卡。
请执行下列一项或多项操作:
指定 Microsoft Access 数据库的默认打开模式:共享模式还是独占模式
在“默认打开模式”下,请执行下列操作之一:
如果希望在打开 Microsoft Access 数据库后,其他人仍可以同时打开,请单击“共享”。
如果希望在打开 Access 数据库后,拥有唯一的访问权,请单击“独占”。
注意
即使已将默认打开模式设置为“共享”,仍可以在打开 Access 数据库时暂时覆盖该设置。
如果在多用户环境下设置安全性,可以通过拒绝用户对数据库的“以独占模式打开”权限,来防止用户以独占模式打开 Access 数据库。
指定更新重试和刷新间隔设置
请执行下列一项或多项操作:
若要设置 Microsoft Access 自动尝试保存由另一个用户锁定的已更改记录的间隔,请在“更新重试时间间隔”框中键入毫秒数。有效数值为从 0 到 1,000。
若要设置 Microsoft Access 尝试保存由另一个用户锁定的已更改记录的次数,请在“更新重试的次数”框中键入次数。有效数值为从 0 到 10。
若要设置 Microsoft Access 自动刷新用户使用 ODBC 所访问的记录的间隔,请在“ODBC 刷新间隔”框中键入秒数。有效数值为从 1 到 32,766。
若要指定数据自动更新的频率,请在“刷新间隔”框中键入秒数。有效数值为从 1 到 32,766。 例如,如果键入 120,则数据每 2 分钟更新一次。只有当数据库是在网络上进行共享时,该设置才生效。
指定记录锁定策略
当用户编辑记录时,Microsoft Access 在该用户结束记录编辑之前会自动禁止其他用户更改该记录。赋予一位用户对一条记录的独占访问权即称作“锁定”。
在“默认记录锁定”下,请执行下列操作之一:
在编辑记录时,若要防止锁定记录,请单击“不锁定”。
在编辑记录时,若要锁定窗体或数据表(以及基表)中的所有记录,请单击“所有记录”。
若要仅锁定正在编辑的记录,请单击“编辑记录”。
指定记录级或页级锁定
请执行下列操作之一:
若要使记录级锁定成为当前 Microsoft Access 数据库的新默认设置,可选中“使用记录级锁定打开数据库”复选框。
若要使页级锁定成为当前 Access 数据库的的新默认设置,可清除“使用记录级锁定打开数据库”复选框。
下次打开 Access 数据库时,该设置就会生效,但是前提是必须使用“文件”菜单中的“打开”命令,而不能使用“文件”菜单底部的最近使用的文件列表。
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)