【发布时间】:2018-12-22 13:59:46
【问题描述】:
我使用的是 Microsoft Access 2013,在使用 VBA 时遇到了这个问题。 是否可以将在私有子中声明或定义的变量的值传递给全局变量? 我尝试了不同的方法......但都没有奏效
首先,我在我使用的私有子中定义并声明了变量。 接下来,我将变量定义为公共变量,然后在该私有子中定义它,但是当我尝试将其值传递给全局变量时,它返回 null。我不知道是不是因为它在条件语句中。
Option Compare Database
Public recUserID As Long
Option Explicit
Private Sub txtPassword_AfterUpdate()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM tblUser")
'Check that user is selected/entered
If IsNull(Me.txtUser) Then
MsgBox "Select User"
Else
rs.FindFirst "[PersonnelID] = '" & Me.txtUser & "'"
If rs.NoMatch Then
MsgBox "User does not exist, please enter correct ID"
Else
recUserID = rs![UserID]
End If
End If
End Sub
Private Sub Form_AfterUpdate()
gblStudent = recUserID
End Sub
应该是把记录的ID变量recUserID的值传给全局变量gblStudent,但是调试的时候,Form的AfterUpdate处的变量返回0
注意:表单绑定到表,因此,更新后功能起作用
【问题讨论】:
-
你好维克多!回答者在这里猜测是因为您没有提供足够的上下文让他们可靠地了解问题所在。不用担心这个,Access 问题很难做到。相反,您会收到有关如何自己解决问题的建议,这是我们在这种情况下可以做的最好的事情。我希望这些想法之一对您有所帮助。如果您确实找到了解决方案,请在此处发布以供未来读者使用。
-
如果您发布的代码在表单代码模块中,它将无法工作,因为该表单和代码可能超出范围。您必须在标准代码模块中声明 recUSERID,而不是在表单中声明。因此,您上面的所有代码都可以保持“原样”,但是您必须将更多的 recUserID 声明为标准(非表单)代码模块,这样就可以了。