绑定特定用户组至未绑定表单:PlayerID查询返回空值问题
问题描述
我将用户划分为不同组,每组下又细分为两个岗位(Post)。需求是:当团队负责人(TeamLeader)登录未绑定表单后,仅显示其需要指导的用户。目前PostID与TeamLeaderID可正常显示,但PlayerID查询返回空值,相关VBA代码如下:
Private Sub Form_Load() Dim Post As String Dim UserType As String Dim User As String Dim UserTypeID As Long Dim PostID As Long Dim TeamLeaderID As Long Dim PlayerID As Long '获取用户岗位并显示在TeamLeaderF表单上 Post = DLookup("Post", "PostQ", "UserID = " & TempVars!TempUserID) Me.txtPost = Post '获取用户类型并显示在TeamLeaderF表单上 UserType = DLookup("UserType", "UserQ", "UserID = " & TempVars!TempUserID) Me.txtUserType = UserType '获取玩家名称并显示在TeamLeaderF表单上 User = DLookup("PlayerName", "UserQ", "UserID = " & TempVars!TempUserID) Me.txtWelcome = "Welcome " & User '获取团队负责人ID并显示在TeamLeaderF表单上 TeamLeaderID = DLookup("TeamLeaderID", "GroupQ", "UserID=" & TempVars!TempUserID) Me.txtTeamLeaderID = TeamLeaderID '获取岗位ID并显示在TeamLeaderF表单上 PostID = DLookup("PostID", "GroupQ", "UserID = " & TempVars!TempUserID) Me.txtPostID = PostID '通过匹配GroupQ中PostID和TeamLeaderID,获取对应的PlayerID PlayerID = DLookup("PlayerID", "GroupQ", "UserID=""& PostID & "" AND TeamLeaderID =" & TempVars!TempUserID) Me.txtPlayerID = PlayerID End Sub
问题原因与修复方案
PlayerID查询为空的核心原因是最后一行DLookup的条件字符串拼接错误,且逻辑匹配关系错误:
- 错误地用
UserID=""& PostID & ""试图匹配岗位ID,混淆了UserID和PostID的含义,字符串拼接语法也混乱。 - 正确逻辑应为:查询GroupQ中「岗位ID等于当前用户的PostID」且「团队负责人ID等于当前登录用户ID」的记录,取出对应的PlayerID。
修复后的代码行(PostID为数值类型时):
PlayerID = DLookup("PlayerID", "GroupQ", "PostID = " & PostID & " AND TeamLeaderID = " & TempVars!TempUserID)
若PostID为文本类型,需用单引号包裹变量:
PlayerID = DLookup("PlayerID", "GroupQ", "PostID = '" & PostID & "' AND TeamLeaderID = " & TempVars!TempUserID)
内容的提问来源于stack exchange,提问作者Debunker Debunk
相关产品推荐
相关产品推荐

