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)
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
Auf den ersten Blick sieht das Script soweit recht gut aus. Probier's einfach aus.
Der Benutzer soll (am liebsten aus einer Ansicht - nicht im Frontend wie hier) per Schaltfläche einen "Reminder" oder ähnlich erstellen.
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:
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$ )
...
Den gesamten Code hinterlegst du dann in einer Ansichtenaktion.
Axel
Geburtstag im aktuellen Jahr:
Lotusscript:
Dim dtGeburtsdatum As Variant
Dim nTag As Integer
Dim nMonat As Integer
Dim nJahr As Integer
Dim dtGeburtstagDiesesJahr
dtGeburtsdatum = CDate(StringMitDatum)
' oder bei NotesDateTime: dtGeburtsdatum = CDate(ndtDatum.Dateonly)
nTag = Day(dtGeburtsdatum)
nMonat = Month(dtGeburtsdatum)
nJahr = Year(dtGeburtsdatum)
dtGeburtstagDiesesJahr = DateNumber(nJahr, nMonat, nTag)
Formelsprache:
GeburtstagDiesesJahr := @Date(@Year(@Now); @Month(Geburtsdatum); @Day(Geburtsdatum));
Gruß,
Stefan Kleinschmidt
der sich mit diesem kleinen Posting hier mal vorstellen will.
Willkommen im Forum, Stefan!
nTag = Day(dtGeburtsdatum)
nMonat = Month(dtGeburtsdatum)
nJahr = Year(dtGeburtsdatum)
Anmerkung:
nJahr = Year (Today).
In Formelsprache hast Du es doch richtig gemacht ;)
Bernhard