Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: mangler am 25.01.10 - 10:12:04
-
Hallo Zusammen,
welche Felder brauche ich um Dokumente einer Eigenanwendung in meinen Notes-Kalender zu kopieren?
Hintergrund:
Wir haben eine Eigenanwendung in der die Personaldaten verwaltet werden. Schmankerl ist ein Geburtstagskalender (wo aber nur Tag+Monat hinterlegt sind). Nun häufen sich anfragen, wo Mitarbeiter die Geburtstage ihrer Kollegen gerne in ihren Kalender übernehmen würden...
Hat da Jemand vielleicht schon mal was gebaut und hat Tips für mich?
Viele Grüße
Tatiana
-
Gucke dir das mal an http://www.lotusguru.com/lotusguru/LGBlog.nsf/d6plinks/20100125-8228B7
in den Slides finden sich auch Links zu den Feldern des C&S
-
Technote #1229486: Notes/Domino Calendaring & Scheduling field descriptions (http://www.ibm.com/support/docview.wss?rs=463&context=SSKTMJ&dc=DB520&uid=swg21229486&loc=en_US&cs=UTF-8&lang=en&rss=ct463lotus)
IBM Lotus Notes Calendaring & Scheduling Schema (http://www.ibm.com/developerworks/lotus/documentation/dw-l-calendarschema.html)
-
Prima, danke!
Das schaue ich mir gleich mal an. ;D
-
Hallo mangler,
habe so etwas ähnliches über einen Agenten gelöst. Allerdings wirst du Jahreszahlen brauchen, du musst also schon abfragen für wie viele Jahre der Termin Eingetragen werden soll. Mir war das zuviel Arbeit, deshalb erstellen ich einfach einen Termineintrag und lasse den Rest vom User erledigen (Wiederholungen etc.)
gruss KlaSpa
Option Public
Use "MailLibrary"
''Deklarations MailLibrary
Dim ws As NotesUIWorkspace
Dim session As NotesSession
Dim db As NotesDatabase
Dim maildb As NotesDatabase
Dim note As NotesDocument
Dim mailnote As NotesDocument
Dim collection As NotesDocumentCollection
Dim profile As NotesDocument
Sub InstantiateVariables
Set ws = New NotesUIWorkspace
Set session = New NotesSession
Set db = session.CurrentDatabase
Set maildb = New NotesDatabase("","")
maildb.OpenMail
Set profile = maildb.GetProfileDocument("CalendarProfile")
counter = 0
Set collection = db.UnprocessedDocuments
End Sub
'''''ENDE
'AGENTEN CODE
Sub Initialize
Dim nMinutes As Integer
Dim nSeconds As Integer
Dim x As Integer
Dim startdt As NotesDateTime
Dim enddt As NotesDateTime
Dim trdr As NotesDateRange
InstantiateVariables
If (collection.Count = 0) Then
Messagebox "Es wurden keine Dokumente ausgewählt.",0,"Fehler"
Exit Sub
End If
'Kann nur einen Eintrag erstellen
Set note = collection.GetFirstDocument
'Das hier muss angepast werden
If Ucase(note.MType(0)) <> "PROJEKT" Then Exit Sub
Set mailnote = New NotesDocument(maildb)
mailnote.EnterSendTo = ""
mailnote.Form = "Appointment" <<<<<<<<<<
mailnote.AppointmentType = "0"
mailnote.Chair = profile.Owner(0)
mailnote.Principal = profile.Owner(0)
mailnote.Subject = note.DokName(0) <<<<<<<<<<
Set itemA = note.GetFirstItem( "Body" )
Call itemA.CopyItemToDocument( mailnote, "" )
Set item = note.GetFirstItem( "AmUm" ) <<<<<<<<
Set startdt = item.DateTimeValue
nMinutes = Minute(startdt.LSLocalTime)
nSeconds = 0 - Second(startdt.LSLocalTime)
startdt.AdjustSecond(nSeconds)
Set mailnote.StartDate = startdt
Set mailnote.StartDateTime = startdt
Set item = note.GetFirstItem( "EndeUm" ) <<<<<<<<
Set enddt = item.DateTimeValue
Set trdr = session.CreateDateRange
Set trdr.StartDateTime = startdt
Set trdr.EndDateTime = enddt
Set mailnote.TimeRange = trdr
Set mailnote.EndDate = enddt
Set mailnote.EndDateTime = enddt
Call ws.EditDocument(True,mailnote)
End Sub
-
Achtung, liebe Kinder: Macht das nicht nach! Da fehlen wichtige Items, damit das C&S richtig funktioniert.
Hier klappt das zwar, da das Dokument im Backend erstellt und dann sofort im Frontend geöffnet wird (das erledigt dann den Rest, solange in keinem Feld auf @IsNewDoc geprüft wird, aber für eine reine Backend-Aktion taugt das nicht.
Bernhard
-
Hallo koehlerbv,
du hast Recht, es funktioniert _nur_ weil es im Frontend geöffnet und bearbeitet wird...
ausserdem eignet es sich nicht für Wiederholungseinträge da die entsprechenden Felder fehlen.
Ich schaue das nächste mal etwas genauer hin...
gruss KlaSpa