DocumentCollection enthält nicht alle passenden Dokumente

  • Lotus Script


    Habe ein komisches Problem. Ich habe einen Agenten, der eine Dokumentcollection über einen Search in einem View erzeugt.
    Wenn ich mir den View selber anschaue (er ist Kategorisiert), dann sind dort alle Dokumente, die in der Collection landen sollen in einer Kategorie vorhanden, nach deren Bezeichnung ich suche, wenn ich die Document-Collection zusammensuche.
    Das ganze klappt auch meißtens, aber komischerweise nicht immer. Ich hatte jetzt ein Dokument, das in dem View an der richtigen STelle auftaucht, aber in der Document-Collection nicht aufgenommen wird. Wie kann so etwas passieren???
    Sollte ich da besser eine ViewEntryCollection bauen??


    Nachdem ich das Dokument geöffnet hatte und anschließend wieder gespeichert (ohne irgendwelche Änderungen) tauchte es wieder in der Document-Collection auf.... :-? :hammer:


    Habt Ihr Ideen dazu???


    Norbert

  • Ich glaube nicht, dass Du mit einer viewentryCollection mehr Glueck haben wirst. Bei Notes besteht leider immer ein Restrisiko, was zu welchem Zeitpunkt gefunden wird. Ich habe aehnliche Probleme mit ftsearch in einer View. Fuer mich besteht in der viewentrycollection noch der weitere nachteil, dass ich hier erst ueberpruefen muss..abe ich auch ein Dok erwischt oder nur einen Viewentry. Ich habe kein Mittel gefunden, besagtes problem dauerhaft zu umgehen.

  • Vor einiger Zeit hatten wir hier mal die "www.Dreckstool.de"- Diskussion. Da wurde mir doch ziemlich über den Mund gefahren, als ich angemerkt habe, dass Notes doch häufig sehr "speziell" ist und nicht immer das tut, was es tuen sollte...


    Ich bin nun wirklich kein Notes-Miesepeter, aber irgendwie ist es doch immer wieder ganz schön buggy...


    Was kann man denn von einer Datenbank halten, die es nicht schafft alle passenden Dokumente an eine Funktion zu übergeben???
    Wie soll man da zuverlässige Programme entwickeln??


    Norbert

    • Offizieller Beitrag

    also einen Search gibt es nicht in einer NotesView - es sei den dies sei undokumentiert.
    Falls Du einen FTSearch in NotesView benutzt, dann wird im Index gesucht und der ist je nach Indexer aktuell oder nicht (Der Indexer läuft nur alle 60 Minuten, falls Ihr nichts an der Serverkonfiguration geändert habt). Mit NotesDatabase.UpdateFTIndex könntest Du diesen im Script anlaufen lassen.


    ODER


    Du benutzt den Search in NotesDatabase, dann musst Du in der Formula die Ansichtsauswahlformel und Deine Suchformel mitgeben.


    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

  • Ne wie Du im Thread sehen kannst, habe ich eine View, der Kategorisiert ist. Wenn ich auf den Inhalt einer dieser Kategorieen über DocumentCollection=view.GetallDokumentsByKey mit dem Key "Kategoriewert" zugreifen will, kriege ich fast bei allen Kategorien die richtigen Dokumente in einer Document-Collection übergeben. Bei einem aber nicht.... Sowas ist driss.. wenn ich dann das Dokument, das Fehlt nochmal abspeichere, ohne irgendwelche Änderungen, dann landet es auch in der Document-Collection....


    Sowas ist richtig Mist, weil es ja die ganze Zeit in dem View in der entsprechenden Kategorie angezeigt wird.... Das nenne ich einen groben Fehler, weil ich mich dann nicht darauf verlassen kann, dass die Documente, die der View anzeigt auch in der DocumentCollection landen.
    Bei der Anwendung geht es um eine Zeiterfassung.... Du kannst Dir vorstellen, was das einen Ärger gibt, wenn nicht alle erfassten Stunden tatsächlich verbucht werden....


    Grummel....


    :evil::evil:


    Norbert

    • Offizieller Beitrag

    sorry, hab wohl Dein

    Zitat

    der eine Dokumentcollection über einen Search in einem View erzeugt

    zuwörtlich genommen.


    Dann könnte es noch am Ansichtsindex liegen. Solche Fehler treten auf, wenn:
    - (1) NotesView zugewiesen
    - (2) Dokument geändert und dann
    - (3) in NotesView gesucht
    Zwischen dem Schritt (2) und (3) wird der Ansichtsindex im Script nicht aktualisiert. Mache noch einen NotesView.Refresh zwischen dem Schritt (2) und (3), dann umgehst Du diese Problem.
    Dies würde auch erklären, warum es funktioniert, wenn Du die Dokumente von Hand änderst und dann den Agent laufen lässt, denn beim Zuweisen des NotesView-Objektes wird der Ansichtsindex neu aufgebaut.


    Gruß
    Dirk

  • Also ich hatte so nen ähnlichen Effekt mal bei einer Entwicklung.
    Bei mir lag es daran, dass bei der Suche über das GetAllDocumentsByKey und der Anzeige Notes etwas unterschiedlich gearbeitet hatte.
    Ich hatte in einigen Dokumenten eine andere Schreibweise in Bezug auf Groß-/Kleinschreibung.
    Diese wurden in der Ansicht trotzdem unter der richtigen Kategorie angezeigt.
    Über die Funktion GetAllDocumentsByKey habe ich aber nur die Dokumente bekommen die genau mit der Schreibweise des SChlüssels übereingestimmt haben.
    Kann es eventuell daran liegen ?

  • Zitat


    Über die Funktion GetAllDocumentsByKey habe ich aber nur die Dokumente bekommen die genau mit der Schreibweise des SChlüssels übereingestimmt haben.
    Kann es eventuell daran liegen ?


    Nein, ich werde hier mal meinen Code posten, vielleicht wißt Ihr ja was ich oder Notes falsch machen:



    Set personname=New NotesName(persondoc.PersonNotesName(0))
    person=PersonName.common
    .
    .
    .
    workingday=date.DateOnly
    Set TSDC=timesheetview.GetAllDocumentsByKey(Person+workingday)
    If TSDC.Count>0 Then
    Summe=0
    For n=1 To TSDC.Count
    Set TS=TSDC.GetNthDocument(n)
    Next


    Tja und bei dem TSDC.Count kommt schon was falsches raus. Das Ding funktioniert aber meißtens, nur ab und zu wird ein Dokument nicht in die Document Collection aufgenommen....



    :cryclaus:


    Norbert

  • Also wie gesagt das könnte das gleiche Problem wie bei mir sein.
    Mach doch mal sowohl in der Ansichtsspalte wie auch in deinem Script ein @UpperCase bzw UCase drum und schau ob der fehler dann immer noch auftritt.

  • Dummerweise kann ich den Fehler nicht provozieren. Er ist mir im Testbetrieb bei zwei Dokumenten aufgefallen, aber jetzt muß ich wohl eher mal Deinen Tipp einbauen und alles Upper-Casen und dann Produktiv gehen. Die Leute werden sich schon beschweren....
    Aber irgendwie ist mir Notes doch suspekt ....



    Danke und Gruß


    Norbert

    • Offizieller Beitrag

    nur als Tipp:
    Set TS=TSDC.GetNthDocument(n) läuft langsamer als GetNextDocument, da Notes bei GetNthDocument intern immer wieder beim ersten Dokument anfängt.


    Besser ist
    set ts = tsdc.GetFirstDocument
    While Not ts is Nothing


    set ts = tsdc.GetNextDocument(ts)
    Wend


    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

  • Der Fehler ist normal. Datenbank und Ansichten sind getrennt zu betrachten.
    folgende Lösung führt nie zu diesem Fehler.
    S0 = "Form=\"myCluster\" & Strasse=\""
    + doc.getItemValueString("Strasse")
    + "\" & @IsMember(\"" + doc.getItemValueString("Hausnummer") + "\" ; HausNr) = 1"
    + " & Ort=\"" + doc.getItemValueString("Ort") + "\"";
    DocumentCollection dca = adb.search(S0, null, 0);


    "db.search " ist zwar langsam aber genau. Ansichtssuchen sind immer vom Index abhängig.