Domino 9 und frühere Versionen > ND6: Entwicklung

Kalendareintrag erstellen

(1/3) > >>

Herr.Vorragend:
Hallo,

ich will aus einer Datenbank mit Mitarbeiterstammdaten per Script einen Eintrag im Kalendar eines Benutzer setzen. Der Benutzer soll (am liebsten aus einer Ansicht - nicht im Frontend wie hier) per Schaltfläche einen "Reminder" oder ähnlich erstellen. Ausgangsfeld im Quelldokument ist "Geburtsdatum".

Das jetzige Script ist leider nur per Frontend ausführbar.
Das könnte ich aktzeptieren. Ich wollte nur kurz eure Meinung dazu hören, ob
dieses Script auch in R6 funktioniert. (bin gerade erst von R4->R6 gekommen)


--- Code: ---Sub Initialize


Dim session As New NotesSession
Dim ws As New NotesUIWorkspace   
Dim uidoc As NotesUIDocument
Dim rtitem As Notesrichtextitem     
Dim success As Variant     
Dim thedoc As Notesdocument      ' Das Originaldokument
Dim docNew As NotesDocument     
Dim thisdb As Notesdatabase      ' aktuelle Datenbank
Dim userMailDb As New NotesDatabase( "", "" )
Dim dateTime As NotesDateTime

Set thisdb = session.currentdatabase   
Set uidoc  = ws.Currentdocument
Set thedoc = uidoc.document
Call userMailDb.OpenMail

ReminderDate$ = thedoc.Geburtstag(0)
Set dateTime = New NotesDateTime( ReminderDate$ )

If userMailDb.IsOpen Then
Set docNew = New NotesDocument( userMailDb )   

With docNew
.Form = "Appointment"
.ReplaceItemValue  "$Alarm",      1
.ReplaceItemValue  "$AlarmDescription",   popUpStr
.ReplaceItemValue  "$AlarmMemoOptions",  ""
.ReplaceItemValue  "$AlarmOffset",    0
.ReplaceItemValue  "$AlarmUnit",     "M"
.ReplaceItemValue  "ViewIcon",     "67"
.ReplaceItemValue  "ExcludeFromView",  "D"
.ReplaceItemValue  "NoticeType",    "R"
.ReplaceItemValue  "tmpDoNotProcess",  "1"   

.Subject    = theDoc.Displayname
.Alarms   = "1"

.CalendarDateTime = dateTime.lsLocalTime
.StartDate   = dateTime.lsLocaltime
.StartTime  = dateTime.lsLocaltime
.StartDateTime = dateTime.lsLocaltime
.EndDate   = dateTime.lsLocaltime
.EndTime  = dateTime.lsLocaltime
.EndDateTime = dateTime.lsLocaltime

.AppointmentType = "1"
.ComputeWithForm False, False
.Save True, False
.PutInFolder( "$Alarms" )     
End With

End If

End Sub
--- Ende Code ---

Axel:
Auf den ersten Blick sieht das Script soweit recht gut aus. Probier's einfach aus.


--- Zitat von: Herr Vorragend am 11.04.06 - 09:38:29 ---Der Benutzer soll (am liebsten aus einer Ansicht - nicht im Frontend wie hier) per Schaltfläche einen "Reminder" oder ähnlich erstellen.

--- Ende Zitat ---

Das gehört aber auch zum Frontend. du meinst sicher, dass du nicht erst das Dokument öffnen musst um das Kalenderdokument zu erstellen.

In diesem Fall musst du das Script so ändern:


--- Code: ---
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace   
Dim rtitem As Notesrichtextitem     
Dim success As Variant     
Dim thedoc As Notesdocument      ' Das Originaldokument
Dim docNew As NotesDocument     
Dim thisdb As Notesdatabase      ' aktuelle Datenbank
Dim userMailDb As New NotesDatabase( "", "" )
Dim dateTime As NotesDateTime
Dim collection As NotesDocumentCollection

Set thisdb = session.currentdatabase   
Set collection = thisdb.UnprocessedDocuments

If collection.Count = 0 Then Exit Sub  'Wenn kein Dok. markiert beenden

If collection.Count > 1 Then
  Messagebox "Es darf nur ein Dokument markiert sein.", 16, "Kalendereintrag erstellen"
  Exit Sub
End If

Set thedoc = collection.GetFirstDocument

Call userMailDb.OpenMail

ReminderDate$ = thedoc.Geburtstag(0)
Set dateTime = New NotesDateTime( ReminderDate$ )
...


--- Ende Code ---

Den gesamten Code hinterlegst du dann in einer Ansichtenaktion.


Axel

koehlerbv:
Es fehlt auf jeden Fall noch das Item $BusyName. Ohne dieses wird der Kalendereintrag nicht vom Scheduler beachtet.

Bernhard

Axel:

--- Zitat von: koehlerbv am 11.04.06 - 10:30:35 ---Es fehlt auf jeden Fall noch das Item $BusyName. Ohne dieses wird der Kalendereintrag nicht vom Scheduler beachtet.

--- Ende Zitat ---

Stimmt. Das kommt vom ersten Blick. :o


Axel

koehlerbv:
$BusyName könnte vom ComputeWithForm gesetzt werden, aber das Thema Notes 6, Form Appointment und ComputeWithForm ist ja ein ganz eigenes. Dass ComputeWithForm hier mit False aufgerufen wird, spricht ja Bände. Wieweit ComputeWithForm also wirklich kommt, bleibt offen.

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln