Abfrage erfordert 3malige Parametereingabe

02/09/2008 - 19:15 von Sebastian Brandt | Report spam
Hallo zusammen,

ich habe eine Abfrage, bei welcher ich 3mal die gleichen Filterkriterien
eingeben muss, damit das korrekte Ergebnis angezeigt wird. Die
Filterkriterien werden per VBA-Funktion abgefragt. Hier der SQL-String:

TRANSFORM First(qryMSVAbrFLRprt.DatumJN) AS [Der Wert]
SELECT qryMSVAbrFLRprt.Teilnehmer, qryMSVAbrFLRprt.Dauer,
Sum(qryMSVAbrFLRprt.Dauer) AS [in Minuten],
Count(qryMSVAbrFLRprt.DatumJN) AS Stunden,
Sum(qryMSVAbrFLRprt.HonorarJN) AS Honorar, Sum(qryMSVAbrFLRprt.D45) AS zu45
FROM qryMSVAbrFLRprt
WHERE (((qryMSVAbrFLRprt.NameFL) Like "*" & bswFilterQry("Filter: Name
des Fachlehrers eingeben/Teil davon oder frei lassen:","") & "*") AND
((qryMSVAbrFLRprt.DatumJN) Between bswFltDatLtztMonVon() And
bswFltDatLtztMonBis()))
GROUP BY qryMSVAbrFLRprt.Teilnehmer, qryMSVAbrFLRprt.Dauer
ORDER BY qryMSVAbrFLRprt.KW
PIVOT qryMSVAbrFLRprt.KW;

Die zugehörige Funktionen sehen so aus:

Function bswFilterQry(qMldg As String, qDflt As String) As String
bswFilterQry = InputBox(qMldg, "Titel", qDflt)
End Function

Function bswFltDatLtztMonVon() as Date
bswFltDatLtztMonVon = CDate(InputBox("Filter: Eingabe des
Startdatums:"))
End Function

Function bswFltDatLtztMonBis() as Date
bswFltDatLtztMonBis = CDate(InputBox("Filter: Eingabe des
Enddatums:"))
End Function

Die in Bezug genommene Abfrage qryMSVAbrFLRprt sieht so aus:

SELECT qryMSVAbrFLFlt.*, IIf([FehlStd]=True,0,[Honorar]) AS HonorarJN,
IIf([FehlStd]=True,0,[Dauer]) AS DauerJN,
bswWTkrz([qryMSVAbrFLFlt].[Datum]) AS WT, bswWTkrzSort([WT]) AS WTSort,
IIf([FehlStd]=True,1,0) AS AusfStd,
IIf([AusfStd]=1,0,[qryMSVAbrFLFlt].[Datum]) AS DatumJN,
Format(Format([qryMSVAbrFLFlt].[Datum],"ww"),"00") AS KW, [Dauer]/45 AS D45
FROM qryMSVAbrFLFltoGrStd INNER JOIN qryMSVAbrFLFlt ON
(qryMSVAbrFLFltoGrStd.Datum = qryMSVAbrFLFlt.Datum) AND
(qryMSVAbrFLFltoGrStd.Unterrichtszeit = qryMSVAbrFLFlt.Unterrichtszeit)
AND (qryMSVAbrFLFltoGrStd.NameFL = qryMSVAbrFLFlt.NameFL) AND
(qryMSVAbrFLFltoGrStd.[ErsterWert von Teilnehmer] =
qryMSVAbrFLFlt.Teilnehmer)
WHERE (((qryMSVAbrFLFlt.Filter)>0));

Wenn ich nur diese Abfrage qryMSVAbrFLRprt ausführe, kommen keine
(zusàtzlichen) Filter-Abfragen. Wenn ich einen der beiden Filter weg
lasse, wird der verbleibende immer noch 2mal abgefragt.

Dieses Problem taucht übrigens öfter bei mir auf, ohne das ich es
wirklich weiter eingrenzen konnte. Irgendwie hàngt es wohl mit den
verwendeten VBA-Funktionen zusammen???

Sehe ich den Wald vor Bàumen nicht??? Hàtte ich irgendwo aufmerksamer
lesen sollen???

Viele Grüße und jede Menge Dank und Beifall...
Sebastian
 

Lesen sie die antworten

#1 Thomas Möller
02/09/2008 - 19:41 | Warnen spam
Hallo Sebastian,

Sebastian Brandt schrieb:
ich habe eine Abfrage, bei welcher ich 3mal die gleichen Filterkriterien
eingeben muss, damit das korrekte Ergebnis angezeigt wird. Die
Filterkriterien werden per VBA-Funktion abgefragt. Hier der SQL-String:
...
Dieses Problem taucht übrigens öfter bei mir auf, ohne das ich es
wirklich weiter eingrenzen konnte. Irgendwie hàngt es wohl mit den
verwendeten VBA-Funktionen zusammen???



erstell Dir ein Formular und lass dort den Benutzer die notwendigen
Daten eingeben. Danach startest Du per Button z.B. den Bericht, der die
Daten anzeigt, die da in der Abfrage aufbereitet werden.

HTH
Thomas

Homepage: www.Team-Moeller.de

Ähnliche fragen