使用可以在Sharepoint上读取或写入的多用户设置Access 2007

时间:2015-10-16 17:09:20

标签: sharepoint access-vba ms-access-2007

我遇到了一个有问题的Access 2007数据库解决方案。问题首先在于避免记录锁定,原始设计者决定将数据拆分为三个独立的数据库(基于产品线),这样可以避免一个程序管理器锁定另一个程序管理器。现在的第二个问题是,如果任何人打开三个数据库中的任何一个,他们就会锁定只能以读取权限打开的作者。

全球约有100名用户,有三到四位作家,其余为读者。数据库位于SharePoint网站上。

为解决这些问题,我建议根据迄今为止的研究做以下几点。

1)创建拆分数据库,从而将前端用户界面与数据存储库隔离开来。

2)创建连接到后端的两个前端interphase数据库。一个是读者,另一个是作家。

3)对于读者,我将在每个表单的Form_Load事件中添加以下代码:

   Me.AllowEdits = False
   Me.DataEntry = False
   Me.RecordLocks = 0  ' No Locks

这似乎有效(在我可以执行的有限测试中),因为它允许读者更改列宽等,从其他地方复制并粘贴其他数据但是阻止他们锁定作者的记录和/或制作对数据的任何更改。

4)对于作者以下相同的On-Load事件:

   Me.AllowEdits = False
   Me.DataEntry = True
   Me.RecordLocks = 2  ' Edited Record

这可以防止作者保存对表单的更改,但允许编辑不同的记录(尽管Access帮助说RecordLocks适用于记录的页面,这听起来像是在谈论表而不是单个记录? ??我的测试似乎表现出作家正在编辑的记录的排他性,而不是整个表格。)。

5)我将把三个数据库中的所有记录移动到一个,因为原始的解决方法似乎已经通过上述步骤解决了记录锁定(??)。我应该指出,一个作家编辑另一个作家拥有的记录的可能性非常低。但是,编辑记录的编写者无法锁定另一个编辑同一表中的其他记录。

到目前为止,我正在思考。

下一个计划是将数据库(Front和Back)放在SharePoint上。但是,我所看到的所有研究表明,每个用户都应该在本地获得自己的前端。我想避免这种情况显而易见(更新在本地机器上建立的多个前端)。所以我的问题如下:

A)SharePoint自己的权限级别是否会干扰Access数据库内部设置的权限级别?现在,任何人(读者和作家)都可以编辑记录。

B)为什么我不能放置多个用户可以共享的前端的两个实例?换句话说,如果用户只是阅读或写作,如果其他用户使用,他们是否可以不使用/共享访问前端的单个实例而不锁定?现在,任何人都可以从SharePoint站点打开数据库。只是第一个打开它获得写访问权限。尝试使用相同数据库的所有其他人都被设置为只读包含编写器(但首先通过拆分数据库来解决这个问题,不是吗?)。

最后,如果因任何原因导致SharePoint无法启动,我可以使用共享网络文件夹。

任何想法都将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

由于我的查询中没有答案,我将回答自己已经进行过的研究和测试。

首先,使用VBA管理表单属性并控制Writer的前端不被未授权的读者访问是一种失败。当Office加载到用户的工作站时,宏设置默认为"高"或"不运行内容..."。因此,当Reader无意中打开Writer前端时,Form_Load事件将被阻止运行,并且用户具有完全编辑权限。如果它们碰巧允许宏运行,那么就会建立正确的设置但是假设大多数都不会点击“允许内容运行”#34;按钮。然后解决方案是在表单的属性表中设置权限。是的,一个坚定的用户可以在他们想要的时候破解,但是谁想要做别人的工作来编辑记录。

阅读器的设置如下: 数据输入:没有 允许添加:否 允许删除:否 允许编辑:否 允许过滤器:是的 记录锁定:无锁定

对于作家: 数据输入:没有 允许添加:是的 允许删除:是的 允许编辑:是的 允许过滤器:是的 记录锁定:编辑记录

我注意到当Data Entry属性设置为Yes时,MS Find变得不可用。它曾用于获取特定记录。不知道为什么它变得不可用但你有它。

这同样适用于通过IsValidUser()功能控制访问。 Writer前端的解决方案是密码保护它。同样,不是百分之百的傻瓜证明,而是足以阻止过度工作的工程师继续前进。

将后端数据表放到SharePoint上不是option。如果它们位于SharePoint上,则无法将任何前端对象(表单,查询等)链接到基础表。您可以将表格作为列表发送,然后链接到该表格,但我得到了各种各样的"无效的路径......"我尝试更新链接时出错。因此后端驻留在标准的Windows网络文件夹中。

没有理由不能让一个驻留在SharePoint上的Access前端可由多个用户同时访问以查看或编辑记录。将Writer表单的Record Lock属性设置为Edited Record(又名Pessimistic)会锁定编写者编辑已由其他人编辑的记录。但是,他们可以编辑另一条记录。在Reader端,它被设置为No Locks。一切正常。