Das Notes Forum

Domino 9 und frühere Versionen => ND6: Administration & Userprobleme => Thema gestartet von: LukasSChl am 14.04.10 - 09:14:51

Titel: Rechnen mit Uhrzeiten - Hilfe
Beitrag von: LukasSChl am 14.04.10 - 09:14:51
hi

ich hab ma nen Zeitrechner in VB geschrieben und wollte den jetzt in Notes mal umsetzen.
Doch leider bekomm ich einfachste Mathematische Operationen nicht auf die Kette...
(Lotus Notes 6.5.1)

Code
	Dim oUIDoc As NotesUIDocument
	Set oUIDoc = oWorkspace.CurrentDocument
	Dim oDoc As Notesdocument
	Set oDoc = oUIDoc.Document
	Dim pausenanfang As NotesDateTime
	Dim pausenende As NotesDateTime
	Dim pause As NotesDateTime
	
	Set pausenanfang = Cdat(oDoc.pausenanfang)
	Set pausenende = Cdat(oDoc.pausenende)
	
	Set pause = pausenende - pausenanfang
	
	oDoc.Pause_1 = pausenende

Einfach den Variablen Pausenanfang und Pausenende die Werte aus den entsprechenden Felder zuweisen, in der Variable pause dann das eine vom anderen abziehn und in das Feld Pause_1 schreiben.
Immer wieder bekomm ich Fehler, das da doch ein "Set" vorgehört, dann wieder nicht, und wenn nicht kommt "type missmatch".

Wie macht man per LS einfache Mathematische Operationen mit Uhrzeit Werten??^^
Könnte mir jmd. vllt. mal eine einfache Addition zeigen (variablendefinition etc)??
bin mit meinem Wissen und dem was ich so im Internet gefunden hab nicht weitergekommen.

mfg
Lukas
Titel: Re: Rechnen mit Uhrzeiten - Hilfe
Beitrag von: Axel am 14.04.10 - 09:25:19
Schau dir mal in der Designer-Hilfe die Klasse NotesDateTime an, insbesondere die Methode New

Syntax
Dim variableName As New NotesDateTime( dateTime$ )
or
Set notesDateTime = New NotesDateTime( dateTime$ )

Dann sollte dir klar werden wo dein Problem liegt.

Axel
Titel: Re: Rechnen mit Uhrzeiten - Hilfe
Beitrag von: LukasSChl am 14.04.10 - 09:26:13
vielen dank ich guck ma, falls ich net weiterkomm meld mich mich nochma^^

mfg Lukas

EDIT:

gut ich komm doch net weiter, muss dazusagen ich hab so gut wie 0 Ahnung von Lotus Script.
Ganz vergessen hab ich, das der Code hinter einem Button liegt, also beim anklicken, soll berechnet werden.

Es sieht jetzt so aus, bekomme aber immernoch den "Type mismatch" Fehler bei der Zeile:
Set pause = pause  + (pausenende - pausenanfang)

Code
Dim oUIDoc As NotesUIDocument
	Set oUIDoc = oWorkspace.CurrentDocument
	Dim oDoc As Notesdocument
	Set oDoc = oUIDoc.Document

	Dim pausenanfang As NotesDateTime
	Set pausenanfang = New NotesDateTime (oDoc.pausenanfang)

	Dim pausenende As NotesDateTime 
	Set pausenende = New NotesDateTime (oDoc.pausenende)

	Dim pause As NotesDateTime
	Set pause = New NotesDateTime ("")
	
	Set pause = pause  + (pausenende - pausenanfang)
	
	oDoc.Pause_1 = pausenende

mfg
Lukas
Titel: Re: Rechnen mit Uhrzeiten - Hilfe
Beitrag von: ascabg am 14.04.10 - 10:28:03
Hallo,

Dann schau Dir einmal genau an, was Dir die Klasse NOtesDateTime noch zur Verfuegung stellt.

siehe
NotesDateTime.TimeDifferenceDouble

und
NotesDateTime.TimeDifference


Andreas
Titel: Re: Rechnen mit Uhrzeiten - Hilfe
Beitrag von: LukasSChl am 14.04.10 - 10:41:12
hi

das mit dem TimeDifference leuchtet mir ein, muss man die Sekunden nachher nur umrechnen, aber mit der Syntax hab ich nen Problem.
Die Meldungen kommen schon beim speichern (Fehler in Lotusscript), also komm ich nichtmal soweit das zu testen ob es denn funktioniert.

Set pause = pausenende.TimeDifference( pausenanfang )
"Set may only be used on class instance assignments"

lasse ich das Set weg, also:

pause = pausenende.TimeDifference( pausenanfang )
"Set required on class instance assignment"

also irgendwas kann da noch net, leider bietet das Beispiel in der Hilfe da keine Lösung.

mfg Lukas
Titel: Re: Rechnen mit Uhrzeiten - Hilfe
Beitrag von: ascabg am 14.04.10 - 11:06:01
Versuchs mal so.

Code
Dim dblDiff As Double

dblDiff = pausenende.TimeDifferenceDouble(pausenanfang)

oder

Code
Dim lngDiff As Long
lngDiff = pausenende.TimeDifference(pausenanfang)

Du bekommt in beiden Faellen numerische Werte zurueckgeliefert, die die Anzahl an Sekunden angeben.
Nur einmal wird dieser Wert als LONG und das andere Mal als DOUBLE zurueckgeliefert.


Andreas
Titel: Re: Rechnen mit Uhrzeiten - Hilfe
Beitrag von: LukasSChl am 14.04.10 - 11:17:00
ok habs so gemacht und endlich kann ich das abspeichern^^

Code looks like this:

Code
Dim oUIDoc As NotesUIDocument
Set oUIDoc = oWorkspace.CurrentDocument
Dim oDoc As Notesdocument
Set oDoc = oUIDoc.Document

Dim pausenanfang As NotesDateTime
Set pausenanfang = New NotesDateTime (oDoc.pausenanfang)

Dim pausenende As NotesDateTime 
Set pausenende = New NotesDateTime (oDoc.pausenende)
Dim pause As Double

pause = pausenende.TimeDifferenceDouble( pausenanfang )

oDoc.Pause_1 = pause

Jetzt bekomm ich bei der Zeile:
"Set pausenanfang = New NotesDateTime (oDoc.pausenanfang)"
einen "Type mismatch"- Fehler, wenn ich auf den berechnen Button klicke.

Hab in die Felder sowohl Uhrzeiten (10:00 / 10:00:00) als auch normale Werte (1,2,etc) eingegeben, aber immer der gleiche Fehler.

mfg Lukas
Titel: Re: Rechnen mit Uhrzeiten - Hilfe
Beitrag von: koehlerbv am 14.04.10 - 11:22:43
Set pausenanfang = New NotesDateTime (Cstr (oDoc.pausenanfang (0)))

Bernhard
Titel: Re: Rechnen mit Uhrzeiten - Hilfe
Beitrag von: LukasSChl am 14.04.10 - 11:41:22
ah wunderbar es läuft ohne Fehler durch, vielen Dank Bernhard.

Nur leider bekomm ich immer nur "0" als Wert ausgegeben.

//EDIT: hab was übersehn es FUNKTIONIERT ;);) endlich.

vielen dank nochma

mfg Lukas
Titel: Re: Rechnen mit Uhrzeiten - Hilfe
Beitrag von: koehlerbv am 14.04.10 - 23:16:59
So kompliziert muss man das übrigens gar nicht machen. Datums-/Zeitwerte sind eigentlich nur Zahlen im Double-Format. Zieh Dir folgenden Code mal rein - der kommt völlig ohne NotesDateTime class aus.

HTH,
Bernhard

Code
Function GetTimeDifferenceMin (vStartTime As Variant, vEndTime As Variant) As Double
	'==================================================================================================================================	
	' Purpose:		Calculates the time difference between two given Date/Time values (normally the time component only)
	'----------------------------------------------------------------------------------------------------------------------------------
	' Arguments:
	'					vStartTime - should be a Date / Time value
	'					vEndTime - should be a Date / Time value. If vEndTime is 0:00 it will be converted to 24:00 (= 1) !
	'----------------------------------------------------------------------------------------------------------------------------------
	' Returns:		The time difference in minutes if both values are Date/Time values (otherwise 0)
	'----------------------------------------------------------------------------------------------------------------------------------
	' Created by:  	Bernhard Koehler on 13.12.2004
	'----------------------------------------------------------------------------------------------------------------------------------
	' Changes:		
	'===================================================================================================================================
	
	Dim dblDifference As Double
	
	
	On Error Goto ErrorRoutine
	
	'The default value:
	GetTimeDifferenceMin = 0
	
	'Check for valid Date/Time values:
	If Not (Isdate (vStartTime)) Or Not (Isdate (vEndTime)) Then
		Exit Function
	End If
	
	'Because we can't store 24:00 in Notes we use 0:00 and have to convert this value to 24:00 = 1
	If Fraction (vEndTime) = 0 Then
		vEndTime = 1
	End If
	
	dblDifference = Fraction (vEndTime) - Fraction (vStartTime)
	
	dblDifference = dblDifference * 24 * 60
	
	GetTimeDifferenceMin = Round (dblDifference, 0)
	
	Exit Function
	
ErrorRoutine:
	GetTimeDifferenceMin = 0
	Call ErrorHandler ("GetTimeDifferenceMin")
	Exit Function
End Function
Titel: Re: Rechnen mit Uhrzeiten - Hilfe
Beitrag von: LukasSChl am 20.04.10 - 09:21:41
geil^^ danke Bernhard, mit NotesDateTime rechnen is der größte Müll^^

mfg Lukas