Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Alexis am 11.01.05 - 11:30:16

Titel: Problem mit collection.PutAllInFolder
Beitrag von: Alexis am 11.01.05 - 11:30:16
Hallo Forum,

was kann hier falsch sein:

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim docCurrent As NotesDocument
   Dim rtitem As NotesRichTextItem
   Dim Mailserver As String   
   Dim Mailbox As String
   Dim Mailview As String
   Dim ID As String
*
*
*
   Set db=session.CurrentDatabase
   Set uidoc = workspace.currentdocument
   ID=uidoc.FieldGetText("ID_Owner")
   Mailserver="MAIL.COM/SRV/CCN"
   Mailbox="MAIL\ALL" & ID & ".NSF"
   Mailview="All by Date"
   
   Set collection = workspace.PickListCollection(1, True, Mailserver,Mailbox,Mailview,"Mail Selection","Please select a document.")
   Call collection.PutAllInFolder( "MailFolder",True)
End Sub

Die Collection ist nicht leer, dennoch wird nichts in den Folder gepackt.  ???

Alexis
Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: Axel am 11.01.05 - 11:38:38
Hi,

existiert der Ordner? Ist es evt. ein privater Ordner?

Mir ist so im Hinterkopf, dass es Probleme mit dieser Methode gab, wenn der Ordner nicht vorhanden war.


Axel
Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: Alexis am 11.01.05 - 11:43:51
Hallo Axel,

der Ordner wird offensichtlich in der Mail-Datenbank angelegt und dort werden auch die Mails abgelegt! Der Ordner existiert in der Zieldatenbank und ist nicht privat.

Ich verstehe nur noch Bahnhof.

Alexis
Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: Axel am 11.01.05 - 11:59:34
Hi,

so richtig hast du meine Fragen nicht beantwortet.

Ist der Ordner bereits vorhanden?

Ist ein gemeinsamer Ordner oder ein privater?


Axel
Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: Alexis am 11.01.05 - 12:06:04
Hallo Axel,

der Ordner existiert in der Datenbank aus der ich die Aktion ausführe.
Der Ordner ein gemeinsamer.

Der Code legt jedoch in meiner Mailbox (!!!) ebenfalls den entsprechenden Ordner an!

Das verstehe ich nicht.

Alexis



Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: Axel am 11.01.05 - 12:29:46
Hi,

hmm..., dann sollte das aber eigentlich funktionieren. Ist das evt. ein Refresh-Problem? Hast du die Ordner - Ansicht mal aktualisiert.

Sonst fällt mir dazu im Moment aber auch nichts mehr ein.

Axel
Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: Alexis am 11.01.05 - 14:00:31
Hallo Axel,

es ist definitiv so, dass die ausgewählten Mails in der Mail-Datenbank (!!!) abgelegt werden. Der Folder in der Zieldatenbank ist und bleibt leer!

Ich werde dieses einmal mit einer anderen als Maildatenbank ausprobieren.

Alexis

Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: koehlerbv am 11.01.05 - 14:13:37
Das ist aber auch vollkommen logisch - Du kannst Dokumente nicht in einen Ordner einer ganz anderen Datenbank schieben, das geht nur innerhalb einer DB.

Bernhard
Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: Alexis am 11.01.05 - 14:27:35
Hallo Berhard,

wieso sollte das so undenkbar sein?

Per Copy & Paste kannst du doch auch jedes Dokument von einer DB in eine andere DB kopieren. Wo das Sinn macht ist eine andere Frage. Wenn die entsprechende Maske auch in der 2. DB vorhanden ist, klappt das völlig problemlos.

Hier meine praktische Anwendung: Im Service werden alle Vorgänge in einer Datenbank protokolliert. Zugehörige Mails sollten möglichst elegant mit eingebunden werden, so dass der Vorgang komplett ist. Was ist leichter, als die Mailschablone zu kopieren, auf die wesentlichen Felder zusammenzustreichen und die Mails - per,  nun hier sollte die Funktion greifen - zu importieren.

Schade dass es so nicht klappt.  :'(

Alexis
Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: Semeaphoros am 11.01.05 - 14:29:59
Alexis: Ein Folder ist nur eine Sammlung von Referenzen auf Dokumente in DERSELBEN Datenbank (per Definition ! ). Damit das in einer anderen DB sichtbar wird, müssen die Dokumente physisch kopiert werden.
Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: Alexis am 11.01.05 - 14:46:55
@Semeaphoros,

das hätte mir eigentlich bekannt sein müssen, hab ich doch früher einmal mit hunderten von Foldern gearbeitet.

PutAllInFolder klappt übrigens genauso mit einer View!?

Für mich heisst das dann wohl alle Infos aus der Collection herausziehen und in neue Dokumente übertragen.

Alexis
Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: Semeaphoros am 11.01.05 - 14:48:52
PutInFolder klappt nicht im Vieh-Stall. Die Auswahl der angezeigten Dokumente werden dort per Selection-Formula erstellt. Genau das ist der Unterschied zwischen Vieh und Folder: Vieh hat eine Selection - Formel, Folder ist eine freie Liste
Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: Axel am 11.01.05 - 14:50:48
Ups, da hab ich doch glatt überlesen, dass es sich um verschiedene DBs handelt.

Dann geht's so natürlich nicht.


Axel
 
Titel: Re: Problem mit collection.PutAllInFolder
Beitrag von: Alexis am 11.01.05 - 16:38:40
Hallo Forum,

es hat etwas gedauert, aber nun steht die gewünschte Lösung. Aus der PickListCollection lassen sich ja die einzelnen Dokumente adressieren und damit in die Zieldatenbank kopieren.

Hier der Code:

Sub Click(Source As Button)
'   Function to select mail(s) from own mailbox, copy them to database, open View to set doclinks in case report
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim uidb As NotesUIDatabase
   Dim collection As NotesDocumentCollection
   Dim copydoc As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim item As NotesItem
   Dim Mailserver As String   
   Dim Mailbox As String
   Dim Mailview As String
   Dim ID As String
   Dim n As Integer
   
   Set db = session.CurrentDatabase
   Set uidoc = workspace.currentdocument
   Set uidb = workspace.CurrentDatabase
   
   ID=uidoc.FieldGetText("ID_Owner")
   Mailserver="MAIL.COM/SRV/CCN"
   Mailbox="MAIL" & ID & ".NSF"
   Mailview="All by Date"
   Set collection = workspace.PickListCollection(1, True, Mailserver,Mailbox,Mailview,"Mail Selection","Select relevant mails.")
   Set doc = collection.GetFirstDocument
   If collection.Count = 0 Then Goto label1
   While Not ( doc Is Nothing )
      Set copydoc = doc.CopyToDatabase( db )
      Set doc = collection.GetNextDocument (doc)
   Wend
   Call uidb.OpenView("Mailview")
label1:
End Sub