Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: ra.t am 13.12.11 - 12:57:53

Titel: CopyToDatabase Methode
Beitrag von: ra.t am 13.12.11 - 12:57:53
Liebe Freunde der LotusScript Programmierung,
ich bin leider immer noch ein Anfänger in dieser Geschichte.
Obwohl ich nun ein 1000 Seiten Werk gelesen und mir im Internet den Wolf gesucht habe, finde ich nicht den entsprechenden Befehl den ich benötige.

Ich möchte einen Code schreiben, mit dem ich selektierte Vorlagen aus einer Datenbank in mein Postfach kopiere.
Beispiel: Ich öffne die DB, selektiere aus der Ansicht (Vorlagen) mehrere Dokumente und diese werden dann über einen LotusScript-Agenten in mein Postfach kopiert (Da (Vorlagen) im Postfach ein Ansicht ist, können die Dokumente einfach reinkopiert werden)
Also eigentlich eine ganz einfache Angelegenheit.

Jetzt habe ich schon sehr viele Kopiermethoden kenngelernt, die es wohl so gibt. Ich kann nun das erste, zweite , vorigen oder nachfolgende, oder eins mit bestimmten Eigenschaften, oder alle, oder halt das letzte Dokument in mein Postfach kopieren. Aber nicht das selektierte (Current). :-:

Wieso kann es nicht sowas wie " Set doc = view.getcurrentdocument" geben. Das wäre doch so einfach und logisch, da es ja schließlich auch ein getfirstdocument, getprevdocument,getlastdocument,getnext und so weiter gibt.

Ich brauch da echt mal einen Schubster und bitte nicht mit "das steht doch im Handbuch.." oder "schau dir "workspace.currentdocument.." mal an, antworten.

Wie krieg ich das selektierte (nicht geöffnete) Dokument in z.B. die CopyToDatabase Methode ?
mfg
Ralf.

PS.: Ich habe echt sehr wenig Ahnung von Lotus Script.
Titel: Re: CopyToDatabase Methode
Beitrag von: koehlerbv am 13.12.11 - 13:03:40
NotesDatabase.UnprocessedDocuments

Bernhard
Titel: Re: CopyToDatabase Methode
Beitrag von: Peter Klett am 13.12.11 - 13:03:54
Über NotesSession holst Du Dir die CurrentDatabase, darin die NotesDocumentCollection UnprocessedDocuments, die kannst Du dann mit GetFirstDocument und GetNextDocument durchlaufen
Titel: Re: CopyToDatabase Methode
Beitrag von: ra.t am 13.12.11 - 14:44:50
Erst mal vielen Dank für die Antworten.
Wenn der Agent schon auf "nur ausgewählte Dokumente" eingestellt werden kann, warum kann dieser dann nicht einfach das jeweilige Dokument kopieren.
Ich kann doch auch Agenten erstellen, die z.B. in den ausgewählten Dokumenten Werte ändern.

Also geht das so nicht, wie ich mir das denke ?
mfg
Ralf
Titel: Re: CopyToDatabase Methode
Beitrag von: Peter Klett am 13.12.11 - 14:46:52
Das kannst Du aber nur per Formel. Mit Script musst Du immer den längeren Weg gehen.
Titel: Re: CopyToDatabase Methode
Beitrag von: ata am 14.12.11 - 15:14:48
... wenn du den Namen der Ansicht in der Datenbank kennst, dann verwende doch ein ws.PickListCollection mit dieser Ansicht - dann hast du zudem den kompletten Weg im Griff...

Toni
Titel: Re: CopyToDatabase Methode
Beitrag von: ra.t am 14.12.11 - 18:00:32
Hallo Toni,
Ist es nicht so, das bei PickListCollection der Anwender noch die Auswahl machen muss ?

In meinem Fall hat der Anwender in der Ansicht schon die Dokumente markiert, bevor der Agent läuft und dieser soll dann die markierten Dokumente in das Postfach kopieren.

Ich glaube das wird wohl nur mit "UnprocessedDocuments" funktionieren ( da hat wohl koehlerbv schon recht)
mfg
Ralf
Titel: Re: CopyToDatabase Methode
Beitrag von: Peter Klett am 14.12.11 - 18:07:00
Es wäre eine andere Herangehensweise, der Benutzer würde dann die Auswahl erst in der Picklist treffen.
Titel: Re: CopyToDatabase Methode
Beitrag von: ra.t am 14.12.11 - 18:35:01
Tja Peter,
das ist aber leider nicht die Anforderung.
Ich hoffe,  ich kann das Morgen mal ausprobieren.
mfg
Ralf
Titel: Re: CopyToDatabase Methode
Beitrag von: koehlerbv am 14.12.11 - 18:58:56
Ralf, programmtechnisch gesehen ist es ja eigentlich wurscht, wie herum man das macht: Das Ergebnis ist immer eine NotesDocumentCollection. Der Unterschied liegt nur in der Buhtong-Beschriftung:
- Übernehme markierte in meine Mail-DB oder
- Vorlagen in meine Mail-DB übernehmen (und dann in der PickList "Bitte wählen Sie die zu übernehmenden Vorlagen")

Was Du brauchst:
- UnprocessedDocuments instantiierten
- des aktuellen Users Mail-Db instantiieren (NotesDatabase.OpenMail)
- durch die NotesDocumentCollection loopen und die UnprocessedDocuments kopieren
- eine nette Fertigmeldung ausgeben

Für das Verhindern des doppelten Kopierens sollte m.E. der User selber zuständig sein, da es ja auch sein kann, dass er sich ein Dokument verändert oder gelöscht hat. Ansonsten kann man Qualität und Komfort natürlich beliebig nach oben treiben (ich hätte da eine Menge Ideen)  ;)

HTH,
Bernhard

PS: Bei nun konkreten Fragen: Immer gerne, Ralf!
Titel: Re: CopyToDatabase Methode
Beitrag von: ra.t am 19.12.11 - 17:24:40
So, ich konnte die Anwendung nun fertig stellen.
Mit "NotesDatabase.UnprocessedDocuments" hat es gut funktioniert.
Obwohl die "PickListCollection " doch wohl sauberer wäre (da hat  Toni schon recht).
Noch einmal Danke für die Unterstützung.

mfg
Ralf