wie sortiere ich eine DocumentCollection?!

  • Hilfe ...


    ich muss eine Document Collection sortieren


    die Dokumente haben 2 Nummernfelder, nach denen sortiert werden soll


    1. LZSortOrder
    2. LZSortOrderSub


    Was kann ich tun?!


    Bitte helft mir :cry:

    • Offizieller Beitrag

    es geht mit einem 2-dimensionalen Array.


    mit "set doc = db.GetDocumentByUNID(Array(1,x))" kommst Du dann an die Dokumente heran.
    Falls Du noch einen QSort brauchst, der Arrays sortieren kann, ich habe da was fertig.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Hi,


    da gibt es eine isSorted-Property. Dazu steht in der Hilfe

    Zitat

    Read-only. Indicates whether the documents in a collection are sorted. A collection is sorted only when it results from a full-text search of a database.


    Wenn es also möglich ist, hole die die Coll über eine Volltextsuche, dann ist sie schon sortiert.

    Für jedes Problem gibt es eine einfache Lösung, die es noch schlimmer macht.

  • also ...


    Diali ... das nehm ich als notlösung ... vielen Dank für die Mühe :)


    lodsnods ... die documentcollection sind unprocessed documents ... daher nicht per volltextsuche zu holen



    Ich werd jetzt einfach an alle Dokumente aus der DocumentCollection ein Item anhängen (copy_run="true") und dann in einer neuen view die erste spalte nach copy_run sortieren und dann eine schöne sortierte entry collection "byKey" erstellen.


    Ist das ne Idee?! :strike:


    Hab gehört, dieses view entry dingens hätte bei der 5er Version nen Bug ... stimmt das?! :-?

    • Offizieller Beitrag

    is ne Idee, wird aber langsamer sein, weil Du die Dokumente in der DC bearbeiten und speichern musst und dann muss der View-Index neu aufgebaut werden.


    Gruß
    Dirk

    • Offizieller Beitrag

    konnte noch keinen Bug feststellen. HAbe dieses Teil unter 5.0.9, 5.0.11 und unter 6.5.x benutzt.


    Gruß
    Dirk

  • also bei mir gehts jetzt auch ...


    '### unprocessed documents sortieren
    'alle relevanten Documente mit dem item copy_run versehen
    Set docAktuell = dcoCount.GetFirstDocument
    While Not(docAktuell Is Nothing)
    Set iteAktuell = docAktuell.ReplaceItemValue("copy_run","true")
    Call docAktuell.Save (True,True)
    Set docAktuell = dcoCount.GetNextDocument(docAktuell)
    Wend
    'in einer sortierten ansicht nach copy_run suchen
    Set vwCopyRun = dbcount.GetView("vw_copy_run")
    Set dcoViewEntryCollection = vwCopyRun.GetAllEntriesByKey("true",True)
    Set entViewEntry = dcoViewEntryCollection.GetFirstEntry()
    While Not (entViewEntry Is Nothing)
    Set docAktuell = entViewEntry.Document
    Messagebox(docAktuell.Form(0) & docAktuell.LZSortOrder(0))
    Set entViewEntry = dcoViewEntryCollection.GetNextEntry(entViewEntry)
    Wend
    'item copy_run wieder entfernen
    Set docAktuell = dcoCount.GetFirstDocument
    While Not(docAktuell Is Nothing)
    Call docAktuell.RemoveItem("copy_run")
    Call docAktuell.Save (True,True)
    Set docAktuell = dcoCount.GetNextDocument(docAktuell)
    Wend
    '### unprocessed documents sortieren


    und das alles nur, um eine document collection zu sortieren :-o


    [Blockierte Grafik: http://www.schamster.de/sagdochmal/scheissnotes.gif] :lol:

  • Hi,


    wenn Du Deine Schaffenskraft mehr in sinnvolle Überlegungen anstatt in dümmliche Bilder gesteckt hättest, würdest Du vielleicht bemerkt haben, das Dein Programm genauso idiotisch ist wie Deine Grafik.


    Setzte es nur so ein, wie es ist und die gerechte Strafe wird Dich früher oder später massiv ereilen.

    Für jedes Problem gibt es eine einfache Lösung, die es noch schlimmer macht.

  • Hallo,


    erstmal, ja es gibt einen Bug bei NotesViewEntry. Hab die Unterlagen in der anderen Firma liegen, aber es war sowas, dass es nicht funktioniert, wenn man in irgendeiner Spalte "Mehrfachwerte getrennt anzeigen" gewählt hat.


    Und was die Sortierung betrifft .... ich würde die Collection nehmen, die aus dem UnprocessedDocuments gebildet wurde, mit PutAllInFolder in einen verborgenen Ordner schieben. Dadurch sind sie sortiert, und ich kann sie gaaaaanz gemütlich mit GetFirstDocument und dann GetNextDocument abarbeiten. Anschließend aus Folder removen, schon fertig.


    Hope this helps, :sunclaus:


    LG aus dem matschig verschneiten Frankfurt,
    Tina

    • Offizieller Beitrag

    mit der Ansicht und dem Ordner gibt es ein Problem, was ist wenn 2 Personen gleichzeitig die Funktion ausführen?


    Gruß
    Dirk

  • Das kannst Du verhindern indem Du den Ordner erst anlegst wenn Du ihn benötigst und ihn dann auch gleich wieder löscht.
    Zudem könntest Du vorher Abfragen, ob es schon einen Ordner mit diesem Namen gibt.


    Gruss
    MeinerEiner


    P.S. Der Nachteil hierbei is, das der Ordner welcher als Sortierer benutzt werden soll, als "Vorgabe-Ordner für neue Ordner" gesetzt sein muss.

    • Offizieller Beitrag

    ... und wie sortiert Ihr dann die Collection, wenn der User nur Leserechte auf die DB hat?


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein