2011-02-01 87 views
0

恐怕我已经知道这个问题的答案,但我在的情况下社区检查有什么东西我不知道....控制权在MS-访问链接表

是否有可能将MS Access表链接功能控制权限链接到链接表?特别地,FE.accdb可以在BE_A.accdb上具有读/写权限,但是只读链接到BE_B.accdb(不使BE_B.accdb完全为R/O)?

回答

1

整理。

post earlier this year on another forum引用大卫·芬顿:

一种方法是删除链接 表,并创建查询,以取代 他们(你可以为 使用相同的名称作为查询相应链接 表),并在查询中使用连接字符串 ,并将记录集类型 设置为快照,默认情况下将为只读 。

我刚刚有机会自己做这个。我问了一个关于通过VBA here将querydef记录集类型设置为快照的相关问题。

您可以修改下面的代码,你需要的东西:

Sub ReadOnlyLink(MDBPath As String, TblName As String, SrcTblName As String) 
Dim q As DAO.QueryDef 
    Set q = CurrentDb.CreateQueryDef(TblName, "SELECT * FROM " & SrcTblName & _ 
               " IN """ & MDBPath & """") 
    q.Properties.Append q.CreateProperty("RecordsetType", dbByte, 2) 
End Sub 
+0

哇。我没有期待一个后面的答案(正如你可能已经从原始语言中猜到的那样)。我不知道我的需求是否足够强大来证明这一点,但现在我知道如何。谢谢! – RolandTumble 2011-02-01 21:37:38

0

这是不是一个真正的答案,但它的评论太长。我接受的答案引发了一些想法。

看来,它应该是可以使用这个用户级“安全”:

  • 建立一个BE
  • 在FE建立一个分发FE与故意断开链接
  • 启动,获取用户名(API调用)
  • 通过Select Case运行用户名,根据需要重新链接为真实表或querydef。使用用户名 - 在选择之前进行角色查找可能会更好。

嗯。必须考虑更多......不是防弹的,但并不是真正的意图。更多将责任更新分配给相应领域专家的用户的方式。不知道它是否真的合理。

+0

我认为Access开发团队的立场是安全(以及用户对数据的访问)是一个后端问题,如果您需要这样做,您必须使用提供安全和访问控制的数据库引擎。这可能是Jet(MDB格式)或SQL Server或其他。 ACCDB在这方面根本没有什么可提供的(忽略愚蠢的数据库密码,它只不过是安全剧院)。所以也许你需要重新考虑你的后端数据库。 – 2011-02-06 01:09:50