Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: gilles_de_rais am Oktober 25, 2017, 11:17:54

Titel: Eine Auswahlabfrage kann nicht durchgeführt werden
Beitrag von: gilles_de_rais am Oktober 25, 2017, 11:17:54
Hallo zusammen!
Ich habe voneinander abhängige Kombi- und Listenfelder gebastelt. Ich hatte das zugehörige Formular für alte Datensätze gesperrt, woraufhin die Liste sich mit den Kombifeldern zwar filtern ließ, aber entsprechende Einträge auch nicht mehr angewählt werden konnten. Deswegen hatte ich die Liste in ein Ufo gebastelt, die dann natürlich dann natürlich in seiner Funktion auch recht beschränkt blieb.

Also alles wieder zurück gebaut, mit dem Ergebnis, dass aus irgendeinem Grund die Filterung auch nicht mehr funktionierte.
Jetzt geht alles wieder. Mit folgendem Code:

Private Sub cmbMatArt_AfterUpdate()
strSQL = " SELECT tblMaterial.mat_ID, tblMaterial.mat_name, tblMaterial.mat_nummer " & _
         " FROM tblMaterial WHERE tblMaterial.mat_art = '" & Me!cmbMatArt & "'" & _
         " AND tblMaterial.mat_fahrzeug = " & Nz(Me.cmbMatFahr) & _
         " ORDER BY tblMaterial.mat_name"

lstMaterial.RowSourceType = "Table/Query"
lstMaterial.RowSource = strSQL

CurrentDb.Execute strSQL, 128
'Debug.Print strSQL
MsgBox strSQL
'Me.cmbMatArt = Null
EnableControls
End Sub


Kurioserweise erhalte ich eine Fehlermeldung, wenn ich CurrentDb.Execute strSQL, 128

im Code aktiviert lasse. Demnach ist eine Auswahlabfrage angeblich nicht möglich.

Laufzeitfehler '3065':
Eine Auswahlabfrage kann nicht durchgeführt werden.


Lasse ich die Zeile jedoch einfach komplett weg, funktioniert alles wie es soll. Kann mir jemand sagen, wieso dies so ist?

VG,
Dennis

EDIT: Hat sich erledigt. Liegt wohl daran, dass strSQL bereits weiter oben ausgeführt wird und dies via CurrentDb.Execute an dieser Stelle falsch und vor allem nicht notwendig ist.
Sorry!
Titel: Re: Eine Auswahlabfrage kann nicht durchgeführt werden
Beitrag von: MzKlMu am Oktober 25, 2017, 11:33:06
Hallo,
die Zeile mit Execute ist ersatzlos überflüssig. Der Befehl ist nur für Aktionsabfragen zulässig (Anfüge, Aktualisierung, Tabellenerstellung). Bei gewöhnlichen Auswahlabfragen geht das nicht.
Die Auswahlabfrage wird mit RowSource zugewiesen, das reicht.

Nachtrag, Du hast es ja selbst gemerkt, habe ich gerade gesehen.
Titel: Re: Eine Auswahlabfrage kann nicht durchgeführt werden
Beitrag von: gilles_de_rais am Oktober 25, 2017, 11:43:50
Hallo,
ja, kurz nachdem ich den Foreneintrag verfasst habe, ist es mir wie Schuppen von den Augen gefallen. Ganz umsonst war mein Beitrag dann ja aber vielleicht nicht, wenn er das eigene Denkvermögen anregt. Und möglicherweise hat ja irgendwann ein blutiger Anfänger wie ich ein ähnliches Problem :)
Titel: Re: Eine Auswahlabfrage kann nicht durchgeführt werden
Beitrag von: Lachtaube am Oktober 25, 2017, 12:13:46
Du kannst in der Abfrage auf den Tabellenpräfix bei den Feldern verzichten - es gibt ja keine Mehrdeutigkeit. Und Nz(Me.cmbMatFahr) bei einem Zahlenfeld ist gaaaaanz schlecht, falls dann doch einmal ein Null-Wert vorhanden ist, hagelt es einen Fehler. Nz(Me.cmbMatFahr, 0) oder Nz(Me.cmbMatFahr, -1) wäre besser.
Titel: Re: Eine Auswahlabfrage kann nicht durchgeführt werden
Beitrag von: gilles_de_rais am Oktober 25, 2017, 13:15:09
Hallo,
cmdMatFahr hat die Datensatzherkunft

SELECT fahr_ID, fahr_typ FROM tblFahrzeug;

wobei fahr_typ ein Textfeld darstellt. Ich hatte zuvor den Code in dieser Art '" & Me!cmbMatFahr & "'" angewandt. Das hat aber leider nicht funktioniert. Ich baue Deine Hinweise direkt mal ein. Vielen Dank für den Hinweis!
Titel: Re: Eine Auswahlabfrage kann nicht durchgeführt werden
Beitrag von: Beaker s.a. am Oktober 26, 2017, 12:40:07
Hallo Gilles,
Zitatwobei fahr_typ ein Textfeld darstellt.
Das ist aber nicht die gebundene Spalte, - oder?
gruss ekkehard