2011-02-01 74 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