Access : Wertverfälschungen/korrekte Abfrage ?

WiZdooM

Erfahrenes Mitglied
Hallo

Ich bin da auf ein interessantes und leider sehr sehr ungünstiges Phänomen gestoßen.
Und zwar sind einige Abfragen an Textboxen aus Formularen verknüpft. Eine besonders wichtige Abfrage verwendet folgende Bedingung:

Ausdr1:Wert(Format([FzProvDat];"yyyy"))
Bedingung
Wert([Formulare]![frmAuswertung]![txtJah])

Wenn ich die Bedingung jetzt fest begrenze, bekomme ich völlig andere Werte:

FzProvDat
Bedingung
>= "01.01.2008" und <="31.12.2008"

Oder einfach mal in SQL ausgedrückt:

SELECT Count(tbFahrzeug.FzGarArt) AS AnzahlvonFzGarArt, Sum(tbFahrzeug.FzGarPreis) AS SummevonFzGarPreis
FROM tbHaendler INNER JOIN tbFahrzeug ON tbHaendler.mkHdNr = tbFahrzeug.fkHdNr
WHERE (((Val(Format([FzProvDat],"yyyy")))=Val([Formulare]![frmAuswertung]![txtJah])) AND ((tbHaendler.HdPlz)>=Val([Formulare]![frmAuswertung]![txtVonPlz]) And (tbHaendler.HdPlz)<=Val([Formulare]![frmAuswertung]![txtBisPlz])));

und

SELECT Count(tbFahrzeug.FzGarArt) AS AnzahlvonFzGarArt, Sum(tbFahrzeug.FzGarPreis) AS SummevonFzGarPreis
FROM tbHaendler INNER JOIN tbFahrzeug ON tbHaendler.mkHdNr = tbFahrzeug.fkHdNr
WHERE (((tbFahrzeug.FzProvDat)>=#1/1/2008# And (tbFahrzeug.FzProvDat)<=#12/31/2008#) AND ((tbHaendler.HdPlz)>="01000" And (tbHaendler.HdPlz)<="01999"));

Die erste Abfrage liefert ein völlig anderes Ergebnis zurück als die zweite.
Noch unglücklicher wird es, wenn ich statt dem festen Datum >=#1/1/2008# und <= #12/31/2008#
((tbFahrzeug.FzProvDat)=Year(2008)) im SQL String stehen habe. Dann ist das Ergebnis der Abfrage = 0 ...
Edit: Falsche Syntax. Es muss korrekterweise Year(tbFahrzeug.FzProvDat) = 2008 heißen.

Jetzt stellen sich mir natürlich folgende Fragen:

a) Warum ist das so ? Was ist denn der Unterschied zwischen den beiden Abfragen
b) Welches Ergebnis ist denn das korrekte ?

Ich stehe da etwas auf dem Schlauch.
Edit: Mit einem Riesennussknacker konnte ich nun endlich die Nuss knacken. Es lag an keiner der Abfragen, sondern am Eingabeformat der beiden Textfelder für die Postleitzahl. Die waren per default mit 0 belegt und ohne Eingabeformat definiert. Das muss wohl probleme bei 01000er Postleitzahlen gegeben haben, was dazugeführt hat, das die 0 vorne getrimmt wurde und sowohl 1000er als auch 10000er Postleitzahlen in der Auswertung aufgetaucht sind. Jetzt mit dem Eingabeformat Postleitzahl funktioniert es so wie es soll.
 
Zuletzt bearbeitet:
Zurück