2012-01-22 98 views
0

我有初始窗體登錄驗證用戶詳細信息以訪問我的MS Access數據庫。如何讓我當前的用戶登錄在MS Access窗體

現在我有另一種形式的要求,如果我從組合框中選擇相同的登錄用戶,那麼應該在窗體中啓用命令按鈕,以便如何驗證我的初始登錄用戶在我的訪問中使用另一個表單文本框登錄D b。

所以我研究了這個,但無法得到有用的場景 - 有些人可以幫助我,我可以如何實現這個細節..謝謝!

回答

1

更加堅固,隱藏而不是關閉登錄形成。在窗體隱藏的情況下,其他表單中的代碼仍然可以讀取登錄表單中的值。

若要隱藏窗體名爲frmLogin:

DoCmd.OpenForm "frmLogin",acNormal,,,,acHidden 

DoCmd.OpenForm "frmLogin",acNormal,WindowMode:=acHidden 

如果隱藏frmLogin包含一個名爲txtUserName一個文本框,你可以檢查它的價值是這樣的:

Debug.Print Forms!frmLogin!txtUserName 

我基於這個答案假設你在你的Access數據庫中創建了自己的安全框架ap摺疊。但是這一點不清楚。如果您使用Access ULS(用戶級安全性)(需要較舊的MDB格式數據庫),則Matt提到的CurrentUser()函數將爲您提供用戶的Access安全性名稱。但是,如果這是您使用的方法,我不明白爲什麼您需要單獨的登錄表單。

所以你的問題不清楚。如果沒有一個答案是令人滿意的,請編輯您的問題以包含您正在使用的安全/登錄策略的解釋。

0

將驗證過的用戶記錄到公共變量中,然後您可以使用「CurrentUser()」命令測試它是否與下一個表單匹配。

注:僅使用此方法如果每個用戶都有自己的前端的複印件(如果所有人都共享同一個前端不使用,雖然具有較好的實用性,他們不應該)

+2

如果未使用Access安全性(將返回「Admin」)並且Environ(「username」)安全性較差,我不確定當前用戶是否會有所幫助。通常推薦使用Dev Ashish的API(http://access.mvps.org/access/api/api0008.htm)。我不確定OP在問什麼。 – Fionnuala

+0

@Remou我不太確定OP是否使用'Windows'用戶名作爲他們是否使用其他方法的安全性,否則是,API調用很好,我也很喜歡Chris的答案。 –

1

雖然API方法@Remou暗示的作品,我已經轉移到這種技術

Public Function GetUserName() As String 
    Dim wshNet As Object 
    Set wshNet = CreateObject("WScript.Network") 
    GetUserName = wshNet.UserName 
    Set wshNet = Nothing 
End Function 

我相信這是比用戶完成她登錄後調用API