Domino 9 und frühere Versionen > ND6: Entwicklung
Schulungskalender
TazDevil20:
Habe noch ein wenig gesucht und hab auch ein paar sachen gefunden. Bekomme aber leider immer noch nicht den Eintrag gelöscht. Habe jetzt folgenden Code für das löschen:
--- Code: --- 'Kalendereintrag löschen
Set eventdoc = uidoc.Document
eventid = uidoc.FieldGetText( "DocID" )
rc = Evaluate (|@MailDbName|)
Set db = session.GetDatabase(rc(0), rc(1))
Set dc = db.FTSearch( eventid, 0, FT_SCORES, FT_FUZZY)
Set doc_loeschen = dc.GetFirstDocument
Call dc.deletedocument(doc_loeschen)
--- Ende Code ---
dc habe ich natürlich auch deklariert: Dim dc As NotesDocumentCollection
In dem Feld eventid steht auch die entsprechende ID, jedoch findet er diese aus irgend welchen Gründen nicht. Wenn ich mir wie in der Designerhilfe das dc ausgeben lasse, zeigt er nichts an.
Welchen fehler mache ich???
koehlerbv:
Liest Du aufmerksam DesignerHelp:
--- Zitat ---NotesDocumentCollection.DeleteDocument method:
Deletes a document from a collection (not from the disk).
--- Ende Zitat ---
HTH,
Bernhard
TazDevil20:
Hallo,
das mit der NotesDocumentCollection.DeleteDocument method habe ich gefunden und hoffentlich auch entsprechend eingefügt. Jedoch habe ich das Problem erstmal mit dem findes des Dokuments.
Folgende Funktion soll dahinter stecken:
Deklaration:
--- Code: --- Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim doc As NotesDocument
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim dc As NotesDocumentCollection
Dim doc_loeschen As NotesDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
--- Ende Code ---
- suche den Kalendereintrag in der Datenbank des Users mit dem Feld "DocID" das gefüllt ist mit dem Wert "eventid"
--- Code: --- Set eventdoc = uidoc.Document
eventid = uidoc.FieldGetText( "DocID" )
rc = Evaluate (|@MailDbName|)
Set db = session.GetDatabase(rc(0), rc(1), False)
i= 0
Set dc = db.FTSearch( eventid, 0, FT_SCORES, FT_FUZZY)
--- Ende Code ---
- wähle das erste Dokument aus
--- Code: --- Set doc_loeschen = dc.GetFirstDocument
--- Ende Code ---
- gebe mir das gefunde aus (nur zum testen)
--- Code: --- While Not(doc_loeschen Is Nothing)
i= i +1
message = message & i & doc_loeschen.EventName(0) & Chr(10)
Set doc_loeschen = dc.GetNextDocument(doc_loeschen)
Wend
Messagebox message,, "Search results " & 1 & " - " & dc.Count
--- Ende Code ---
- Lösche dieses Dokument
--- Code: --- 'Call dc.deletedocument(doc_loeschen)
--- Ende Code ---
Ich kann irgendwie nicht das Dokument mit der DocID finden, aber es existiert im Kalender und es besitzt auch das Feld.
Kann mir vielleicht nochmal jemand sagen, was ich da jetzt so falsch mache?
Ich denke, das ist auch das letzte mal dass ich euch mit der DB nerve :P
mfg
Michael
koehlerbv:
Zunächst nochmal zum Löschen des Kalendereintrags: Das mit NotesDocumentCollection.DeleteDocument hast Du Dir immer noch nicht richtig durchgelesen - diese Methode löscht das Dokument lediglich aus Deiner Collection, nicht aber aus dem Kalender.
Zum Finden des Eintrags: Ich finde das Verfahren mit der FTSearch nicht so besonders glücklich, da Du nicht garantieren kannst, dass jedes Mail-File auch einen FTI hat. Aussderdem müsstest Du eine Searchformel verwenden wie FIELD DocID = "inhalt-deiner-docid".
Ein sicheres Verfahren wäre, wenn Du die UniversalIDs der erzeugten Kalendereinträge auch im Schulungsdokument speichern würdest (zweites Array, welches absolut analog zum Teilnehmer-Array aufgebaut sein muss, d.h., wenn Du einen Teilnehmer löschst, muss auch genau dessen Kalender-UNID entfernt werden). Du kannst dann mit NotesDatabase.GetDocumentByUNID höchst performant das jeweilige Dokument erreichen.
Was Du aber generell beachten musst: Du brauchst ein solides error handling. Unter anderem kann es ja ohne weiteres passieren, dass jemand solch einen Kalendereintrag Kraft seiner Wassersuppe einfach aus dem Kalender selber löscht ...
HTH,
Bernhard
TazDevil20:
Hallo,
mir macht es einfach Spaß euch zu quälen ;D
Ich habe es hinbekommen, dass wenn eine Person in dem Dokument steht dieser auch den Kalendereintrag gelöscht bekommt.
Jetzt habe ich versucht das ganze auszudehen und hänge gerade an dem Problem, dass ich mehere UNIDs nicht in ein Mehrfach-Listenfeld bekomme.
Habe es mit folgendem Code versucht.
--- Code: ---tmpunid = docCurrent.GetItemValue("calunid")
newunid = Arrayappend(tmpunid, doc.UniversalID)
Call docCurrent.AppendItemValue("calunid", newunid)
--- Ende Code ---
Notes läuft einfach drüber und es passiert nichts.
tmpunid habe ich nicht deklariert, damit Notes damit machen kann was es will. Wenn ich es mit
--- Code: --- Dim tmpunid As Sting
--- Ende Code ---
deklariere passiert auch nichts anderes. Auf jeden Fall mag Notes es nicht wenn mal () hinter die Variable setzt.
Ich hoffe ich habe nur einen kleinen Fehler in meinem Script. Will euch doch nicht auf die Nerven gehen ::)
Kann ich wenn ich die UNIDs richtig geschlieben habe mit
--- Code: --- Call doc.Current.ArrayReplace(doc.UniversalID, tmpunid, newunid)
--- Ende Code ---
in meinem Abmeldescript die nicht mehr benötigte UNID entfernen?
mfg
Michael
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln