Ms access 使用可在Sharepoint上读写的多用户设置Access 2007

Ms access 使用可在Sharepoint上读写的多用户设置Access 2007,ms-access,sharepoint,vba,ms-access-2007,Ms Access,Sharepoint,Vba,Ms Access 2007,我得到了一个有问题的Access 2007数据库解决方案。首先要解决的问题是避免记录锁定。最初的设计人员决定将数据分成三个独立的数据库(基于产品线),这将避免一个程序经理锁定另一个程序经理。现在的第二个问题是,如果任何人打开三个数据库中的任何一个,他们就会锁定只能以读访问方式打开的写入程序 全球约有100名用户,其中有三到四名作者,其余为读者。数据库位于SharePoint网站上 为了解决这些问题,我建议根据迄今为止的研究做以下几点 1) 创建拆分数据库,从而将前端用户界面与数据存储库隔离 2)

我得到了一个有问题的Access 2007数据库解决方案。首先要解决的问题是避免记录锁定。最初的设计人员决定将数据分成三个独立的数据库(基于产品线),这将避免一个程序经理锁定另一个程序经理。现在的第二个问题是,如果任何人打开三个数据库中的任何一个,他们就会锁定只能以读访问方式打开的写入程序

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

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

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

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

3) 对于读者,我将向每个表单的
form\u Load
事件添加以下代码:

   Me.AllowEdits = False
   Me.DataEntry = False
   Me.RecordLocks = 0  ' No Locks
这似乎有效(在我可以执行的有限测试中),因为它允许读卡器更改列宽等,从其他位置复制和粘贴数据,但防止它们锁定写入器的记录和/或对数据进行任何更改

4) 对于写入程序,将以下内容添加到相同的加载<代码>事件中:

   Me.AllowEdits = False
   Me.DataEntry = True
   Me.RecordLocks = 2  ' Edited Record
这可以防止编写者保存对表单的更改,但允许编辑不同的记录(尽管Access帮助中说,
RecordLocks
适用于记录页面,这听起来像是他们在谈论表格,而不是单个记录???我的测试似乎显示了作者编辑的记录的排他性,而不是整个表格。)

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

到目前为止,我觉得还不错

下一个计划是将数据库(前端和后端)放在SharePoint上。然而,我看到的所有研究都表明,每个用户都应该在本地拥有自己的前端。出于明显的原因(更新本地机器上建立的多个前端),我希望避免这样做。因此,我的问题如下:

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

B) 为什么我不能放置多个用户可以共享的前端的两个实例?换言之,如果用户只是在读或写,如果其他用户不使用,他们是否可以使用/共享访问前端的单个实例而不锁定?现在,任何人都可以从SharePoint网站打开数据库。只是第一个打开它的人有写权限。试图使用同一数据库的所有其他人都设置为只读,包括写入者(但这首先通过拆分数据库来解决,不是吗?)

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


如有任何想法,将不胜感激。谢谢

鉴于我的问题没有答案,我将用我所做的研究和测试来回答自己

首先,使用VBA管理表单属性并控制写入程序的前端不被未经授权的读取器访问是失败的。将Office加载到用户工作站时,宏设置默认为“高”或“不运行内容…”。因此,当读卡器无意中打开Writer前端时,Form_Load事件将被阻止运行,并且用户拥有完全的编辑权限。如果他们碰巧允许宏运行,则会建立正确的设置,但假定大多数人不会单击“允许内容运行”按钮。然后,解决方案是在表单的属性表中设置权限。是的,一个有决心的用户如果愿意可以破解,但是谁想做其他人编辑记录的工作呢

读卡器的设置如下所示: 数据输入:否 允许添加:否 允许删除:否 允许编辑:否 允许筛选器:是 记录锁:无锁

对于作者: 数据输入:否 允许添加:是 允许删除:是 允许编辑:是 允许筛选器:是 记录锁定:已编辑的记录

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

这同样适用于通过
IsValidUser()
函数控制访问。编写器前端的解决方案是对其进行密码保护。同样,这不是100%的傻瓜式,但足以劝阻过度工作的工程师继续前进

将后端数据表放在SharePoint上不是一个简单的任务。如果前端对象(表单、查询等)位于SharePoint上,则无法将它们链接到基础表。您可以将表作为列表发送过来,然后链接到该列表,但当我尝试更新链接时,我遇到了各种各样的“无效路径…”错误。因此,后端驻留在标准Windows网络文件夹中

您没有理由不能让驻留在SharePoint上的单个访问前端同时被多个用户访问以查看或编辑记录。将Writer窗体的Record Lock属性设置为Edited Record(又称悲观记录),将阻止Writer编辑已被其他人编辑的记录。但是,他们可以编辑其他记录。在读卡器端,它被设置为无锁。这一切都有效