A07: Temporäre Tabelle, komplexe Abfrage

07/10/2008 - 12:46 von Toni Strnad | Report spam
Hallo Ihr Lieben!

Ich habe ein Listenfeld (Liste2), das über eine sehr komplexe Abfrage mit
Zahlungsdaten (z.B. ab 01.01.2008) gefüllt wird. Der Anwender soll nun die
Möglichkeit haben, durch Eingabe eines Datums in ein Formularfeld , die
Anzeige auf Daten ab 01.05.2008 zu beschrànken.

Ich habe versucht die Abfrage mit einer Funktion ">=fct_abfDat()" zu
erweitern und die Abfrage nach Eingabe des ab-Datums nochmals auszuführen.
Dann Liste2.Requery und es sollte passen. Leider ist die Abfrage so komplex,
dass ich
das nicht hinbekomme.

Nun möchte ich eine temporàre Tabelle erstellen, die mit den entsprechenden
Daten
des Listenfeldes (Liste2) füllen und das Listenfeld (Liste2) mit den Daten
aus der
temporàren Tabelle anzeigen.

Wie kann ich das realisieren?
Oder kann mir vielleicht jemand helfen die "komplexe" Abfrage und die
Datumsfunktion zu erweitern?

Der SQL-String der derzeitigen Abfrage:

SELECT Datev.BuchDat, Datev.Buchungstext, Datev.Betrag,
Datev.Zahlungspflichtiger, Datev.BLZ, Datev.KontoNr, Datev.VZ1, Datev.VZ2,
Datev.VZ3, Datev.Zusatz
FROM Datev
WHERE (((Datev.Buchungstext)="SDIREKT-EINZUGSAUFTRAG" Or
(Datev.Buchungstext)="RUECKBELASTUNG" Or
(Datev.Buchungstext)="UEBERWEISUNGSGUTSCHRIFT") AND
((Datev.Zahlungspflichtiger) Like ("*" & [forms]![frmkundbearb]![KName] &
"*")) AND ((Datev.BLZ)=[forms]![frmkundbearb]![BLZ]) AND ((Datev.KontoNr)
Like ([forms]![frmkundbearb]![KontoNr] & "*")))
OR (((Datev.Buchungstext)="SDIREKT-EINZUGSAUFTRAG" Or
(Datev.Buchungstext)="RUECKBELASTUNG" Or
(Datev.Buchungstext)="UEBERWEISUNGSGUTSCHRIFT") AND
((Datev.Zahlungspflichtiger) Like ("*" &
[forms]![frmkundbearb]![KontoInhName] & "*")) AND
((Datev.BLZ)=[forms]![frmkundbearb]![BLZ]) AND ((Datev.KontoNr) Like
([forms]![frmkundbearb]![KontoNr] & "*")))
OR (((Datev.Buchungstext)="SDIREKT-EINZUGSAUFTRAG" Or
(Datev.Buchungstext)="RUECKBELASTUNG" Or
(Datev.Buchungstext)="UEBERWEISUNGSGUTSCHRIFT") AND
((Datev.BLZ)=[forms]![frmkundbearb]![BLZ]) AND ((Datev.KontoNr) Like
([forms]![frmkundbearb]![KontoNr] & "*")))
OR (((Datev.Buchungstext)="DAUERAUFTRAG" AND ((Datev.Betrag)>0)) AND
((Datev.Zahlungspflichtiger) Like ("*" & [forms]![frmkundbearb]![KName] &
"*") AND (([forms]![frmkundbearb]![Zahlart])="BÜ")))
OR (((Datev.VZ1) Like ("*" & [forms]![frmkundbearb]![KName] & "*")) AND
((Datev.VZ1) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")))
OR (((Datev.VZ1) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")) AND
((Datev.VZ2) Like ("*" & [forms]![frmkundbearb]![KName] & "*")))
OR (((Datev.VZ1) Like ("*" & [forms]![frmkundbearb]![KName] & "*")) AND
((Datev.VZ2) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")))
OR (((Datev.VZ1) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")) AND
((Datev.VZ2) Like ("*" & [forms]![frmkundbearb]![KName] & "*")))
OR (((Datev.VZ2) Like ("*" & [forms]![frmkundbearb]![KName] & "*")) AND
((Datev.VZ2) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")))
OR (((Datev.VZ2) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")) AND
((Datev.VZ2) Like ("*" & [forms]![frmkundbearb]![Kname] & "*")))
OR (((Datev.VZ2) Like ("*" & [forms]![frmkundbearb]![KName] & "*")) AND
((Datev.VZ3) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")))
OR (((Datev.VZ2) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")) AND
((Datev.VZ3) Like ("*" & [forms]![frmkundbearb]![KName] & "*")))
OR (((Datev.VZ3) Like ("*" & [forms]![frmkundbearb]![KName] & "*")) AND
((Datev.VZ3) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")))
OR (((Datev.VZ3) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")) AND
((Datev.VZ3) Like ("*" & [forms]![frmkundbearb]![Kname] & "*")))
OR (((Datev.VZ3) Like ("*" & [forms]![frmkundbearb]![KName] & "*")) AND
((Datev.VZ4) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")))
OR (((Datev.VZ3) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")) AND
((Datev.VZ4) Like ("*" & [forms]![frmkundbearb]![KName] & "*")))
OR (((Datev.VZ4) Like ("*" & [forms]![frmkundbearb]![KName] & "*")) AND
((Datev.VZ4) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")))
OR (((Datev.VZ4) Like ("*" & [forms]![frmkundbearb]![Vorname] & "*")) AND
((Datev.VZ4) Like ("*" & [forms]![frmkundbearb]![Kname] & "*")))
UNION ALL SELECT Bareinzahlung.BuchDat, Bareinzahlung.Buchungstext,
Bareinzahlung.Betrag, Bareinzahlung.Zahlungspflichtiger, Bareinzahlung.BLZ,
Bareinzahlung.KontoNr, Bareinzahlung.VZ1, Bareinzahlung.VZ2,
Bareinzahlung.VZ3, Bareinzahlung.Zusatz
FROM Bareinzahlung Where (Bareinzahlung.KundID =
[forms]![frmkundbearb]![Kunden-ID])
ORDER BY Datev.BuchDat, Datev.Betrag DESC;

Ich bedanke mich im Voraus für jede Hilfe!

Grüsse aus Erkelenz
Toni
 

Lesen sie die antworten

#1 Karl Donaubauer
07/10/2008 - 13:02 | Warnen spam
Toni Strnad wrote:
Ich habe ein Listenfeld (Liste2), das über eine sehr komplexe Abfrage mit
Zahlungsdaten (z.B. ab 01.01.2008) gefüllt wird. Der Anwender soll nun die
Möglichkeit haben, durch Eingabe eines Datums in ein Formularfeld , die
Anzeige auf Daten ab 01.05.2008 zu beschrànken.

Ich habe versucht die Abfrage mit einer Funktion ">=fct_abfDat()" zu
erweitern und die Abfrage nach Eingabe des ab-Datums nochmals auszuführen.
Dann Liste2.Requery und es sollte passen. Leider ist die Abfrage so
komplex, dass ich das nicht hinbekomme.

Nun möchte ich eine temporàre Tabelle erstellen, die mit den
entsprechenden Daten
des Listenfeldes (Liste2) füllen und das Listenfeld (Liste2) mit den Daten
aus der temporàren Tabelle anzeigen.

Wie kann ich das realisieren?
Oder kann mir vielleicht jemand helfen die "komplexe" Abfrage und die
Datumsfunktion zu erweitern?

Der SQL-String der derzeitigen Abfrage:
...



*SQL-String einer UNION-Abfrage mit WHERE-Monster gesnipt*

Wie wàr's damit, die 2 Teilabfragen der UNION-Abfrage getrennt
zu speichern? Dann könntest du dein neues Kriterium in der
hoffentlich halbwegs übersichtlichen Entwurfsansicht der ersten
Abfrage hinzufügen. In der UNION schreibst du dann nur:

SELECT * FROM Abfrage1
UNON ALL
SELECT * FROM Abfrage2

+ evtl. ein ORDERBY, falls das nicht passt.

HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com, jetzt mit Anmeldung und Info
zur Access-Entwickler-Konferenz (AEK11), Oktober 2008, Nürnberg

Ähnliche fragen