title image


Smiley LS: Kalendereintrag in persönlichen Kalender kopieren
Hallo @All!



Wir haben bei uns einen öffentlich zugänglichen Kalender (Schablone: Mail-DB), in dem zentrale Termine gespeichert werden. Jetzt möchte ich eine Schaltfläche erstellen, über die jeder User die Möglichkeit hat, für ihn wichtige Termine in seinen persönlichen Kalender (persönliche Mail-DB) zu übernehmen. Hierfür habe ich eine Aktionsschaltfläche erstellt, die folgendes Makro aufruft:



###BEGINN MAKRO###

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 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

Set destdb = New NotesDatabase("SERVER", "mail/user.nsf")

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

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)

EvaluateDocument

If StopProcessing Then Exit For

Next

If DocsCopied = 1 Then

HowMany = "Ein Dokument wurde "

Else

HowMany = DocsCopied & " Dokumente wurden "

End If

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

End Sub



Sub EvaluateDocument

KeyValue = sourcenote.ApptUNID

DisplayKey = Evaluate("Subject", sourcenote)

ProcessDocument

End Sub



Sub ProcessDocument

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

If destnote Is Nothing Then

Set destnote= sourcenote.CopyToDatabase(destdb)

Call destnote.RemoveItem("MessageStorage")

DocsCopied = DocsCopied + 1

Else

Select Case Messagebox(DisplayKey(0) & " ist bereits vorhanden. Ersetzen?", _

4 + 32, "Kopieren")

Case 6

destnote.Remove(True)

Set destnote= sourcenote.CopyToDatabase(destdb)

Call destnote.RemoveItem("MessageStorage")

DocsCopied = DocsCopied + 1

Case 2

StopProcessing = True

Exit Sub

Case Else

Exit Sub

End Select

End If

End Sub

###ENDE MAKRO###



Der Agent funktioniert soweit auch ganz gut. Einzelne oder mehrere Dokumente können hiermit in die Datenbank des Users kopiert werden. (In der Testphase gebe ich für die "destdb" noch eine feste DB vor - später möchte ich das Feld in der Arbeitsumgebung auslesen.)



Nun folgendes Problem: Wenn der Kalendereintrag in der Ziel-DB bereits vorhanden ist (gleiche ApptUNID), soll die Frage erscheinen, ob der Eintrag überschrieben werden soll (Siehe Sub ProcessDocument!). Irgendwie funktioniert die Überagbe von destnote aber nicht. Ich komme jedes Mal in die Schleife "If destnote Is Nothing Then" und nicht in den "Else"-Bereich. Ich vermute den Fehler in der Sub EvaluateDocument. Hier bezieht destnote den KeyValue her. Irgendwie komme ich hier aber nicht weiter.



Kann mir jemand von euch einen Tipp geben?
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: