Autor Thema: Wie schon so oft - documentcollection  (Gelesen 7302 mal)

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Wie schon so oft - documentcollection
« am: 15.09.12 - 17:09:23 »
Hallo,

gibt es eigentlich einen Befehl in LotusScript, der mir bei einem Dokument sagt, ob es Mitgleid in einer documentcollection ist, oder muss ich alle docid's einer collection erst in ein array schreiben um dann zu überprüfen, ob die gesuchte docid enthalten ist?


Danke und Gruß, Volker
« Letzte Änderung: 15.09.12 - 17:14:56 von bredemeier »

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Wie schon so oft - documentcollection
« Antwort #1 am: 15.09.12 - 18:04:54 »
du könntest dir vielleicht mit intersect oder contains etwas aus der Collection heraus basteln.

Je nachdem was du genau machen willst. Aus der Document-Klasse heraus ist mir zumindest nicht bekannt.
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Wie schon so oft - documentcollection
« Antwort #2 am: 15.09.12 - 18:37:13 »
Die Getdocument- methode der NotesDocumentCollection ist Dein Freund...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: Wie schon so oft - documentcollection
« Antwort #3 am: 17.09.12 - 11:57:25 »
Hallo,

also doch erst in ein Array schreiben.

Wegen nicht sortiertbare unprocesseddocumentcollection wollte ich eigentlich meine sortierte Ansicht von oben nach unten durchgehen und schauen, ob die Dokumente markiert sind oder nicht. Wenn markiert (also in der Collection enthalten), dann verarbeiten, wenn nicht, zum nächsten springen.

Momentan kopiere ich die markierten Dokumente in einen sortierten Ordner und gehe nach dem Neuaufbau die Dokumente von oben bis unten durch und entferne sie danach wieder aus dem Ordner. Leider funktioniert das zwar auf meinem Server, aber nicht auf einem Anderen. Die Dokumente werden zwar in den Ordner gelegt, aber danach nicht alle verarbeitet. Ich müsste sie ja nicht verschieben, wenn ich die markierten Dokumente sortiert verarbeiten könnte. Daher wollte ich nur wissen, ob es eigentlich eine einfache Abfrage gibt, ob ein Dokument "markiert" ist oder nicht.

Da es mit dem Ordner nicht funktioniert muss ich mir jetzt wohl die DOCID's in ein Array oder Textvariable schrieben und bei der Verarbeitung mit instr überprüfen, ob die docid enthalten ist.

Ich will die Dokumente nicht zu oft anfassen, da eine Schleife mit GetFirstDocument - GetNextDokument of Collection bei jedem Durchlauf bestimmt zu lange dauert.

Gruß, Volker

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Wie schon so oft - documentcollection
« Antwort #4 am: 17.09.12 - 12:05:12 »
????? Was gefällt Dir denn jetzt an GetDocument nicht?
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Wie schon so oft - documentcollection
« Antwort #5 am: 17.09.12 - 12:14:29 »
Was soll denn das Ganze überhaupt werden. Beschreib' mal etwas genauer was du überhaupt mit der Aktion erreichen willst.
Vorallem warum du unbedingt wissen willst ob ein dokument in der Collection ist oder nicht.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Wie schon so oft - documentcollection
« Antwort #6 am: 17.09.12 - 13:00:09 »
Eine sortierte Ansicht durchzugehen und zu schauen, ob das Dokument in der Collection ist, halte ich nicht für eine sehr performante Idee. In einer Datenbank mit 100.000 Dokumenten, bei der der Benutzer 5 markiert, müsstest Du dann 100.000 Dokumente anfassen, um die 5 relevanten zu finden.

Vergiss die sortierte Ansicht und nimm nur die Collection UnprocessedDocuments. Die gehst Du einmal durch und schreibst in ein Array oder eine Liste (abhängig von der Anzahl der Dokumente, da ein Array nur eine begrenzte Größe hat, so bei ca. 3.000 Dokumenten könnte das krachen) Sortierstring und UniversalID.

Dann sortierst Du das Array (oder die Liste) und arbeitest es von oben nach unten ab. Das jeweilige Dokument dazu holst Du Dir mit db.GetDocumentByUnid (Right (Element, 32)).

Ich weiß nicht, wozu Du die Sortierung brauchst, falls es nur für das Ergebnis ist (z.B. eine Art Newsletter), kannst Du auch die Dokumente unsortiert verarbeiten und nachher das Ergebnis sortieren.

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: Wie schon so oft - documentcollection
« Antwort #7 am: 17.09.12 - 14:46:55 »
Danke erst einmal für die Antworten. O.K. dann etwas ausführlicher.

Ich habe eine Ansicht mit ca. 500 Dokumenten, dort werden nach Datum, Klienten und Gruppen sortiert Dokumente dargestellt. Monatsweise kategorisiert. Nun will ich aus diesen Dokumenten (Patientendokumentation) am Monatsende Nachweise über die Dokumentationen erstellen. Wenn das monatlich über alle (ca. 300 Dokumente, die anderen sind dann meistens schon vom neuen Monat) erstellt wird, ist es einfach, denn dann schnappe ich mir das erste Dokument in der Ansicht für diesen Monat und gehe eins nach dem anderen durch. Ist es ein neuer Patient, fange ich einen neuen Nachweis an.

Jetzt wollen die aber auch einzelne Nachweise von nur ein paar Klienten erstellen. Also markieren sie die entsprechenden Dokumente und ich habe jetzt das Problem mit der nicht sortierten unprocessed documents. Also kopiere ich die dann vielleicht 50 Dokumente in einen sortierten Ordner, aktualisiere den Ordner und fange wieder von oben an. Wenn alle Nachweise erstellt wurden, entferne ich die Dokumente wieder aus dem Ordner.

Bei mir funktioniert die Funktion ohne Probleme, auch nach dem 100 sten Durchlauf. Auf einer Replik auf einem anderen Server funktioniert es aber nicht. Er schiebt zwar alle Dokumente in den Ordner, bei dem erstellen der Nachweise fehlen aber unterschiedlich viele. Mal nur 10%, manchmal 40%, und immer unterschiedliche. Ich habe da keine Erklärung für. Nun habe ich von dem Client auf dem anderen Server die Funktion auf meinem Server aufgerufen und auch keinen Fehler gehabt. Gut denke ich, vielleicht hat die Datenbank eine "Macke". Ich habe dann die Datenbank weggeschoben und von meinem Server eine neue Replik erstellt. Aber der Fehler ist auf diesem Server immer noch da.

Naja, dann muss man eben einen anderen Weg gehen. Ich wollte jetzt garnicht erst die Dokumente in einen Ordner kopieren, sondern mit dem ersten Dokument in der Ansicht beginnen und nur die Dokumente nehmen, die in der unprozesseddocumentcollection sind benutzen. Daher war meine Frage, gibt es eine einfach Möglichkeit abzufragen, ob ein Dokument in einer collection ist, oder nicht.

Mit getdocument müsste ich doch die collection für jede Abfrage durchlaufen, oder?

Sonst muss ich mir eben die bis zu 500 DOCID's in eine Textvariable schreiben und bei dem Durchlauf per instr abfragen, ob die id enthalten ist.

Mit der Sortierung innerhalb der Collection ist es auch nicht so einfach, denn es ist nach Monat und Klient kategorisiert und dann nach Datum sortiert.

Gruß, Volker

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Wie schon so oft - documentcollection
« Antwort #8 am: 17.09.12 - 14:50:21 »
Schau dir einfach mal an, was man mit LIST so alles anstellen kann. Das was du da machen willst, geht komplett innerhalb von Script. Dafür braucht man keine Ordner.
Und wenn du schon dabei bist, lies einfach mal nach was dir UnprocessedDocuments in welchem Kontext wie liefert.
« Letzte Änderung: 17.09.12 - 14:53:25 von Thomas Schulte »
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Wie schon so oft - documentcollection
« Antwort #9 am: 17.09.12 - 14:56:33 »
Hallo,

Mal ein weiterer Ansatz.

Koennte nicht auch der NotesViewBavigator ein sinnvoller Ansatz sein, um alle Dokumente einer bestimmten Kategorie auf einmal zu ermitteln.


Andreas

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Wie schon so oft - documentcollection
« Antwort #10 am: 17.09.12 - 15:02:49 »
Kann es sein, dass auf dem anderen Server mehrere Benutzer gleichzeitig solch eine Auswertung erstellen und die benutzen den gleichen Ordner? Und die ziehen sich dann gegenseitig die Dokumente weg?

Oder arbeitest Du mit persönlichen Ordnern? Die sind nicht wirklich stabil, da würde ich solche Auswertungen auch nicht drüber laufen lassen.

Die Logik mit dem Instr ist in dem Kontext vielleicht nicht die schlechteste, aber ich würde, wie Thomas Schulte schon geschrieben hat, auf (mein persönliches Lieblingskonstrukt) LIST zurückgreifen, das ist sicherlich schneller.

Singemäß so:

Dim dokumente List As Integer
>UnprocessedDocuments durchlaufen
dokumente (doc.UniversalID) = 1

>dann durch die Ansicht
If Iselement (dokumente (doc.UniversalID)) Then
   'doc ist markiert
End If


Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: Wie schon so oft - documentcollection
« Antwort #11 am: 17.09.12 - 15:28:04 »
Danke für die Unterstützung, bin immer wieder gerne hier.  :D

@Peter: Die Nachweise werden nur von einer Person erstellt (Button ist nur von einer Person sichtbar). Für die Zukunft wäre ein persönlicher Ordner sinnvoll, wenn es grundsätzlich funktionieren würde.

Habe an anderer Stelle schon einmal mit dieser Ordner-Logik gearbeitet und die funktioniert auf dem Server, da geht es um Journale für die Buchhaltung. Ich erstelle dort 2 Journale, 1x über die Rechnungen und 1x über alle Positionen. Zuerst erstelle ich das erste Journal über die Rechnungen und schiebe dabei die Positionen in einen sortierten Ordner. Im 2ten Schritt erstelle ich das 2te Journal aus dem Ordner und entferne die Dokumente aus diesem.

Ich schaue mir mal LIST an, habe ich noch nicht mit gearbeitet, hört sich aber interessant an.

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: Wie schon so oft - documentcollection
« Antwort #12 am: 17.09.12 - 15:31:09 »
Man bin ich doof, hab mir das Skript von Peter mal eben angesehen, klar hab ich da schon oft mit gearbeitet.

Manchmal sieht man den Wald vor lauter Bäumen nicht.  :-:

Offline bredemeier

  • Frischling
  • *
  • Beiträge: 49
Re: Wie schon so oft - documentcollection
« Antwort #13 am: 18.09.12 - 17:23:13 »
kleine Änderung, große Wirkung

so funktioniert es auch auf dem anderen Server und natürlich noch etwas schneller

Dank an Thomas und Peter

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz