Domino 9 und frühere Versionen > ND8: Entwicklung
Wie Datum richtig speichern? DateNumber geht nicht aber NDT-Klasse
khing:
Hallo,
ich bin gestern beim Programmieren mal wieder über eine Hürde mit Datumsoperationen gestolpert. Um die NotesDateTime Klasse aus Performance-Gründen zu umgehen, habe ich mir eine Adjust-Funktion von Tagen mit Datenumber gebaut. Also ungefähr so:
--- Code: ---Public Function AdjustDays(StartDate as Variant, Days2Add as Integer)
AdjustDays = CDat(DateNumber(Year(StartDate),Month(StartDate),Day(StartDate) + Days2Add ) + TimeNumber(Hour(StartDate), Minute(StartDate), Second(StartDate)))
End Function
--- Ende Code ---
Bitte nicht wegen dem Programmierstiel schimpfen - sieht in Wirklichkeit natürlich viel besser aus ;)
Nun entsteht das eigentliche Problem, wenn ich diesen Rückgabewert auf ein NotesItem vom Typ Datum speichere. Dabei wird anscheinend ein String gespeichert aber laut Dokumenteigenschaften ist es weiterhin ein Datum (auch in der Form DD.MM.YYYY HH:MM:SS). Nimmt man diesen Wert nun für Vergleichsoperationen heran, geht garnichts mehr. Die Ergebnisse sind alle falsch. Mit dem Adjust der NDT-Klasse klappt natürlich alles ohne Probleme... ???
Wie kann ich also eine Konvertierung dieses "STRING" oder was auch immer, wieder auf ein Datum/Zeit-Wert bekommen? Habt ihr da Lösungen?
Gruß Kristian
koehlerbv:
Irgendwie fehlt mir an dem Codeschnipsel das entscheidende Stück: Was ist der Rückgabewert der Function??
Das Prinzip ist ansonsten richtig. Das Cdat innerhalb der Function ist allerdings gaga ("weisser Schimmel").
Bernhard
Glombi:
Warum sollte NotesDateTime performancekritisch sein ???
Damit kann man alle möglichen Dinge mit Datums-/Zeitwerten treiben.
Andreas
P.S.: Soll ich noch ne Umfrage machen? ;D
khing:
@Bernhard: Oja das kommt davon, wenn man OnTheFly hier Code eingibt ;D Das ist natürlich Variant
--- Code: ---Public Function AdjustDays(StartDate as Variant, Days2Add as Integer) as Variant
AdjustDays = CDat(DateNumber(Year(StartDate),Month(StartDate),Day(StartDate) + Days2Add ) + TimeNumber(Hour(StartDate), Minute(StartDate), Second(StartDate)))
End Function
--- Ende Code ---
@Andreas: Der Beiweis wurde hier http://www.jnotes.de/jnotes/JRIK-8J5RZS erbracht. Im "kleinen" Umfang natürlich kein großer Unterschied aber bei einigen Tausend Dokumente ist es auf jeden Fall spürbar.
koehlerbv:
An Deiner Function liegt das schon mal nicht - die liefert brav und wie erwartbar ein Variant vom Typ 7 zurück. Packst Du das in ein NotesItem (egal, ob das Item auch in einem Feld einer Maske verwendet wird oder nicht), so wird auch das Item vom Type Time/Date sein.
Du musst Deinen "Fehler" also ausserhalb Deiner Function suchen.
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln