2016-07-12 20 views
0

Hoffentlich werde ich diese Frage so präzise und verständlich wie möglich machen - aber Sie werden mir sagen, wenn ich es nicht tue! Danke im Voraus.Globale Variable Lookup

Erstens, ein wenig Hintergrund und was ich gefunden habe, funktioniert, dann auf eine kleine Veränderung, die ich nicht zur Arbeit bekommen kann. Anstatt den gesamten Code zu verwenden, habe ich Schnipsel verwendet, die genügend Informationen enthalten sollten, damit Sie verstehen, dass ich die Dinge zuerst richtig initiiert habe.

Ich benutze ein Menüsystem (eine Turbo-Version der ursprünglichen MS), die zusätzliche Felder enthält, um Informationen zu speichern, die erforderlich sind, um Änderungen vorzunehmen, je nachdem, welche Formulierung der Benutzer verwenden möchte, damit ich ein Feld Produkt nennen kann. während ein Benutzer es möglicherweise Waren oder Gegenstände oder Sachen oder was immer er wünscht nennen möchte! Also speichere ich die Benutzereinstellungen in einer separaten Tabelle (wir nennen das tblWORDS). Wenn das Menü ausgefüllt ist (denken Sie daran, dass es in ähnlicher Weise wie das Standard-SwitchBoard funktioniert) mit den Daten aus Feldern: ItemText, Command & Argument das Menü zeigt normalerweise den Text von ItemText, den ich verwende. Aber ich habe ein neues Feld mit dem Namen CAPTION in der Tabelle SWITCHBOARD hinzugefügt, weil der VBA-Code das Formatieren der Beschriftungen nicht erlaubt, wie ich sie möchte. Wenn der VBA-Code ItemText für das Label aus dem Recordset liest, wird ein | (pipe), dann sucht mein hinzugefügter VBA-Code nach dem Feld Caption nach einer Zeichenkette. Hoffentlich genug Hintergrundinfo !! ?? .

[Switchboard] [Bildunterschrift] enthielt ursprünglich die folgenden: (alles inklusive)
"" & dlookup ("fldProduct", "tblWORDS") & ""

Das funktionierte perfekt !! Aber ...

Anstatt jedes Mal, wenn ich das WORD brauche, eine Suche durchzuführen, entschied ich GLOBAL VARIABLES zu erstellen, also habe ich eine globale Variable von glProduct, die das Wort aus der Tabelle tblWORDS korrekt erhält und gut behält . Dies ist dann während der gesamten Sitzung verfügbar.

ich die Zeichenfolge ersetzt haben über die globale Variable zu lesen, anstatt eine Lookup jedes Mal durchzuführen, um: (wieder, alles inklusive)
„“ & glProduct & „“

Also, mein Code ist als folgt:

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 

überarbeitet:

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 

Was IS angezeigt wird, ist der Literal String wie eingegeben ("" _glProduct "") Produkt nicht wie vor meiner Überarbeitung!

+0

OK, also weiß ich nicht, wie man ein lesbares Layout für den Code erstellt - ich habe es mit Tabs, Abständen eingegeben und alles sah großartig aus, bis es veröffentlicht wurde !! Warum können Websites Ihre Tabs, Abstände usw. nicht respektieren? Ich weiß, es wird eine einfache Veränderung sein, aber warum sollte es schmerzhaft sein? – TimesMoney

+0

Hallo, Sorry Jungs !! Wenn alles andere fehlschlägt, lesen Sie die Anweisungen und ich gehe durch die Bearbeitung alles und Jonhopkins machte es schön - Danke dafür. So sah es aus, als ich es ursprünglich eingefügt habe !! – TimesMoney

+0

Kein Problem. Ich hatte auch am Anfang Probleme damit. Der Trick besteht aus 4 Leerzeichen vor jeder Codezeile und zwischen dem Code und einem normalen Text befindet sich eine Leerzeile. Wie Andre schon erwähnt hat, ist es ein schneller Weg, um die Leerzeichen zu bekommen, indem man den Code auswählt und Strg + K drückt, oder auf den Knopf oben im Eingabefeld, das wie folgt aussieht, schreibt: '{}'. Wenn Sie einen separaten Absatz möchten, ist eine leere Zeile zwischen den Absätzen ein bisschen schöner als zwei Leerzeichen am Ende der Zeile. – jonhopkins

Antwort

0

Also ... das erste Problem ist, dass du jeden damit verwechselst, was du tust und wo es passiert - woher kommt rs! [Caption] ???

Das zweite Problem besteht darin, dass Sie nicht auf globale Variablen in Ihren Formular- oder Steuerelementeigenschaften zugreifen können.

Sie müssen die Beschriftung über Code festlegen. Ich werde einige große Vermutungen, machen, was Sie verwenden und was jedes Element ist, also lassen Sie uns hier beginnen:

Erste
die Caption-Eigenschaft mit etwas ersetzen andere - nur „Caption“ zum Beispiel .

Zweite

diesen Code nach der Schleife hinzufügen - ich denke, das wird funktionieren - schwer, wirklich wissen, weil man nicht zeigen, wo dieser Code ist, und wenn es läuft

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

OK, ich weiß das Feedback zu schätzen und werde eine neue db mit all dem benötigten Code erstellen, aber es dauert ein paar Tage, wenn ich weg bin, aber es ist vielleicht am besten, diese Frage zu schließen und eine neue zu starten. Da der allgemeine Konsens darauf hindeutet, dass ich das Problem bin, muss ich es erneut versuchen. Ich habe verstanden, dass es verworren und verwirrend ist; ohne Angabe, wie oder wo der Code ausgeführt wird. Ich werde ein kleines accdb erstellen und es irgendwo veröffentlichen - kann ich Dateien auf SO hochladen? Vielen Dank für die Jungs, sehr geschätzt. – TimesMoney