Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Darkface am 12.03.03 - 11:47:47
-
Hallo zusammen,
ich möchte aus der Maske "Conf" zwei Zahlenwerte einlesen( StundenR ).
Dann möchte ich mittels eines Agenten über alle Dokumente gehen und überprüfen, ob das Eingangsdatum des Dokumentes(Feld: Eingang) und das jetzige Datum nicht größer sind als der Wer in dem Feld "StundenR". Ich brauche beide Datumswerte in Stunden, oder kann ich die beiden
Werte direkt überprüfen?
Weiß jemand wie ich das machen kann? Ich habe keine Ahnung wie ich das machen kann.
Danke für jede Hilfe.
Gruß
Darkface
-
... du kannst ein Datum in eine Zahl wandeln, dabei erhälst du Sekunden - du ziehst also die Differenz und teilst dann durch 3600 - soviele Sekunden hat eine Stunde...
ata
-
Hi,
so könnt's funzen:
Berechnetes Zeit/Datumsfeld, Wert:
(@Now - Eingang) / 3600
Dieses Ergebnis musst du dann nur noch mit deinem Wert in EingangR vergleichen.
-
Danke ata das funktioniert.
Gruß
Darkface ;D
-
Du musst nicht extra eine Zahl daraus machen. Notes speichert Zahl/Datums-Werte intern als Anzahl Sekunden seit 01.01.1900.
Für die Anzeige wird dann wieder ein Datum daraus erzeugt. Deshalb kannst du ja auch einfach zwei Datumswerte voneinander subtrahieren und erhältst als Ergebnis eine Anzahl Sekunden als Differenz. Um diese weiterzuverarbeiten, um z.B. Stunden zu erhalten, musst du diesen Wert durch 3600 teilen.
-
... ich habe es mir angewöhnt Datumswerte mit CDbl() zu konvertieren - des öfteren habe ich nämlich Strings im Handling...
... wenns schon ne Zahl war tuts nix...
ata
-
Ich habe das mal getestet und ich bekomme immer den Wert '0' raus:
nDiff = ((Clng(Today) - Clng(nEDatum)) /3600)
Ich sehe da nichts falsches dran, aber irgendwo muss der Fehler sein. Mit der Formelsprache Funktioniert es aber.
Gruß
Darkface
-
... Today liefert den Tag, nicht die Uhrzeit - Now liefert das Datum mit der aktuellen Uhrzeit
ata
-
Der wirft mir immer noch '0' aus. Habe es nun geändert auf
nDiff = ((Clng(Now) - Clng(nEDatum)) /3600)
Wie läuft das denn mit TimeDifference?
Gruß
Darkface
-
... was ist nEDatum - eine Variable oder ein Feldname?
ata
-
Das ist eine Variable und wird so gefüllt:
nEDatum = docMail.GetItemValue( "Datum" )(0)
Gruß
Darkface
-
... dann könnte es sein, daß du Text bekommst....
nEDatum = Cdat(docMail.GetItemValue( "Datum" )(0))
... in Datum konvertieren...
ata
-
Das will irgendwie immer noch nicht, aber ich danke dir schon mal. Ich probiers mal weiter.
Gruß
darkface
-
so klappt das nit, weil Du ein Variant zurückbekommst, wenn Du einfach so die Variable per variable=doc.feld(0) ausliest..
das ist der korrekte Weg:
A.) im Rahmen der NotesDateTime Klasse
Dim doc As NotesDocument
Dim item As NotesItem
Dim dateTime As NotesDateTime
'...set value of doc...
Set item = doc.GetFirstItem( "purgeDate" )
Set dateTime = item.DateTimeValue
So die Differenz (im Double FormaT...im Long mußt Du TimeDifferenceLong nehmen):
difference& = notesDateTimeA.TimeDifference( notesDateTimeB ) in Sekunden
B.) im Rahmen von Date in Lotus Script (keine NotesDateTime Klase!!!)
Dim Datumzeit as String
Dim Datum as String
wert = doc.datumszeitfeld(0)
Datumzeit = Cstr(wert)
Datum = DateValue(Datumzeit)
oder aus der Help:
Dim birthDateV As Variant
' Calculate the date value for October 8, 1996.
birthDateV = DateValue("October 8, 1996")
' Print this value as a date string.
Print CDat(birthDateV) ' Prints 10/8/96
' Print the age this person reaches, in years,
' on this year's birthday.
Print Year(Today) - Year(birthDateV)
-
He He das Funktioniert wirklich gut. Danke an alle
Gruß
Darkface