希望我能使这个问题尽可能精确和易于理解 - 但如果我不这样做,你会告诉我! 提前谢谢。
首先,一点背景和我发现确实有效的东西,然后是我无法开始工作的小变化。我没有使用整个代码,而是使用了应该提供足够信息的片段,让您了解我首先正确地启动了事情。
我使用菜单系统(原始MS的涡轮增压版本),该系统具有附加字段来存储根据用户要使用的措辞进行更改所需的信息,因此我可以将字段命名为产品,而用户可能想称其为商品或物品或东西或任何他想要的东西! 因此,我将用户首选项存储在一个单独的表中(我们称之为tblWORDS)。 当菜单填充(请记住,它以与标准SwitchBoard类似的方式运行)来自字段的数据时:ItemText,Command & Argument,菜单通常显示我使用的ItemText中的文本。但是,我在交换机表中添加了一个名为CAPTION的新字段,因为VBA代码不允许按照我想要的方式格式化标签。因此,当 VBA 代码从记录集中读取标签的 ItemText 时,它会遇到 |(管道),我添加的 VBA 代码然后查找字符串的标题字段。 希望有足够的背景信息!??
[总机]。[标题]最初包含以下内容:(包括所有内容)
" & dlookup("fldProduct","tblWORDS") & "
这很完美!!但。。。
我决定创建全局变量,而不是每次需要 WORD 时都执行查找,所以我有一个 glProduct 的全局变量,它可以正确地从 tblWORDS 表中获取单词并很好地保留它。然后,在整个会话中,可以在任何地方使用此功能。
我已经替换了上面的字符串来读取全局变量,而不是每次都执行查找,以:(再次,包含所有内容)
" & glProduct & "
所以,我的代码如下:
While (Not (rs.EOF))
Me("Option" & rs![ItemNumber]).Visible = True
'MY PIPE DEVIATION
If Left(Trim(rs![ItemText] & ""), 1) = "|" Then
'THIS LINE WORKS JUST FINE
'DISPLAYS CORRECTLY (rs!Caption = "" & dlookup("fldProduct","tblWORDS") & "")
szTemp = DLookup(rs![Caption], "tblWORDS")
'AS DOES THIS (but, I'm explicitly naming the variable in code! Only entered this line to show that the variable is working!)
szTemp = "" & glbProduct & ""
'THIS DOES TOO (Just a BYREF function for testing)
szTemp = fnGetValue(DLookup(rs![Caption], "tblWORDS"))
Me("Option" & rs![ItemNumber]).Caption = szTemp
Else
If rs![ItemNumber] = 0 Then
Me("OptionLabel" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & " (" & rs![SwitchboardID] & ")")
Me("OptionLabel" & rs![ItemNumber]).Visible = True
Me("Option" & rs![ItemNumber]).Visible = False
Else
Me("Option" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & "")
End If
End If
rs.MoveNext
Wend
修改为:
While (Not (rs.EOF))
Me("Option" & rs![ItemNumber]).Visible = True
'MY PIPE DEVIATION
If Left(Trim(rs![ItemText] & ""), 1) = "|" Then
'THIS WORKS (but, I'm explicitly naming the variable in code! Only entered this line to show that the variable is working!)
szTemp = "" & glbProduct & ""
'THIS DOES NOT (FYI: rs!Caption = "" & glbProduct & "")
szTemp = rs!Caption
'NOR DOES THIS (Just a BYREF function for testing)
szTemp = fnGetValue(rs!Caption)
Me("Option" & rs![ItemNumber]).Caption = szTemp
Else
If rs![ItemNumber] = 0 Then
Me("OptionLabel" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & " (" & rs![SwitchboardID] & ")")
Me("OptionLabel" & rs![ItemNumber]).Visible = True
Me("Option" & rs![ItemNumber]).Visible = False
Else
Me("Option" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & "")
End If
End If
rs.MoveNext
Wend
显示的是输入的文字字符串("_glProduct"),而不是我修订之前的产品!
所以... 第一个问题是你让每个人都对你正在做的事情和它在哪里发生混淆 - RS 在哪里![标题] 来自???
第二个问题是无法访问窗体或控件属性中的全局变量。
您需要通过代码设置标题。我将对你正在使用的内容以及每个元素是什么进行一些大的猜测,所以让我们从这里开始:
第一
将 Caption 属性替换为其他内容 - 例如,只需"Caption"。
第二
在您的循环后添加此代码 - 我认为这将起作用 - 很难真正知道,因为您没有显示此代码的位置以及它何时运行
[SwitchBoard].Caption = "" & glProduct & ""