2017-07-13 4 views
0

Ich muss eine Listbox in Access aktualisieren, die Daten anzeigt, die durch Eingabe aus einer Combobox gefiltert wurden. Die Combobox hat drei Spalten:Access-Query für Daten in der Listbox

ID Tipo di prodotto
Tipo di Prodotto
ID Categoria

Die erste ist die, die ich für den Filter benötigen, die zweite ist nur der Text angezeigt, die dritte Ich werde es später benutzen.

Mein Code ist folgende:

Private Sub Prodtypelistcb_AfterUpdate() 
Dim myquery As String 
myquery = "SELECT Prodotto.[ID Prodotto], Prodotto.[Nome prodotto],Prodotto.[ID Tipodiprodotto]" & _ 
"FROM Prodotto WHERE (Prodotto.[ID Tipodiprodotto]=Maschere!Brand!Prodtypelistcb.Value)" 

Me.Brandprodel.Visible = True 
Me.Brandprodel.RowSource = myquery 
Me.Brandprodel.Requery 

End Sub 

prodtypelistcb ist die Combobox als Eingabeaktion aktualisiert werden und Brandprodel ist die Listbox nach der Aktion aktualisiert werden. Wenn ich WHERE = 1 setze, funktioniert alles so, dass der Code ohne die Abfrage in Ordnung sein sollte.

Nichts passiert mit diesem. Wo liege ich falsch?

UPDATE

Wenn ich den Wert auf der Combobox und gehen für eine reine Abfrage mit Zugriffsschnittstelle gesetzt, zeigt es, was ich brauche. Das Problem könnte also darin liegen, den Combobox-Wert nach der Aktualisierung abzurufen, kann aber nicht nachvollziehen, warum.

Antwort

1

Ich glaube, das Problem ist in der SQL.

Dim myquery As String 
    myquery = "SELECT [ID Prodotto], [Nome prodotto], [ID Tipodiprodotto] " & _ 
       "FROM Prodotto WHERE [ID Tipodiprodotto] = " & _ 
       Me!Prodtypelistcb.Column(1) 
+0

Es funktioniert dank. Jedenfalls verstehe ich nicht, warum die Abfrage, die ich zuvor verwendet habe, funktioniert, wenn sie in den Zugriffsabfragegenerator verwendet wird und nicht funktioniert, wenn sie in VBA geschrieben ist. – nearchos

+0

Eine Access-Abfrage weiß 'Maschere! Brand! Prodtypelistcb.Value' ist ein Steuerelement, aber VBA denkt, dass es nur ein String-Wert ist, da es in" "-Anführungszeichen eingeschlossen ist. –