Autor Thema: Rechnen mit Uhrzeiten - Hilfe  (Gelesen 6643 mal)

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Rechnen mit Uhrzeiten - Hilfe
« 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
« Letzte Änderung: 14.04.10 - 09:25:27 von LukasSChl »
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Rechnen mit Uhrzeiten - Hilfe
« Antwort #1 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Rechnen mit Uhrzeiten - Hilfe
« Antwort #2 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
« Letzte Änderung: 14.04.10 - 09:44:49 von LukasSChl »
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Rechnen mit Uhrzeiten - Hilfe
« Antwort #3 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

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Rechnen mit Uhrzeiten - Hilfe
« Antwort #4 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
« Letzte Änderung: 14.04.10 - 11:02:36 von LukasSChl »
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Rechnen mit Uhrzeiten - Hilfe
« Antwort #5 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

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Rechnen mit Uhrzeiten - Hilfe
« Antwort #6 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
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Rechnen mit Uhrzeiten - Hilfe
« Antwort #7 am: 14.04.10 - 11:22:43 »
Set pausenanfang = New NotesDateTime (Cstr (oDoc.pausenanfang (0)))

Bernhard

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Rechnen mit Uhrzeiten - Hilfe
« Antwort #8 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
« Letzte Änderung: 14.04.10 - 12:00:12 von LukasSChl »
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Rechnen mit Uhrzeiten - Hilfe
« Antwort #9 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

Offline LukasSChl

  • Junior Mitglied
  • **
  • Beiträge: 68
  • Geschlecht: Männlich
Re: Rechnen mit Uhrzeiten - Hilfe
« Antwort #10 am: 20.04.10 - 09:21:41 »
geil^^ danke Bernhard, mit NotesDateTime rechnen is der größte Müll^^

mfg Lukas
Informatikkaufmann-Azubi (3tes Lehrjahr)
Lotus Notes Server: 8 * 8.0.2
Lotus Notes Clients: ca. 1800 * 8.0.2
Dienstags außer Haus

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz