2016-04-08 11 views
0

Hier ist meine Situation:MS Access: Nachschlagewerte für String-basierte Mehrwertfeld

  • verknüpfte Tabelle (so kann ich nicht wirklich die Spalte Config ändern) eine Spalte mit einer durch Kommata getrennte Liste von Werten. Dies ist eine Textzeichenfolge - kein echtes mehrwertiges Feld.
  • Ich brauche diese Werte zu einer Lookup-Tabelle abzubilden und eine durch Kommata getrennte Liste zurück auf die Nachschlag unter Verwendung von Werten

ist so sagen wir eine Reihe der Werte hat: A, B, C in dieser Spalte. Die Abbildungstabelle mappt: A | 1, B | 2, C | 3. Die resultierende Spalte in meiner Abfrage sollte 1,2,3 (die zugeordneten Werte) auflisten.

Ich kann eine Spalte in meiner Abfrage hinzufügen, geben Sie an, das Anzeigesteuerelement ist Kombinationsfeld (was Sie normalerweise für ein mehrwertiges Feld tun würden), wählen Sie meine Zeilenquelle und binden Sie die Spalten - aber nur Zeilen mit einem einzelnen Optionswert wird korrekt zugeordnet. Wenn es eine durch Kommas getrennte Liste hat, wie im obigen Beispiel, werden die Werte nicht zugeordnet. Wie würde ich über diese Zuordnung gehen?

+0

Bitte bearbeiten Sie Ihre Frage zur Klärung: Ist die Quellspalte ein einfaches Textfeld mit einer durch Kommas getrennten Zeichenkette oder ist sie ein mehrwertiges Feld (wie vom "Lookup Wizard" in Access erstellt)? –

+0

Textzeichenfolge. Ich habe die Beschreibung bearbeitet. – lcdservices

+0

Ich habe eine Abfrage, in der ich die Zeichenfolge "1,2,3" wie von den Werten "A, B, C" in einer Tabellenspalte zugeordnet ausgeben möchte. – lcdservices

Antwort

1

Um solche Ergebnisse anzuzeigen, benötigen Sie eine VBA-Funktion.

Der Code würde wie folgt aussehen:

Public Function TransComma(MyList As Variant) As String 

    Dim TransList  As Variant 
    Dim Token   As Variant 
    Dim result   As String 

    If IsNull(MyList) = False Then 
     TransList = Split(MyList, ",") 
     For Each Token In TransList 
     If result <> "" Then result = result & "," 
     result = result & DLookup("Color", "tblColors", "ID = " & Trim(Token)) 
    Next Token 
    TransComma = result 
    End If 

End Function 

Der obige Code ist in einem Standard-Code-Modul platziert werden.

nun in einem Formular können Sie ein Textfeld platzieren, und stellen Sie die Steuerquelle auf diese

=(TransComma([name of field])) 

Und für einen Bericht oder SQL-Abfrage, einfach gehen:

Select firstName, LastName, ColorList, TransComma([ColorList) 
as translated from tblCustomers 

So einmal Sie erstellen diese Übersetzungsfunktion, sie kann verwendet werden, um die Zahlen in einen Text zu übersetzen.