Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: mibo11 am 04.02.05 - 21:07:45
-
Hallo,
wie kann man im Kalenderprofil per Script den Zeitplan ändern.
Ich möchte die eingegebenen Zeiten ändern in 09:00 - 12:00, 13:00 - 18:00.
Einzelne Werte, also 09:00 ist kein Problem aber wie stelle ich eine Zeitspanne ein?
Gruß Sascha
-
Entweder, du nimmst Evaluate her (siehe den Code in $Times1 des CalendarProfiles), oder Du baust Dir via DateNumber das Array selber zusammen.
Wo liegt Dein wirkliches Problem ?
Bernhard
-
Hallo Bernhard,
folgender Code
Dim s As New NotesSession
Dim db As NotesDatabase
Dim profdoc As NotesDocument
Dim ergebnis As Variant
Dim formelmacro As String
Set db = s.CurrentDatabase
Set profdoc = db.GetProfileDocument("CalendarProfile")
formelmacro = {@TextToTime(@Text(@Adjust([00:00:00]; 0; 0; 0; 9; 0; 0)) + " - " + @Text(@Adjust([00:00:00]; 0; 0; 0; 12; 0; 0))) : @TextToTime(@Text(@Adjust([00:00:00]; 0; 0; 0; 13; 0; 0)) + " - " + @Text(@Adjust([00:00:00]; 0; 0; 0; 18; 0; 0)))}
ergebnis = Evaluate(formelmacro,profdoc)
profdoc.ReplaceItemValue "$TimesDisp2",ergebnis ' Feld für Montag
profdoc.save True, False, True
führt zu folgendem Ergebnis (siehe MONTAG in Kalender.jpg).
Ich möchte allerdings das Ergebnis so erzeugen wie am Dienstag, also mit Trennstrich, damit es einen Zeitraum ergibt.
Interessanterweise werden im Debugger beide Feldinhalte gleich dargestellt.
(siehe Debugger.jpg)
Eine Idee?
Gruß Sascha
-
Studierst Du mal die NotesDateRange Klasse und verwendest diese
-
Hallo Jens,
danke für den Tip, aber leider bringt dies mein Verständnis auch nicht weiter.
Wie binde ich dann das DateRange Objekt in das Feld ein?
Gruß Sascha
-
Hallo Jens,
ich habs gefunden.
DateRange.Text in ein Array (vom Typ Variant) löst das Problem.
Vielen dank für den Ansatz.
Grüße aus dem Rheinland
Sascha
-
Hallo Jens,
ich habe mich leider zu früh gefreut.
Der Ansatz mit der NotesDateRange hat mich doch nicht weiter gebracht.
DateRange.Text liefert mir einen Textstring, den der freihe Zeit Agent nicht interpretieren kann. Anbei ein Screenshot des Debuggers vom entsprechenden Feld. Das Feld sollte allerdings so aussehen, wie in einem meiner letzten Postings.
Was mir nicht ganz klar wird, ist die Tatsache, dass der Zeitraum 09:00 - 12:00, 13:00 - 18:00 im Debugger als Mehrfachfeld mit 4 Einträgen (09:00, 12:00, 13:00, 18:00) dargestellt wird (Datentyp Variant). Wodurch werden dann im Frontend die Trennstriche dargestellt?
Gruß Sascha
-
Du darfst das dem Feld natürlich nicht als Text übergeben, sondern mit ReplaceItemValue das gesamte Zeitobjekt oder einen Array von solchen Objekten übergeben.
-
Vielen Dank Jens,
das mit dem Objekt war es.
Anbei der Code:
Dim s As New NotesSession
Dim db As NotesDatabase
Dim profdoc As NotesDocument
Dim dr As NotesDateRange
Dim i As Integer
Set db = s.CurrentDatabase
Set profdoc = db.GetProfileDocument("CalendarProfile")
Set dr = s.CreateDateRange
dr.Text = ("09:00:00 AM - 01:00:00 PM")
For i = 2 To 6
profdoc.ReplaceItemValue "$TimesDisp" & Cstr(i),dr
Next
profdoc.save True, False, True
Gruß Sascha
-
Fein, gut dass es jetzt tut wie es soll :)