希望我能尽可能准确地理解这个问题 - 但是你会告诉我,我是不是!提前谢谢。
首先,一些背景知识以及我发现DOES的工作原理,然后是一个我无法工作的小改动。我没有使用整个代码,而是使用了应该提供足够信息的片段,以便您了解我已经首先正确地发起了事情。
我使用菜单系统(原始MS版本的涡轮增压版本),其中包含其他字段,用于存储根据用户想要使用的措辞进行更改所需的信息,因此我可能将字段命名为Product,而用户可能想要称之为商品或物品或东西或任何他想要的东西!所以我将用户首选项存储在一个单独的表中(我们称之为tblWORDS)。当填充菜单时(记住它以与标准SwitchBoard类似的方式操作),其中包含来自字段的数据:ItemText,Command&参数菜单通常显示我使用的ItemText中的文本。但是,我在SWITCHBOARD表中添加了一个名为CAPTION的新字段,因为VBA代码不允许按照我的要求格式化标签。因此,当VBA代码从记录集中读取标签的ItemText时,它会遇到| (管道),我添加的VBA代码然后在Caption字段中查找字符串。希望足够的背景信息!! ??
[SwitchBoard]。[标题]最初包含以下内容:(包括所有内容)
"" &安培; dlookup(" fldProduct"," tblWORDS")& ""
这完美地运作!!但...
我没有在每次需要WORD时执行查找,而是决定创建GLOBAL VARIABLES,因此我有一个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"")不是我修订前的产品!
答案 0 :(得分:0)
所以......第一个问题是你把每个人都搞糊涂了,你在做什么,发生了什么 - 在哪里![标题]来自???
第二个问题是您无法访问表单或控件属性中的全局变量。
您需要通过代码设置标题。我将对您正在使用的内容以及每个元素的内容做出一些重大猜测,所以让我们从这里开始:
<强>第一强>
将Caption属性替换为其他内容 - 例如“Caption”。
<强>第二强>
在循环之后添加此代码 - 我认为这样可行 - 很难真正知道,因为您没有显示此代码的位置以及何时运行
[SwitchBoard].Caption = "" & glProduct & ""