2017-01-04 1 views
0

Ich habe ein paar Listenfelder in einem Formular, das ich erstellt habe. Eine der Listboxen hat eine Reihe von Anbieternamen (lst_SupplierName). Nach Auswahl eines Lieferantennamens werden automatisch alle Teilenummern unter diesem Lieferanten in einem anderen Listenfeld (lst_PartNumber) eingetragen.Wie binde ich ein ausgewähltes Element in einem Listenfeld an eine Abfrage (MS Access)?

Ich möchte es noch einen Schritt weiter gehen. Die Teilenummer-Listbox wird jetzt gefüllt Ich möchte eine Teilenummer auswählen und basierend auf dieser Teilenummer eine Abfrage erstellen können, die alle erforderlichen Attribute zu dieser Teilenummer aus der Tabelle enthält, in der sie enthalten ist.

Antwort

1

Make 2 Listen, die erste, die die Lieferantentabelle abfragt, die zweite, die die Teiltabelle abfragt, die den Wert der ersten Liste verwendet, um Teile nur für diesen Lieferanten abzufragen. Hier Beispieltabellen, die ich erstellt:

enter image description here enter image description here

und Form:

enter image description here

Die erste Liste Zeilenquelle ist:

SELECT [tblSuplier].[SupID], [tblSuplier].[SupName] FROM tblSuplier ORDER BY [SupName]; 

Zweite Liste Zeilenquelle ist:

SELECT tblPart.PartID, tblPart.SupID, tblPart.PartName, tblPart.PartDescr FROM tblPart WHERE (((tblPart.SupID)=[Forms]![frmMain]![lstSup])); 

Zur zweiten Liste Update machen, wenn Sie etwas in der ersten Liste auswählen, die Sie benötigen Event hinzufügen ‚nach dem Update‘ auf der ersten Liste:

Private Sub lstSup_AfterUpdate() 

    lstPart.Requery 

End Sub 

Jetzt können Sie nach dem Update-Ereignis verwenden unterschiedliche aufzufüllen Felder auf Formular aus Teileliste auf die gleiche Weise - indem Sie einfach Wert in Felder wie txtDescription = lstPart.column (2 = 3) platzieren.

Wenn Sie Fragen haben, lassen Sie es mich bitte wissen.

+0

Vielen Dank für Ihre sehr detaillierte Antwort. Gibt es eine Möglichkeit, der Zeilenquelle mehrere Anweisungen hinzuzufügen? Ich habe bereits die Zeilenquelle in beiden Listen verwendet. Wenn ich den Lieferantennamen aus der ersten Liste auswähle, füllt er dann die Teilenummer – Motorhead1308

+0

Lieferantenname: SELECT dbo_tblOwners.OwnersID, dbo_tblOwners.SupplierName FROM dbo_tblOwners; Teilenummer: SELECT dbo_tblBufferPWBoeing.BufferID, dbo_tblBufferPWBoeing.PartNumber FROM dbo_tblBufferPWBoeing; – Motorhead1308

+0

Sie können row source on fly ersetzen, gefolgt von einer Liste requery, um Änderungen anzuzeigen. Sie können die Union-Abfrage verwenden, um Daten aus zwei oder mehr verschiedenen Tabellen/Abfragen abzurufen. – Velid

Verwandte Themen