You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

绑定特定用户组至未绑定表单: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 00:47:28