全局变量查找

时间:2016-07-12 14:18:18

标签: variables access-vba global lookup literals

希望我能尽可能准确地理解这个问题 - 但是你会告诉我,我是不是!提前谢谢。

首先,一些背景知识以及我发现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"")不是我修订前的产品!

1 个答案:

答案 0 :(得分:0)

所以......第一个问题是你把每个人都搞糊涂了,你在做什么,发生了什么 - 在哪里![标题]来自???

第二个问题是您无法访问表单或控件属性中的全局变量。

您需要通过代码设置标题。我将对您正在使用的内容以及每个元素的内容做出一些重大猜测,所以让我们从这里开始:

<强>第一
将Caption属性替换为其他内容 - 例如“Caption”。

<强>第二

在循环之后添加此代码 - 我认为这样可行 - 很难真正知道,因为您没有显示此代码的位置以及何时运行

[SwitchBoard].Caption = "" & glProduct & ""