2016-07-12 24 views
0

うまくいけば、この質問を可能な限り正確かつ理解できるようにしたいと思います。前もって感謝します。グローバル変数ルックアップ

まず、小さな背景と私が見つけたことが働いてから、私は仕事に出られない小さな変化に就きます。コード全体を使用するのではなく、私が物事を正しく開始したことを理解するのに十分な情報を与えるスニペットを使用しました。

私は、ユーザーが使用したい文言に応じて変更するために必要な情報を格納するための追加フィールドを持つメニューシステム(ターボチャージバージョンの元のMSバージョン)を使用しているため、一方、ユーザは、それを「Goods」または「Items」または「Stuff」と呼ぶことができる。だから、私は別のテーブルにユーザーの設定を保存します(私たちはそれをtblWORDSと呼んでいます)。 ItemText、Command &引数このメニューは、通常、私が使用するItemTextからのテキストを表示します。引数は次のとおりです。しかし、VBAコードではラベルを書式設定することができないため、SWITCHBOARDテーブルにCAPTIONという新しいフィールドを追加しました。したがって、VBAコードは、レコードセットからLabelのItemTextを読み込み、| (パイプ)、私の追加されたVBAコードは、文字列のフィールドCaptionを探します。うまくいけば、十分な背景情報!!

[配電盤] [キャプション]は元々以下含まれる:これは完全に働いた(EVERYTHING含む)
"" &の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 

何表示されているISは、私のリビジョン以前の製品ではなく、入力されたリテラル文字列( "" _glProduct "")です。

+0

[OK]を実行したときに表示されませんので、だから私はコードのための読みやすいレイアウトを作成する方法を知りません - 私はタブで間隔を入力し、すべてが公開されるまでそれは素晴らしい見えた!サイトがあなたのタブやスペースなどを尊重することができないのはなぜですか?私はそれが簡単な変更になることに気づきますが、なぜそれを痛ましいものにしますか? – TimesMoney

+0

こんにちは、ごめんなさい!他のすべてが指示を読んで失敗した場合、私はそれをすべて編集し、jonhopkinsはそれを美しくしました。もともと貼り付けたときのような感じでした!! – TimesMoney

+0

問題ありません。私は最初もそれに問題があった。このトリックは、コードの各行の前に4つのスペースがあり、コードと通常のテキストの間に空の行があります。 Andreが言及したように、スペースを取得する簡単な方法は、コードを選択してCtrl + Kを押すか、入力ボックスの上部にある{{} 'のようなボタンをクリックすることです。別の段落が必要な場合は、段落間の空白行が行末の2つの空白よりも少し良いです。 – jonhopkins

答えて

0

だから最初の問題は、あなたがしていること、起こっていることをみんなに混乱させているということです。

第2の問題は、フォームまたはコントロールのプロパティでグローバル変数にアクセスできないことです。

キャプションはコードで設定する必要があります。 - ちょうど「キャプション」は、例えば

はまず
は何か他のものとCaptionプロパティを置き換えます。私は、各要素が何であるか、あなたが使用していて、何についてのいくつかの大きな推測を行い、それでは、ここから始めてみましょうするつもりです。

セカンド

はあなたのループの後にこのコードを追加します - 私はそれが動作すると思います - 本当に知っているのは難しい、このコードがどこにあるか、それは

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

OK、フィードバックに感謝し、すべてのコードが必要な新鮮なデータベースを作成しますが、私が離れているので数日かかるでしょうが、この質問を閉じて新しいものを開始するのが最善かもしれません。一般的な合意が私が問題であると思われるように、私はもう一度試してみる必要があります。私はそれが畳み込まれて混乱していることを乗り越えました。コードがどのように、どこで実行されているかは示されません。私は小さなaccdbを作成し、どこかに投稿します - ファイルをSOにアップロードできますか?試してみてくれてありがとう、大変感謝しています。 – TimesMoney