2013-04-11 62 views
2

我試圖輸入一些隱藏「設計視圖」作爲我們內部應用程序的選項的代碼,除非滿足特定的權限要求。禁用MS Access中的設計視圖

下面的代碼工作有一個例外:

On Error Resume Next 
If Not GetUserInfo("ADMIN_PERMIS") = 1 Then 
    Dim cb As CommandBar 
    Dim cbCtl As CommandBarControl 
    For Each cb In CommandBars 
     If cb.type = msoBarTypePopup Then 
      For Each cbCtl In cb.Controls 
       If cbCtl.Caption = "&Design View" Then 
        cbCtl.enabled = True 
        cbCtl.visible = False 
       Else 
        cbCtl.visible = True 
       End If 
      Next 
     End If 
    Next 
    Set cb = Nothing: Set cbCtl = Nothing 
End If 

的一個問題是,它禁用不僅對當前的數據庫,同時也適用於啓動任何其他訪問數據庫的設計視圖。我正在尋找一種方法來嘗試和應用此代碼的方式,它隻影響Access數據庫我有代碼,而不是在它的每一個實例。

+0

我們搬到遠離ULS到基於Active Directory的安全性,特別是能夠使用ACCDB和ULS,從而滿足用戶不被迫記住第二次登錄。我們已經考慮過編譯可執行版本(accde),但是我們的前端經歷了相當長時間的發展,並且如果出現時間敏感的問題,就很難調試和解決問題。 – 2013-04-12 20:15:11

回答

2

我建議將數據庫轉換爲已編譯,可執行的.accde文件(文件 - >保存&發佈 - >生成ACCDE)。這樣做可以防止應用程序中的任何設計或代碼更改。保持正常.accdb格式的開發版本。在那裏進行更改,然後編譯到每個更新的.accde版本中。

由於您的團隊經常更新數據庫,因此您可以使用Peter De Baets的database starter。數據庫啓動程序創建數據庫前端的本地副本,允許用戶在設計更改時繼續工作。生產accde前端文件更新後,用戶將在下次打開數據庫時自動複製新文件。在我的辦公室裏,我發現我可以快速解決問題,只需發送電子郵件給所有人,說「關閉並重新打開數據庫傢伙!」。

0

所有這些答案都很棒。如果你對最簡單的方法感興趣,我發現這個表格是關鍵,儘管處在一個奇怪的地方。

在表格屬性 - >其他標籤 - >快捷菜單=沒有

+0

此方法不會阻止右鍵單擊表單的選項卡,其中菜單仍然可用。它也剝奪了用戶過濾的好處。 – 2017-09-22 07:49:23