[Access] Kreuztabelle / SQL

Hallo,

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?

Martin

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

Reinhard

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“?

…äh, was meinst Du mit „Abfrage
dynamisch erstellen“?

Na, so etwas wie:

CurrentDB.QueryDefs(„MeineAbfrage“).SQL = Wasauchimmer

Reinhard

CurrentDB.QueryDefs(„MeineAbfrage“).SQL = Wasauchimmer

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. Wenn der Formularbezug im SQL-Text drinsteht, kommt die gleiche Fehlermeldung.

Vielen Dank

CurrentDB.QueryDefs(„MeineAbfrage“).SQL = Wasauchimmer

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.

Mein Reden - Formularbezüge sollte man vermeiden…

Reinhard