Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Eine Auswahlabfrage kann nicht durchgeführt werden

Begonnen von gilles_de_rais, Oktober 25, 2017, 11:17:54

⏪ vorheriges - nächstes ⏩

gilles_de_rais

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!

MzKlMu

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.
Gruß Klaus

gilles_de_rais

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 :)

Lachtaube

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.
Grüße von der (⌒▽⌒)

gilles_de_rais

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!

Beaker s.a.

Hallo Gilles,
Zitatwobei fahr_typ ein Textfeld darstellt.
Das ist aber nicht die gebundene Spalte, - oder?
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)