簡體   English   中英

在VBA中定義和調用全局變量

[英]Defining and calling a global variable in VBA

我有一個登錄屏幕,該屏幕通過Dlookup比較數據以驗證用戶身份。 我想在正確登錄后創建一個全局變量,數據庫中的任何表單都可以調用該全局變量,然后根據該值打開表單。 因此,目前我已經進行了所有設置。 登錄表單 :

Option Compare Database
Public gstrUsr As String

登錄表單:

Public Sub Command4_Click()
'Sets the login time to now and then authenticates user credentials
 Dim usr As String
    Me.Time = Now
Dim lvl As String
Dim lck As Integer
Dim sql As String
Dim msgapp As Integer
Dim chkusr As Variant
    chkusr = Nz(DLookup("[Username]", "Login", "[Username]='" & Me.Username.Value & "'"), "")
    msgapp = 0
    usr = Nz(DLookup("[Password]", "Login", "[Username]='" & Me.Username.Value & "'"), "")
    lvl = Nz(DLookup("[Level]", "Login", "[Username]='" & Me.Username.Value & "'"), "")
    sql = "INSERT INTO Log ( [User], [Time] )SELECT [Forms]![Login]![Username] AS Expr1, [Forms]![Login]![Time] AS Expr2;"
''" & [Forms]![ItemList1]![SRCB] & "'"
'Runs above sql which adds a time record for the selected username also removes the "You are about to update X rows", will use this in the future on the accounting functions
        If chkusr = "" Then msgapp = 1
        If chkusr = "" Then MsgBox ("Invalid Credentials")
            DoCmd.SetWarnings False
            DoCmd.RunSQL (sql)
            DoCmd.SetWarnings True
'If password is = to the value that is returned in the "usr" variable declared at the top via Dlookup it will open a form based on what that users "level" is otherwise displays and invalid credentials message box
            Do While msgapp = 0
                If usr = Me.Password.Value Then
                    lck = 1
                    msgapp = 3
                Else
                    MsgBox ("Invalid Credentials")
                    msgapp = 3
                End If
Loop

Do While lck = 1
    If lvl = "2" Then
        DoCmd.OpenForm "MainB"
        gstrUsr = DLookup("[Username]", "Login", "[Username]='" & Me.Username & "'")

        lck = 0

    Else
        DoCmd.OpenForm "Main"
        lck = 0
    End If
Loop

End Sub

成功登錄后加載的表單:(具有用於訪問其他表單的按鈕的主表單,我包括一個文本框,以便查看是否將信息傳遞給第二個表單)

Private Sub Form_Load()
Me.Text75 = gstrUsr
End Sub

如何獲取全局變量以傳遞給第二種形式?

在代碼模塊而不是表單模塊中定義您的公共變量。

這樣,它將可以從任何模塊中使用(如果是public

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM