Discussion:
SQL im Ausdrucks-Generator
(zu alt für eine Antwort)
Kai Lippok
2006-07-25 12:06:49 UTC
Permalink
Hallo,

ich möchte ein Formular in eine Excel-Tabelle exportieren. Hierfür
verwende ich "DoCmd.OutputTo acOutputForm, "formular", acFormatXLS,
Pfad, True". Das klappt auch soweit, nur werden ungebundene Felder,
deren Inhalt ich via VB beim Anzeigen des Formulars festlege, nicht
richtig exportiert (es steht bei allen Datensätzen immer der Wert des
ersten).

Nun ist meine Idee, den kleinen Code aus VB direkt mit Hilfe des
Ausdrucks-Generators dem Feld zuzuordnen. Wenn ich

=(SELECT tbl_continent.name FROM tbl_continent INNER JOIN (tbl_country
INNER JOIN tbl_airport ON tbl_country.id_country =
tbl_airport.id_country) ON tbl_continent.id_continent =
tbl_country.id_continent WHERE
(((tbl_airport.id_airport)=[Formulare]![formular]![Text162]));)

im Ausdrucks-Generator eingebe, steht im Feld immer nur #Name? -
selbiges passiert auch, wenn ich den SQL-Teil in eine Access-Abfrage
stecke und im Ausdrucksgenerator die Abrage auswähle. Die Abfrage
alleine funktioniert.

Liegt es evtl. daran, dass das Resultset theoretisch mehr als ein
Ergebnis zurückliefern könnte?

Danke für jede Hilfe,

Kai
Doerthe Weber
2006-07-25 12:38:40 UTC
Permalink
Hallo Kai,
Post by Kai Lippok
Hallo,
ich möchte ein Formular in eine Excel-Tabelle exportieren. Hierfür
verwende ich "DoCmd.OutputTo acOutputForm, "formular", acFormatXLS,
Pfad, True". Das klappt auch soweit, nur werden ungebundene Felder,
deren Inhalt ich via VB beim Anzeigen des Formulars festlege, nicht
richtig exportiert (es steht bei allen Datensätzen immer der Wert des
ersten).
Nun ist meine Idee, den kleinen Code aus VB direkt mit Hilfe des
Ausdrucks-Generators dem Feld zuzuordnen. Wenn ich
=(SELECT tbl_continent.name FROM tbl_continent INNER JOIN (tbl_country
INNER JOIN tbl_airport ON tbl_country.id_country =
tbl_airport.id_country) ON tbl_continent.id_continent =
tbl_country.id_continent WHERE
(((tbl_airport.id_airport)=[Formulare]![formular]![Text162]));)
im Ausdrucks-Generator eingebe, steht im Feld immer nur #Name? -
selbiges passiert auch, wenn ich den SQL-Teil in eine Access-Abfrage
stecke und im Ausdrucksgenerator die Abrage auswähle. Die Abfrage
alleine funktioniert.
Das liegt ganz einfach daran, dass ein Formularfeld kein SQL kann...
Ein Ansatz wäre es, das ganze einem DLookup als Argument zu übergeben,
eleganter wäre allerdings, wenn Du das Feld schon direkt in einer
Abfrage in der Datenherkunft des Formulars berechnen würdest.

Gruß
Doerthe


Übrigens: falls da tatsächlich ein Formularfeld "Text162" heißt, machst
Du Dir das Leben auf Dauer unnötig schwer, "sprechende" Namen sind den
Aufwand immer Wert....
Kai Lippok
2006-07-25 20:52:53 UTC
Permalink
Post by Doerthe Weber
Das liegt ganz einfach daran, dass ein Formularfeld kein SQL kann...
Ein Ansatz wäre es, das ganze einem DLookup als Argument zu übergeben,
eleganter wäre allerdings, wenn Du das Feld schon direkt in einer
Abfrage in der Datenherkunft des Formulars berechnen würdest.
Ich habe das nun mit der Datenherkunft des Formulars gelöst - vielen
Dank für den Tip. Wo genau würde ich den DLookup integrieren?
Post by Doerthe Weber
Übrigens: falls da tatsächlich ein Formularfeld "Text162" heißt, machst
Du Dir das Leben auf Dauer unnötig schwer, "sprechende" Namen sind den
Aufwand immer Wert....
Ordnung ist das halbe Leben... nur ist Chaos eben die andere Hälfte :-D

Gruß,

Kai
Doerthe Weber
2006-07-26 05:35:02 UTC
Permalink
Hallo Kai,
Post by Kai Lippok
Post by Doerthe Weber
Das liegt ganz einfach daran, dass ein Formularfeld kein SQL kann...
Ein Ansatz wäre es, das ganze einem DLookup als Argument zu übergeben,
eleganter wäre allerdings, wenn Du das Feld schon direkt in einer
Abfrage in der Datenherkunft des Formulars berechnen würdest.
Ich habe das nun mit der Datenherkunft des Formulars gelöst - vielen
Dank für den Tip. Wo genau würde ich den DLookup integrieren?
So dass Du im Formularfeld so etwas wie
=DLookup("[Artikelname]", "Artikel", "[Artikel-Nr] =" _
& Formulare![Bestelldetails]![Artikel-Nr])
stehen hast (das ist jetzt übrigens eine direkte Kopie aus der
Onlinehilfe ;-))
Aber es in der Datenherkunft zu machen ist immer die elegantere und vor
allem schnellere Variante.
Post by Kai Lippok
Post by Doerthe Weber
Übrigens: falls da tatsächlich ein Formularfeld "Text162" heißt,
machst Du Dir das Leben auf Dauer unnötig schwer, "sprechende" Namen
sind den Aufwand immer Wert....
Ordnung ist das halbe Leben... nur ist Chaos eben die andere Hälfte :-D
Das gilt für meinen Schreibtisch jederzeit, aber nicht für meine
Software :-)

Gruß
Doerthe

Loading...