2016-04-04 20 views
0

Ich bin neu bei Access, also könnte dies eine einfache Frage sein.Referenzieren von Listenfeldern in Access

Ich habe ein Formular in Access 2013. Es gibt ein Unterformular, das eine Tabelle von einem SQL-Server anzeigt.

Company Product 
----------------- 
CompanyA Product1 
CompanyA Product2 
CompanyB Product1 
CompanyB Product2 

ListIndex in einem Listenfeld verwenden, kann ich den Index jeder Zeile angezeigt werden ich auf. Wenn ich zum Beispiel auf die zweite Zeile (CompanyA, Product2) klicke, zeigt das Listenfeld einen ListIndex von 1. Wenn ich auf die dritte Zeile klicke, ist der ListIndex 2.

Wie bekomme ich ein Listenfeld zur Anzeige der Wert einer Spalte anstelle des ListIndex?

Ich versuche zu tun, wenn ich auf eine Zeile im Unterformular klicke, möchte ich jeden Spaltenwert für diese Zeile in einem eigenen Listenfeld anzeigen.

Screenshot

Allerdings kann ich nicht scheinen, List als Variable in einer größeren Funktion zu verwenden. Ich habe Folgendes versucht:

  • Geben Sie nur den Spaltennamen in das Listenfeld ein. Aktualisiert den Wert nicht, wenn ich auf eine andere Zeile klicke.
  • Column property aktualisiert den Wert nicht, wenn ich auf eine andere Zeile klicke.
  • Controls property gibt einen Fehler.
  • Value property zeigt die richtige Zeile an, funktioniert aber nur für die erste Spalte.
  • Comboboxen kreisen zurück auf das Problem, dass ich ListIndex als Variable verwenden muss.

Gibt es eine andere Eigenschaft, die ich verwenden sollte? Fehle ich etwas in den Eigenschaften, die ich versuchte?

+0

Während Ihre Frage gut formuliert ist, habe ich wirklich Schwierigkeiten zu verstehen, was Sie versuchen zu tun. Können Sie einen Screenshot des Formulars und den Code hinzufügen, den Sie derzeit für die erste Listbox haben? (Angenommen, ich habe diesen Teil richtig :)) – Andre

+0

@Andre Screenshot wurde hinzugefügt. Das Unterformular heißt '[List3]' und ist genau wie die obige Beispiel-Tabelle aufgebaut. Das erste Listenfeld enthält '= [List3]. [ListIndex]'. – jjjjjjjjjjj

Antwort

1

Es scheint mit Terminologie ein wenig Verwirrung. Ihr List3 ist ein Listenfeld, kein Unterformular.

Die Felder Company und Product aussehen wie Textfelder, aber wenn die ersten die Steuerquelle =[List3].[ListIndex] und zeigt einen Text und keine Nummer hat, so scheint es, ein Listenfeld mit height = einer Zeile zu sein.

Ich schlage vor, Textfelder für Company und Product, mit diesen Steuerquellen:

=[List3] 

für die gebundene Spalte. Alternativ kann für Konsistenz: =[List3].Column(0)

=[List3].Column(1) 

für die zweite Spalte.

Diese Textfelder werden automatisch aktualisiert, wenn Sie auf ein Element in der Listbox klicken.

+0

Es funktioniert, danke! Es scheint, dass ich '[ListIndex]' als Zeilenargument in der Column-Eigenschaft nicht benötigt habe. – jjjjjjjjjjj

+0

Als Follow-up-Frage, wie erlaube ich einem Benutzer, den Wert in der List-Box auch zu bearbeiten, und den Wert in der SQL-Server-Tabelle aktualisieren zu lassen? – jjjjjjjjjjj

+0

@jjjjjjjjjj: Listenfelder dienen nicht zur Bearbeitung ihrer Werte, sie dienen zur Auswahl eines Wertes. Sie benötigen dazu ein separates Formular (oder einfach das Datenblatt). – Andre

0

Um den Wert eines Listbox zu erhalten, und wenn Sie Multi-Select ermöglichen, verwenden Sie das folgende Beispiel:

For Each varItem In Me.lstHierarchy.ItemsSelected   ' Loop through the items selected (if multi-select allowed) 
     strPrint = "" 
     For i = 0 To iCols          ' Loop thru each column in a row 
      strPrint = strPrint & "|" & Me.lstHierarchy.Column(i, varItem) 
     Next i 
     Debug.Print "Selected Value: " & strPrint    ' Display the row; columns are delimited with '|' 
    Next 
+0

Wohin würde dieser Code gehen? – jjjjjjjjjjj

+0

Mein ursprüngliches Verständnis von dem, was Sie geschrieben haben, ist, dass Ihre Listbox momentan Werte anzeigt (CompanyA, Product1); Ich nehme an, seit Sie die Eigenschaft 'ListIndex' verwendet haben, haben Sie wahrscheinlich das mit VBA-Code gemacht. Aber jetzt, wo Sie das Problem geklärt haben, können Sie meine Antwort ignorieren. Ich habe Ihnen gezeigt, wie Sie die ausgewählten Werte in einer Listbox mit VBA-Code abrufen können ... was Sie im Click-Event für Ihre Listbox hätten tun können. –

Verwandte Themen