Autor Thema: Mehrfacher Aufruf von PicklistCollection  (Gelesen 2238 mal)

Offline StefanP1962

  • Frischling
  • *
  • Beiträge: 23
  • Geschlecht: Männlich
Mehrfacher Aufruf von PicklistCollection
« am: 29.11.13 - 19:58:39 »
 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"
« Letzte Änderung: 30.11.13 - 10:48:28 von StefanP1962 »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Mehrfacher Aufruf von PicklistCollection
« Antwort #1 am: 30.11.13 - 10:40:37 »
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.

Offline StefanP1962

  • Frischling
  • *
  • Beiträge: 23
  • Geschlecht: Männlich
Re: Mehrfacher Aufruf von PicklistCollection
« Antwort #2 am: 30.11.13 - 10:46:59 »
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.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Mehrfacher Aufruf von PicklistCollection
« Antwort #3 am: 30.11.13 - 17:30:26 »
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.

Offline StefanP1962

  • Frischling
  • *
  • Beiträge: 23
  • Geschlecht: Männlich
Re: Mehrfacher Aufruf von PicklistCollection
« Antwort #4 am: 01.12.13 - 21:51:52 »
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.

Offline StefanP1962

  • Frischling
  • *
  • Beiträge: 23
  • Geschlecht: Männlich
Re: Mehrfacher Aufruf von PicklistCollection
« Antwort #5 am: 02.12.13 - 20:13:27 »
Nachtrag 02.12.2013

War doch nix mit dem Workaround.  :( :-:

Wie kriege ich die blöden Haken weg? 

  ' Open the Mail view and remove all selections from it
  Set wsMail = New NotesUIWorkspace
  Call wsMail.Opendatabase(MailDB.SERVER, MailDB.FilePath, RealName, , True, True)
      
  Set MailUIView = wsMail.Currentview

Currentview bleibt aber die View aus der aufrufenden DB. :( Wie kriege ich den Fokus auf die Mail-DB?

Offline Jens Winkelmann

  • Junior Mitglied
  • **
  • Beiträge: 53
  • Geschlecht: Männlich
  • Jens Winkelmann
    • PAVONE AG
Re: Mehrfacher Aufruf von PicklistCollection
« Antwort #6 am: 03.12.13 - 00:19:29 »
Zwischen
Code
Call wsMail.Opendatabase(MailDB.SERVER, MailDB.FilePath, RealName, , True, True)
und     
Code
Set MailUIView = wsMail.Currentview

eventuell die beiden Zeilen

Code
Delete wsMail 
Set wsMail = New NotesUIWorkspace

oder diese beiden Zeilen

Code
Set uidb = wsMail .CurrentDatabase
Call uidb.OpenView("RealName")

setzen ?

Offline StefanP1962

  • Frischling
  • *
  • Beiträge: 23
  • Geschlecht: Männlich
Re: Mehrfacher Aufruf von PicklistCollection
« Antwort #7 am: 03.12.13 - 15:08:36 »
Der Fokus bleibt leider immer bei der ursprünglichne DB. :(

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz