title image


Smiley Lösung: LS: Kalendereintrag in persönlichen Kalender kopieren
Auch wenn mir keine helfen wollte/konnte, habe ich mittlerweile eine Lösung gefunden (Versuch macht klug). Für alle die es interessiert hier auch nochmal die Lösung:



zunächst habe ich in den beiden Ansichten ($Calendar) und ($Meetings) eine Aktionsschaltfläche «In pers. Kalender übernehmen» erstellt. Hier wird dann der Agent gestartet (@Command([ToolsRunMacro];"(Copy to Personal Calendar)")).



Der LotusScript-Agent sieht dann folgendermaßen aus:

Start: Manuell aus der Liste der Agenten

Für: Ausgewählte Dokumente





(Declaration)

Dim s As NotesSession

Dim sourcedb As NotesDatabase

Dim destdb As NotesDatabase

Dim sourcenote As NotesDocument

Dim sourceview As NotesView

Dim destnote As NotesDocument

Dim destview As NotesView

Dim documents As NotesDocumentCollection

Dim mail As Variant

Dim server As Variant

Dim KeyValue As Variant

Dim DisplayKey As Variant

Dim DocsCopied As Integer

Dim HowMany As Variant

Dim StopProcessing As Variant



Sub Initialize

Set s = New NotesSession

Set sourcedb = s.CurrentDatabase

ReadLocationDoc

Set destdb = New NotesDatabase(server(0), mail(0))

Set destview = destdb.GetView("($ApptUNID)")

Set sourceview = sourcedb.GetView("($Calendar)")

Set documents = sourcedb.UnprocessedDocuments

If documents.Count = 0 Then Exit Sub

DocsCopied = 0

For n = 1 To documents.Count

Set sourcenote = documents.GetNthDocument(n)

KeyValue = sourcenote.ApptUNID

DisplayKey = sourcenote.Subject

ProcessDocument

If StopProcessing Then Exit For

Next

' Augabe der Anzahl kopierter Dokumente

If DocsCopied = 1 Then

HowMany = "Ein Eintrag wurde "

Else

HowMany = DocsCopied & " Einträge wurden "

End If

Messagebox HowMany & "in Ihren persönlichen Kalender kopiert.", 0, "Eintrag kopieren"

End Sub



Sub ProcessDocument

' Prüfen, ob Dokument bereits existiert

Set destnote = destview.GetDocumentByKey(KeyValue(0))

' Dokument existiert noch nicht

If destnote Is Nothing Then

Set destnote= sourcenote.CopyToDatabase(destdb)

DocsCopied = DocsCopied + 1

' Dokument existiert schon

Else

Select Case Messagebox(|Der Eintrag "| & DisplayKey(0) & |" ist bereits vorhanden. Ersetzen?|, 4 + 32, "Eintrag kopieren")

Case 6

destnote.Remove(True)

Set destnote= sourcenote.CopyToDatabase(destdb)

DocsCopied = DocsCopied + 1

Case 2

StopProcessing = True

Exit Sub

Case Else

Exit Sub

End Select

End If

End Sub



Sub ReadLocationDoc

' liest den Namen der aktuellen Arbeitsumgebung aus der notes.ini aus

Dim LocSession As New NotesSession

location = Strleft(LocSession.GetEnvironmentString("Location", True),",",5)



' liest den Namen des Servers und den Namen der Mail-Datei aus der Arbeitsumgebung aus

Dim MailSession As NotesSession

Dim MailDB As New NotesDatabase("", "")

Dim MailView As NotesView

Dim MailKey(0) As String

Dim MailDoc As NotesDocument

Dim MailItem As Notesitem

Set MailSession = New NotesSession

Call MailDB.Open( "", "names.nsf" )

Set MailView = MailDB.Getview("Locations")

MailKey(0) = location

Set MailDoc = MailView.GetDocumentByKey(MailKey, True)

If Not (MailDoc Is Nothing) Then

If MailDoc.hasitem("MailFile") Then

' Name der Mail-Datei auslesen

mail = MailDoc.GetItemValue("Mailfile")

End If

If MailDoc.hasitem("MailServer") Then

' Name des Servers auslesen

server = MailDoc.GetItemValue("MailServer")

End If

End If

End Sub





Damit doppelte Einträge vermieden werden, überprüft der Agent, ob sich ein Dokument mit der gleichen ApptUNID bereits in der Datenbank befindet. Dazu habe ich eine weitere Ansicht ($ApptUNID) (Ansichtsauswahl: SELECT @IsAvailable(CalendarDateTime)) erstellt. Diese enthält lediglich eine Spalte «ApptUNID», die den Feldinhalt von ApptUNID darstellt. Sie wurde aufsteigend sortiert.



Sinn des Ganzen:

Wir haben zentral zugängliche Mail-Datenbanken, in denen der Kalender als Abteilungskalender genutzt wird (Hier kann also jeder Termine eintragen, die für die ganze Abteilung interessant sind.). Damit die Benutzer diese Termine bei ihrer Planung besser berücksichtigen und sich auch alarmieren lassen können, kann jetzt jeder Benutzer die für ihn relevanten Termine in den Kalender der persönlichen Mail-Datenbank kopieren.
mfg

Smartie

Dummheit nützt häufiger als sie schadet. Darum pflegen sich die Allerschlausten dumm zu stellen. [Sigmund Graff]

dienstl. System: LD 5.0.11 auf Win Server 2003 mit LN 5.0.11 auf Win 2000 Pro
Testumgebung: LD 7.0 auf Win Server 2003 mit LN 5.0.11 bzw 7.0 auf Win 2000 Pro
privat. System: LN 8.0 für POP3/SMTP auf Win XP Pro


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: