Autor Thema: Kalendar  (Gelesen 1989 mal)

tirreg

  • Gast
Kalendar
« am: 19.09.03 - 08:31:39 »
Hi,

ich schaffe es einfach nicht. will einen zeitraum (urlaub) über lotusscript in den userkalender eintragen lassen. er trägt immer nur einen tag ein. hat jemand schon mal so was geschrieben oder ne ahnung wie es geht?? hat das was mit dem feld calenderdatetime zu tun??

cheers tirreg :P

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:Kalendar
« Antwort #1 am: 19.09.03 - 14:39:06 »
hatte folgenden Weg (meine spez. Anwendung, ist also anzupassen !!!):

A: wieviel Urlaubstage
ein Feld, das die Anzahl der Tage berechnet:
@If(Feld_ABC!="ja";0;@Round((EndDate-StartDate)/86400;1))
(ergibt 1, 2, 3 oder 4 oder ....)
Damit weiß ich, wie oft die Schleife zum Anlegen der Termindocs laufen muß.

B: öffnen der Mail DB des Users und Kalendeintrag erzeugen
Dim Lokation As String
Dim userMailDb As New NotesDatabase( "", "" )
Dim reminderDoc As NotesDocument
Call userMailDb.OpenMail
If userMailDb.IsOpen Then
...
Set reminderDoc = New NotesDocument( userMailDb )
Dim rtItem As NotesRichTextItem
With reminderDoc
            .Form = "Appointment"
            .ReplaceItemValue "$Alarm", 1
            .ReplaceItemValue "$AlarmDescription", "Erinnerung"
            .ReplaceItemValue "$AlarmMemoOptions", ""
            .ReplaceItemValue "$AlarmOffset", 0
            .ReplaceItemValue "$AlarmUnit", "M"
            .ReplaceItemValue "NoticeType", "R"
            .ReplaceItemValue "tmpDoNotProcess", "1"
            .Subject = doc.subject(0) & { (ABCDEFG)}
            .Alarms = "1"
            .CalendarDateTime = dtimefromNEU.lsLocalTime
            .StartDate = dtimefromNEU.lsLocaltime
            .StartTime = dtimefromNEU.lsLocaltime
            .StartDateTime = dtimefromNEU.lsLocaltime
            .EndDate = dtimetoNEU.lsLocaltime
            .EndTime = dtimetoNEU.lsLocaltime
            .EndDateTime = dtimetoNEU.lsLocaltime
            .MeetingType = "0"
            .AppointmentType = "0"
            .ISMAILSTATIONERY = 1
         End With
reminderDoc.ComputeWithForm True,True
         reminderDoc.save True,False
         reminderDoc.PutInFolder( "$Alarms" )
         
      Else
         Print "Fehler: Kann die Maildatei nicht öffnen"
      End If

C: Und wie erzeuge ich die Serie?
oben in B siehst Du wie die Zeiten + Datum eingetragen werden (all diese Variablen mit "time" drin). Die kannst Du dynamisch erstellen. Wie? >

Beispiel, um letztes Datum incl. Zeit der "Beleihung bzw Urlaub" per adjust zu berechnen
            Set EndDateFirstT = New NotesDateTime(StartDateFirstT.dateonly & " " & StartZeitLastT.TimeOnly) ' Tag momentan 01.01.03 00:01 Uhr
            Set EndDateLastT  = New NotesDateTime(StartDateFirstT.dateonly & " " & EndZeitLastT.Timeonly) ' Tag momentan 01.01.03 bis Ende Uhrzeit 08:00 Uhr
            Call EndDateFirstT.AdjustDay( daycounter ) ' auf letzten Tag hochzaehlen zB 10.01.03 00:01 Uhr
            Call EndDateLastT.AdjustDay( daycounter ) ' auf letzten Tag hochzaehlen zB 10.01.03 08:00 Uhr

daycounter ist also der Zähler und gleichzeitig Deine Anzahl Urlaubstage im Maximum.
Zähler fängt also bei 0 an = 1. Urlaubstag
...
Zähler 6 = 7. Urlaubstag
etc...

Mit diesem Zähler gehst Du in eine For Schleife und kreierst wie bei B gezeigt die einzelnen Serientermine.

Klar? Nicht? Ist nicht trivial zu Beginn, aber nach einer Stunde ist es ok, glaub mir  ;) Beware: ich arbeite im obigen Beispiel mit "Urlaubstagen" wie
zB vom 01.01. 16:00 bis 10.01. 07:00 Uhr. Sieht man oben nicht, woher ich die Uhrzeiten hernehme, das ist "wo anders" im Code. Deine Urlaubstage werden wohl 24 Std. Termine sein, also pass es Dir ganz einfach an.
« Letzte Änderung: 19.09.03 - 14:45:40 von Rob Green »
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

tirreg

  • Gast
Re:Kalendar
« Antwort #2 am: 23.09.03 - 09:11:11 »
Hi Rob,

sowie ich das verstehe, legst du für jeden Urlaubstag ein neues Kalenderdocument an? Da ich aber auch die Möglichkeit will, den Kalendereintrag per Program zu löschen, müßte ich ja dann alle zugehörigen DokIds merken, damit ich ihn löschen kann. In den KalenderDocs aus der Mailschablone wird die TextListe CalendarDateTime mit den "Urlaubstagen" gefüllt. Hast Du da keine Routine, die das Feld korrekt erstellt :o

Cheers Tirreg

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz