Seltsames Verhalten bei Zeitraumsberechnung

28/03/2010 - 11:31 von Markus | Report spam
Hallo Spezialisten J


Ich muss bei Personen die vollen Dienstmonate in einem Zeitraum ermitteln.
Das mache ich Mittels einer Abfrage, die wie folgt aussah:

Monate:
DatDiff("m";[Beginn];[Ende])+(Format([Ende]+1;"tt")<Format([Beginn];"tt"))

Dienst von 15.09.08 bis 14.09.09 = 11 Monate, also falsch
Dienst von 01.09.08 bis 31.08.09 = 11 Monate, also falsch

Dann habe ich die Abfrage verbessert, weil ich via googeln die Info fand,
dass Microsoft, da mal was geàndert hat mit irgendeiner Version. Die Abfrage
sieht nun also so aus:

Monate:
DatDiff("m";[Beginn];[Ende]+1)+(Format([Ende];"dd")<Format([Beginn];"dd"))

Auf meinem Rechner funktioniert das alles einwandfrei und die Ergebnisse
sind nun richtig:
Dienst von 15.09.08 bis 14.09.09 = 12 Monate, also richtig
Dienst von 01.09.08 bis 31.08.09 = 12 Monate, also richtig

Nun zu meinem Problem:

Auf den beiden Rechnern, auf denen die Datenbank làuft habe ich aber nun ein
seltsames Verhalten und kann mir nicht erklàren, woran es liegen könnte.
Wenn ich die Berechnung so mache:

Monate:
DatDiff("m";[Beginn];[Ende]+1)+(Format([Ende];"dd")<Format([Beginn];"dd")),
dann
Dienst von 15.09.08 bis 14.09.09 = 12 Monate, also richtig
Dienst von 01.09.08 bis 31.08.09 = 11 Monate, also falsch


Dann habe ich es auf beiden Rechnern geàndert :

Monate:
DatDiff("m";[Beginn];[Ende])+(Format([Ende]+1;"tt")<Format([Beginn];"tt"))
Dienst von 15.09.08 bis 14.09.09 = 11 Monate, also falsch
Dienst von 01.09.08 bis 31.08.09 = 12 Monate, also richtig

Und nun verstehe ich die Welt nicht mehr.

Access-Versionen: Mein Rechner : Access 2000 9.0.6926 SP-3 (Windows XP)
Auf den beiden Rechnern mit dem „komischen Verhalten sind die Versionen
9.0.6926 SP-3 (Windows 2000) und 9.0.8968 SP-3 (Windows XP)

Hattet Ihr so ein komisches Verhalten schon?
Hat jemand von Euch einen Tip Für mich, der mich an der Stelle weiter bringt.

Liebe Grüße
Markus
 

Lesen sie die antworten

#1 Josef Poetzl
28/03/2010 - 11:54 | Warnen spam
Hallo!

Markus schrieb:
[...]
Monate:
DatDiff("m";[Beginn];[Ende])+(Format([Ende]+1;"tt")<Format([Beginn];"tt"))
Dienst von 15.09.08 bis 14.09.09 = 11 Monate, also falsch
Dienst von 01.09.08 bis 31.08.09 = 12 Monate, also richtig



Probiere es einmal so:
DatDiff("m";[Beginn];[Ende]+1)+(Format([Ende]+1;"tt")<Format([Beginn];"tt"))
^^^

mfg
Josef

Code-Bibliothek für Access-Entwickler: http://access-codelib.net/
Access-FAQ von Karl Donaubauer: http://www.donkarl.com/

Ähnliche fragen