PDA

Vollständige Version anzeigen : Differenz von Datum


mana
02.07.2001, 13:07
Hi,
folgendes Problem: Arbeite mit Access-Projekt und habe im VB folgende Abfrage formuliert:
Forms!ergebnis!text.RowSource = _
"select arbeit.mont_id, arbeit.beginn, arbeit.ende, datediff(n, arbeit.beginn, arbeit.ende) " & _
"from arbeit " & _
"where arbeit.personal_id = '" & pers & "' and arbeit.beginn >= '" & beginn & "' and arbeit.beginn <= '" & ende & "'"

Hier wird mir die Differenz der Zeit in Minuten angezeigt. wie krieg' ich's hin, das ich z.B. 1:15 statt 75 (Minuten) erhalte? Ich hab's schon mit hh:nn versucht, geht nicht. Kann mir da vielleicht jemand weiterhelfen?

O-Schreiner
02.07.2001, 13:12
Hallo Mana,

kann es im Moment leider nicht testen .... deshalb nur ne relativ unproduktive Gegenfrage:

Geht datediff(h, arbeit.beginn, arbeit.ende) (also H statt N als Intervall) nicht?

Vielleicht bringts ja doch was ....

cu, Olly

mana
02.07.2001, 13:18
Hallo Olly,
h statt n geht schon, doch werden dann nur volle stunden angezeigt. das heißt bei 64 minuten wird nur 1 stunde angezeigt. es wird auf-/ abgerundet. ich brauche aber die genaue zeit.

FW
02.07.2001, 14:37
also: die genaue Differenz erhälst Du mit:

"select arbeit.mont_id, ..., arbeit.ende - arbeit.beginn from arbeit ..."

Wenn dann das Format noch nicht richtig ist, dann setzt Du einfach nur noch die Format-Funktion davor:

"select arbeit.mont_id, ..., Format(arbeit.ende - arbeit.beginn, "hh:nn:ss") from arbeit ..."

Alles klar ?

Frank

mana
02.07.2001, 15:11
Hi,
das habe ich ausprobiert. Es kommt immer die Fehlermeldung: Fehler beim Kompilieren. Erwartet Anweisungsende. Und der Cursor steht auf dem hh. Wo ist der Fehler?

FW
02.07.2001, 15:19
... dann schreibe: ""hh:nn:ss"", also jeweils ZWEI "'s...

mana
02.07.2001, 15:38
... dann kommt zwar keine fehlermeldung mehr, aber es wird keine differenz ausgegeben.

FW
02.07.2001, 17:44
... schicke mir bitte mal den Beispielcode...
fw@engine.de

MarioR
03.07.2001, 06:01
Hallo Mana,

ich weiss nicht, ob ihr's schon gelöst habt, aber gehn müsste auch:
...,Str(Int(DateDiff("n",arbeit.beginn, arbeit.ende)/60)) & ":" & Str(DateDiff("n",arbeit.beginn, arbeit.ende) Mod 60),...

FW
03.07.2001, 09:31
Hallo Mana,

es scheint so zu sein, dass AC2000 den Format-Befehl nicht richtig umsetzt, mit CDate klappt es aber:

select arbeit.mont_id, ..., CDate(arbeit.ende - arbeit.beginn) from arbeit ..."

Berücksichtigen mußt Du aber noch, dass keine "leeren Felder" im SELECT berücksichtigt werden!

"... WHERE arbeit.ende IS NOT NULL"

Alles klar?

Frank

mana
03.07.2001, 13:04
Hallo Leute,
ich hab' endlich eine Lösung gefunden:
Forms!ergebnis!text.RowSource = _
"select arbeit.mont_id, arbeit.beginn, arbeit.ende, convert(varchar,(arbeit.ende-arbeit.beginn),8)" & _
"from arbeit " & _
"where arbeit.personal_id = '" & pers & "' and arbeit.beginn > = '" & beginn & "' and arbeit.beginn < = '" & ende & "'"

Vielen Dank für Eure Hilfe!