Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 10.10.03 - 00:01:55

Titel: Kalendereintrag Date, Time
Beitrag von: TMC am 10.10.03 - 00:01:55
Hi,

ich schreibe über ein Script Daten einer Dialogbox in einen Kalendereintrag der Mail-DB. Der Eintrag ist vom Typ "Reminder".
Als Beispiel hab ich mich hier orientiert: http://www.eknori.de/tips/reminder.htm (http://www.eknori.de/tips/reminder.htm)


Nun gibts ja folgende Felder in der Kalendermaske die u.a. gefüllt werden sollten:
Zitat
StartDate
StartTime
StartDateTime
EndDate
EndTime
EndDateTime

Wenn ich jedes Feld mit Datum der Dialogbox fülle, klappt es wunderbar, als Zeit zeigt Notes dann (wie erwartet) 0:00 Uhr an.

Jetzt soll in die Maske noch ein Uhrzeit enthalten.

Die Uhrzeit wird als Datumsfeld, on Display display Time, übergeben und diese deklariere ich als
Zitat
Dim Zeit As NotesDateTime
ReminderTime$ = source.FieldGetText("Reminder_Time")
Set Zeit = New NotesDateTime( ReminderTime$ )

Die Felder des Reminderdoc hätte ich nun so gesetzt:
Zitat
With reminderDoc
.CalendarDateTime = Datum.lsLocalTime
.StartDate    = Datum.lsLocaltime
.StartTime   = Zeit.lsLocaltime
.StartDateTime   = Zeit.lsLocaltime
.EndDate       = Datum.lsLocaltime
.EndTime      = Zeit.lsLocaltime
.EndDateTime   = Zeit.lsLocaltime
End With

Klappt soweit auch wunderbar (lt. Anzeige in der Kalenderview), wenn ich z.B. den 23.09.03, 15:00 Uhr als Reminder setze.

Nur setzt Notes das STARTDATETIME auf "30.12.1899 15:00:00 CET".

Daher meine Befürchtung, dass das Reminden etc. nicht klappt.

Wie kann ich denn das anpassen?

TMC
Titel: Re:Kalendereintrag Date, Time
Beitrag von: TMC am 10.10.03 - 20:22:19
*mal hoch schieb den Thread*

Sollte ich mich unklar ausgedrückt haben, dann bitte auch Info....

TMC
Titel: Re:Kalendereintrag Date, Time
Beitrag von: koehlerbv am 11.10.03 - 11:55:00
Nur mal auf die Schnelle - kann's gerade nicht testen:
Der 30.12.1899 ist der "Nullpunkt" für Notes' Datums-Nummern,
mit 15:00 Uhr hintendran ist dies also 0 + 15/24.
Probier daher mal, StartDateTime aus StartDate + StartTime zu bilden.

Vielleicht war's das ja schon ...

Das nächste Mal wieder getestete Antworten ;-)

Bernhard
Titel: Re:Kalendereintrag Date, Time
Beitrag von: TMC am 11.10.03 - 14:06:50
Hi Bernhard,

Zitat
Probier daher mal, StartDateTime aus StartDate + StartTime zu bilden.

Ähm, wie müsste ich das im Script schreiben?
Code
With reminderDoc
.CalendarDateTime = Datum.lsLocalTime
.StartDate    = Datum.lsLocaltime
.StartTime   = Zeit.lsLocaltime
.StartDateTime   = Zeit.lsLocaltime
.EndDate       = Datum.lsLocaltime
.EndTime      = Zeit.lsLocaltime
.EndDateTime   = Zeit.lsLocaltime
End with

reminderDoc.CalendarDateTime = Datim.IsLocalTime + Zeit.IsLocaltime
geht ja so niemals ned...

Ich habe auch mal im Mailfile in der FORM "_Calendar Entry" geschaut, nur da werde ich irgendwie ned schlau; die haben da ein JavaScript im Event 'on change' drin im Feld 'StartTime'.....

Lt. dem Folder ($Alarms) wird für den Alarm das Feld CalendarDateTime rangezogen.

Grüße,
TMC
Titel: Re:Kalendereintrag Date, Time
Beitrag von: Glombi am 11.10.03 - 14:16:27
Hi,
ich würde das so machen:

dim StartDateTime as NotesDateTime
set StartDateTime = New NotesDateTime(Datum.LocalTime & " " & Zeit.LocalTime)

reminderDoc.StartDateTime = StartDateTime.LSLocalTime

EndDateTime analog...

Andreas
Titel: Re:Kalendereintrag Date, Time
Beitrag von: koehlerbv am 11.10.03 - 14:50:51
Sorry, TMC, leider wieder nur ein Schnellschuss (diesmal aber getestet ;-)
Statt den Verrenkungen mit NotesDateTime etc. folgender Vorschlag:
Code
Dim ws As New NotesUIWorkspace
   
   Dim vStartDate As Variant
   Dim vStartTime As Variant
   Dim vStartDateTime As Variant
   
   vStartDate = ws.CurrentDocument.Document.StartDate (0)
   vStartTime = ws.CurrentDocument.Document.StartTime (0)
   
   Msgbox "StartDate: " & Cstr (vStartDate) & Chr$ (10) &_
   "StartTime: " & Cstr (vStartTime)
   
   vStartDateTime = vStartDate + vStartTime
   Msgbox "StartDateTime: " & Cstr (vStartDateTime)


Hilft Dir das weiter ?
Herzliche Wochenendegrüsse von Ober... nach Unter... - na, Du weisst schon ;-)
Bernhard
Titel: Re:Kalendereintrag Date, Time
Beitrag von: TMC am 11.10.03 - 15:13:54
danke Euch beiden !

Ich habe mich jetzt für Glombi's Lösung entschieden
(war jetzt irgendwie schneller für mich, außerdem mach ich sonst alles im Script bereits im Backend....)

Grüße,
TMC
Titel: Re:Kalendereintrag Date, Time
Beitrag von: koehlerbv am 11.10.03 - 15:22:44
Das eine (Glombi's) ist garantiert so gut wie das andere (dem Ich sein's ;-).
Nur der Vollständigkeit halber: Auch mein Code läuft im Backend, ich hab's halt eben nur in einer Maske mit 'nem Knöpfchen auf die Schnelle ausprobiert. Daher
Zitat
ws.CurrentDocument.Document.StartDate (0)
was ja aber eindeutig auf's Backend verweist ;-)

Bernhard aus dem richtig warmen, sonnigen Chiemgau (TMC: Wie siehts denn gerade bei Euch im "niedrigeren Bayern" aus ?)
Titel: Re:Kalendereintrag Date, Time
Beitrag von: Glombi am 11.10.03 - 15:28:35
@Bernhard:
Ich wusste gar nicht, dass man so einfach Zeit/Datumswerte addieren kann. Offenbar geht das ja dann viel einfacher, da haste Recht.

Was passiert eigentlich, wenn ich
01.01.2003 + 01.01.2003 mache?

Gibts dann den 02.02.4006 - na wenn ich Zeit hab, probier ich es mal aus.

Andreas

P.S.: Hier ist es wettermäßig nicht ganz so gut wie bei Euch im Süden. Aber morgen muss es schön sein, denn dann ist Erntedankfest und die Kiddies müssen ja irgendwie beschäftigt sein...
Titel: Re:Kalendereintrag Date, Time
Beitrag von: koehlerbv am 11.10.03 - 15:38:47
Hallo, Andreas (und alle anderen),

der Umgang mit Datums-/Zeitwerten ist wirklich ein weites Feld in LN ;-)
Wenn Du wie beschrieben Datumswerte addierst, bekommst Du eine Datumsseriennummer, die sich aus den jeweils vergangenen Tagen seit dem 30.12.1899 ergeben.
Heute + Heute (Für die Nachwelt: Heute = 11.10.2003) würde beispielsweise den 23.07.2107 ergeben.

Was der vereinfachte Umgang von Datums-/Zeitwerten via Variants (vom Typ 8, glaube ich) allerdings auch bedeutet (und das "umständliche Dealing" von Notes ursächlich begründet): Zeitzonen fallen unter den Tisch. In einer internationalen Umgebung muß man also über die NotesDateTime Class gehen.

Ciao,
Bernhard
Titel: Re:Kalendereintrag Date, Time
Beitrag von: TMC am 11.10.03 - 15:58:52
Hi Bernhard,

ist quasi ähnlich wie in Excel.....

Auch da ergibt heute() + heute() den 23.07.2107.......

bye,
TMC

P.S. na ja, so warm ist es bei uns in Niederbayern ned (schätze 12Grad (Mist, irgendwo hatte ich doch mal ein Grad-Zeichen auf meiner Tastatur....;-), bewölkt, aber Sonne kommt öfters mal raus.
Titel: Re:Kalendereintrag Date, Time
Beitrag von: koehlerbv am 11.10.03 - 16:15:01
Fast alle Programme arbeiten ja mit Datumseriennummern ...
By the way - und um stilgerecht zu bleiben ;-)
1-2-3 liefert bei 11.10.2003 + 11.10.2003 auch den 23.087.2107

@TMC: Der Chiemgau meldet 17°C bei fast völlig wolkenfreiem, blauen Himmel ;-)

@TMC (#2): Die Taste für das Grad-Zeichen befindet sich direkt unter der Flucht-Taste und muß gedrückt werden, nachdem man vorher (und währenddessen !!!) eine der Tasten (links oder rechts am unteren Rand des Schlüsselbretts) mit einem "Pfeil-nach-oben"-Symbol niederdrückt ;-)))
Titel: Re:Kalendereintrag Date, Time
Beitrag von: TMC am 11.10.03 - 16:55:04
huch, glatt übersehen
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

Na ja, ein Alt + 0176 hätte es auch getan, aber ich war vorhin zu faul nachzusehen, welche Nr. denn das °-Zeichen hat :-)

TMC
der jetzt 15°C meldet lt. Außenthermometer ;-)
Titel: Re:Kalendereintrag Date, Time
Beitrag von: Semeaphoros am 12.10.03 - 15:24:29
Bernhard:
Die Grad-Taste ist aber nur direkt unter der Flüchtlingstaste, wenn man ein Full-Keyboard hat und nicht wie im Moment bei mir noch die Formel-1 Weltmeistertaste dazwischengeschoben ist :-)

TMC:
Die Definition von Tagesseriennummern nach dieser Art geht meines Wissens auf Multiplan zurück (wer erinnert sich noch ??), das Spreadshiiit, das M$ hatte, bevor sie unexzellent wurden, dort wurde allerdings der 1.1.1900 als Tag 1 definiert, was aber lückenlos in die Notes-Definition 31.12.1899=0 überführt werden kann. Dieser Standard wurde eigentlich von fast allen Datums-Berechnungsprogrammen übernommen und da die @Formelsprache von Notes auf 1-2-3 zurückgeht, ist es kein Wunder, dass es überall gleich rechnet.

Das ist fast so, wie wenn man sagt: TMD = TMC + 1

:-)