Domino 9 und frühere Versionen > ND8: Entwicklung
Mehrfacher Aufruf von PicklistCollection
StefanP1962:
Hallo zusammen,
so ungefähr sehe ich im Moment aus ??? ! Ich komme mit meinem Problem nicht zu einer Lösung.
Vielleicht kennt der ein oder andere die Bibliothek zum Dokumentieren von Emails in RichTextFeldern eines Zieldokumentes. Das Ganze habe ich mehrfach modifiziert, sodass ich folgendes ausführen kann:
* Auswahl des Ordners / der Ansicht in meiner Mail-DB, aus welcher ich Dokumente wählen möchte
* PickListCollection über den gewählten Ordner / die gewählte Ansicht
* Auswahl der Dokumente
* Abarbeiten der Collection
Hier der Codeschnipsel:
[...]
Set MailView = MailDB.GetView(RealName)
If MailView Is Nothing Then
Msgbox cNoFolderFound
Exit Function
End If
'Refresh the MailView and Clear the DocumentCollection
Call MailView.Refresh
Set dc = Nothing
' Select documents .
Set dc = ws.PickListCollection( PICKLIST_CUSTOM, _
True, MailDB.SERVER, MailDB.FilePath, RealName, _
cFolderChoose + ": " + RetFolder, cSelectMail )
If dc.Count = 0 Then
Exit Function
End If
Set MailDoc = dc.GetFirstDocument
[...]
Funktioniert alles perfekt, ABER ...
Nun möchte ich einem weiteren Vorgang ein oder mehrere Dokumente der Mail-DB zuweisen und rufe das ganze Prozedere erneut auf.
Die Picklist öffnet sich und ich setze meine Haken und sehe dann schon in der Meldungszeile x Dokumente ausgewählt. Eine schöne Meldung, sehr hilfreich, nur ist x die Anzahl meiner gerade gewählten zuzüglich der eben bereits gewählten Dokumente. In der Folge landen alle Dokumente in der Collection, was ich gerne unterbinde würde.
Hat einer eine Idee, wie ich die Auswahl zurückgesetzt bekomme? UIView.DeselectAll funktioniert ja nur, wenn die View der Mail-DB im UI wäre, aber da liegt ja die meiner Dokumentations-Datenbank. Oder habe ich nur einen fürchterlichen, gedankliche Hänger?
Beste Grüße und Danke für Eure Lösung oder Euren seelischen Beistand. ;)
Stefan
Edith sagt dazu am 30.11.13 10:48: "Da war ein Tippfehler im Text. Bei "zusammen" fehlte das "z"
Peter Klett:
Unter der Annahme, dass Du bei keinem der nächsten Durchläufe erwartest, dass ein bereits vorher gewähltes Dokument erneut gewählt wird, könntest Du Dir die bereits verwendeten Dokumente in einer Liste merken und nach der Auswahl aus der Collection entfernen.
Alternativ würde ich mal probieren (ist nur eine Idee, habe ich noch nie getan), den NotesUIWorkspace zu löschen und neu zu setzen, denn irgendwo muss Notes sich die Markierung ja merken.
Delete ws
Set ws = New NotesUIWorkspace
Habe aber keine Ahnung, ob das geht oder welche Nebenwirkungen das hat.
StefanP1962:
Leider kann ich nicht ausschließen, dass ein Dokument möglichderweise zwei Dokumentationen zugeordnet werden soll. Von daher ist die Idee mit der Liste leider nicht zielführend.
Die Geschichte mit dem UI-Workspace werde ich mal probieren. Wobei ich vermute, dass diese Info in der Mail-DB steckt.
Peter Klett:
Ich hatte es so verstanden, dass Du die Routine so umbauen wolltest, dass ein mehrfacher Aufruf innerhalb des gleichen Scriptes erfolgen soll. Aber nun meine ich verstanden zu haben, dass das Problem schon auftritt, wenn Du manuell die gleiche Routine noch einmal startest.
Dann wird das mit dem Workspace nichts bringen, denn den setzt Du in der Routine ja neu.
Wenn man in einer Ansicht mehrere Dokumente markiert, gehen die Markierungen normalerweise weg, wenn man die Ansicht verlässt.
Probier doch mal aus, was passiert, wenn Du zwischen dem ersten und dem zweiten Aufruf die Maildatenbank öffnest und in eine beliebige andere Ansicht gehst. Sind danach beim zweiten Aufruf die Markierungen weg?
Falls das was bringt, könntest Du z.B. das Öffnen und Schließen der zuletzt ausgewählten Ansicht bzw. Ordner vor der Picklist in Deine Routine mit aufnehmen.
StefanP1962:
Habe den Fehler jetzt noch weiter eingrenzen können und einen Workaround
Und zwar erlaube ich in der Routine die Auswahl eines Ordners, in welchen die ausgewählten Dokumente verschoben werden.
Sofern ich nicht in Ordner verschiebe, bleiben die Dokumente nicht ausgewählt, verschiebe ich, sind alle verschobenen Dokumente gewählt.
Am Ende der Routine öffne ich die für die Picklistausgewählte View in der MailDB als neue Instanz im WS (call ws.OpenDatabase(...) ).
Dann packe ich mir die UIView des WS und entferne mit UIView.DeselectAll alle Auswahlen.
Jetzt noch wieder meine alte UIView geladen und fertig.
Nächster Aufruf: Sauber!
Für bessere Ideen bin ich zu haben.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln