wenn ich in einer Kreuztabellenabfrage die Bedingung auf den Inhalt eines Feldes in einem Formular setze, mag er nicht, auch nicht über den Umweg einer anderen Abfrage. Bei anderen Abfrage-Arten geht das. OK, ist vielleicht zu kompliziert.
Wenn ich die gleiche SQL-Klausel in VBA in ein CreateQueryDef einbinde und so auf ein Formular Bezug nehme geht´s auch nicht; hab ich mir schon gedacht.
Wenn ich vorher einer Variable den Feldinhalt des Formulars zuweise und dann im CreateQueryDef diese Variable als Bedingung nehme, dann funktionierts.
Liegt das an der Jet-Engine, der SQL-Implementation oder an meinen mangelhaften Kenntnissen?
Liegt das an der Jet-Engine, der
SQL-Implementation oder an meinen
mangelhaften Kenntnissen?
Vielleicht an allen drei Punkten? ;=)
Die Kreuztabellen-Abfrage ist ja eine Access-spezifische SQL-Erweiterung mit allen möglichen Einschränkungen. Ich würde die gesamte SQL der Abfrage dynamisch erstellen und nicht innerhalb der Abfrage auf SQL-fremde Konstrukte (wie z.B. Formularfelder) Bezug nehmen. (Der Tipp gilt übrigens nicht nur für Kreuztabellenabfragen…)
Liegt das an der Jet-Engine, der
SQL-Implementation oder an meinen
mangelhaften Kenntnissen?
Vielleicht an allen drei Punkten? ;=)
War ja auch keine exclusive-or Frage
würde die gesamte SQL der Abfrage
dynamisch erstellen
Wie Du weißt, bin ich nicht so doll im Programmieren, ich wurstle mich nur immer so durch, und wenn´s nicht mehr geht, hole ich mir kompetente Hilfe.
…äh, was meinst Du mit „Abfrage dynamisch erstellen“?
Achso, bist Du sicher, daß damit das
Problem umgangen wird?
Ich hatte nur mit
KN = Forms!Adressen!KundenNr
Set qdv = DB.CreateQueryDef("",
"TRANSFORM […] WHERE (((Tab1.KundenNr)
= " & KN & „)) GROUP BY […]“)
Erfolg.
Das ist doch das selbe in Grün - auch so wird die SQL-Eigenschaft des Querydef-Objekts neu gesetzt. Bei deiner Methode musst du halt die Querydef jedes Mal wieder neu erzeugen und weglöschen…
Wenn der Formularbezug im
SQL-Text drinsteht, kommt die gleiche
Fehlermeldung.