Neuigkeiten:

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

Mobiles Hauptmenü

Zwei Parameterabfragen in einer query

Begonnen von Scoopman, Oktober 18, 2010, 14:09:10

⏪ vorheriges - nächstes ⏩

Scoopman

Hallo zusammen,

ich habe zwei Tabellen in denen jeweils die täglichen Lieferungen eingetragen werden.
tblNW und tblWF.
Nun muss ich prüfen ob wir zum einen, alles was in tblNW eingetragen wurde auch in tblWF wiederfinden, und umgekehrt.
Ich sollte vielleicht erwähnen das tblWF der Report aus einem System ist den wir täglich bekommen. In der Tabelle sind alle Lieferungen chronologisch abgespeichert.
Ich habe nun zwei Abfragen die folgendermaßen aussehen:

SELECT DISTINCT tblNW.Eingangsdatum, tblNW.Lieferant, tblWF.[Lieferant], tblWF.LIEFERDATUM
FROM (tblWF RIGHT JOIN tblNW ON (tblWF.LIEFERANT = tblNW.Lieferanten_ID) AND (tblWF.LIEFERDATUM = tblNW.Eingangsdatum)) INNER JOIN tblLieferanten ON tblNW.SFID = tblLieferanten.SFID
WHERE (((tblNW.Eingangsdatum) In (SELECT Lieferdatum FROM tblWF  WHERE LIEFERDATUM=[Datum] )) AND ((tblWF.[Lieferant]) Is Null));
Hier gibt es noch eine dritte Tabelle (tblLieferanten).


Die zweite Abfrage fragt die andere Richtung ab.

SELECT DISTINCT tblWF.LIEFERDATUM, tblWF.LIEFERANT, tblWF.[Lieferant], tblNW.Lieferant, tblNW.Eingangsdatum
FROM tblNW RIGHT JOIN tblWF ON (tblNW.Eingangsdatum=tblWF.LIEFERDATUM) AND (tblNW.Lieferanten_ID=tblWF.LIEFERANT)
WHERE (((tblWF.LIEFERDATUM) In (SELECT Eingangsdatum FROM tblNW  WHERE Eingangsdatum =[Datum] )) AND ((tblNW.Lieferant) Is Null));

Das Problem ist nun wenn ich beide in einen Bericht einbinde. Es kommen logischerweise zwei Parameterabfragen zustande.
Wie kann ich es umgehen das ich das Abfragekriterium [Datum] nur einmal eingeben muss. ???

Vielen Dank
Access 2003(SP3)

DF6GL

#1
Hallo,

unabhängig davon, dass ich die Tabellenstruktur, bzw. das Konzept als solches als fragwürdig ansehe, kannst Du ein Formular mit einem Textfeld für das Datum ("txtDatum") und einer Schaltfläche ("btnAuswerten") erstellen. In der Ereignisprozedur "Beim Klicken" des Buttons führst Du beide Abfragen aus , nachdem Du das Datumsfeld per VBA in den SQL-String eingebaut hast.


Sub btnAuswerten_Click()
Dim DB as Database
Set DB =Currentdb

DB.Execute "SELECT DISTINCT tblNW.Eingangsdatum, tblNW.Lieferant, tblWF.[Lieferant], tblWF.LIEFERDATUM " & _
""FROM (tblWF RIGHT JOIN tblNW ON (tblWF.LIEFERANT = tblNW.Lieferanten_ID) AND (tblWF.LIEFERDATUM = tblNW.Eingangsdatum)) " & _
" INNER JOIN tblLieferanten ON tblNW.SFID = tblLieferanten.SFID " & _
" WHERE (((tblNW.Eingangsdatum) In (SELECT Lieferdatum FROM tblWF  WHERE LIEFERDATUM=" & _
Format(nz(txtDatum,Date), "\#yyyy-mm-dd\#")       )) AND ((tblWF.[Lieferant]) Is Null))"

DB.Execute "SELECT DISTINCT tblWF.LIEFERDATUM, tblWF.LIEFERANT, tblWF.[Lieferant], tblNW.Lieferant, tblNW.Eingangsdatum " & _
" FROM tblNW RIGHT JOIN tblWF ON (tblNW.Eingangsdatum=tblWF.LIEFERDATUM) AND (tblNW.Lieferanten_ID=tblWF.LIEFERANT)" & _
" WHERE (((tblWF.LIEFERDATUM) In (SELECT Eingangsdatum FROM tblNW  WHERE Eingangsdatum = " & _
Format(nz(txtDatum,Date), "\#yyyy-mm-dd\#")   )) AND ((tblNW.Lieferant) Is Null))"


<Add>

Sorry, sehe gerade, dass die Abfragen in einem Bericht verwendet werden sollen. Da müssen wir andere Strategie verfolgen:

Erstelle zwei zusätzliche Abfragen ("abf_rptAuswertung1","abf_rptAuswertung2")
,dann wie oben das gleiche  Formular, aber mit folgender Ereignisprozedur:

Sub btnAuswerten_Click()
Dim DB as Database, strSQL as String

set DB =Currentdb

strSQL= DB.Querydefs("DeineAbfrage1").SQL
strSQL = Replace (strSQL,"[Datum]", Format(nz(txtDatum,Date), "\#yyyy-mm-dd\#") )
DB.Querydefs("abf_rptAuswertung1").SQL=strSQL

strSQL= DB.Querydefs("DeineAbfrage2").SQL
strSQL = Replace (strSQL,"[Datum]", Format(nz(txtDatum,Date), "\#yyyy-mm-dd\#") )
DB.Querydefs("abf_rptAuswertung2").SQL=strSQL

End Sub


Im Bericht verwendest Du nun die Abfragen "abf_rptAuswertung1" und "abf_rptAuswertung2"
</add>