DbLookup: Ansicht liefert nicht die aktuellen Daten

  • Hallo,


    ich habe folgendes Problem:


    Ich habe mir ein inkrementeles Feld über einen DbLookup gebastelt. Dabei werden die Dokumente absteigend nach diesem Feld in einer Ansicht sortiert. Ein DbLookup ruft diese Ansicht auf und nimmt sich den Wert in der ersten Zeile. Dieser wird dann um 1 inkrementiert und in das Feld geschrieben.


    Nun ist es aber so, dass mit der DbLookup nur alte Werte liefert. Lasse ich mir die Ansicht im Notes anzeigen und berechne das Feld dann, bekomme ich die aktuellen Werte.


    Die Ansicht wird also anscheinend solange nicht aktualisiert, wie sie der Client nicht anzeigt. Trotz ReCache und NoCache.


    Hat jemand eine Ahnung, wo mein Denkfehler liegt? Oder gibt es einen Workaround?

  • Zitat


    taurec schrieb:
    Ist möglicherweise die Ansichtsaktualisierung ausgeschaltet ?


    Sitze gerade nicht vor dem Designer, aber soviel ich weiss gibt es da doch nur eine Option auf der zweiten Seite der Ansicht-Einstellungen, bei der man die Formeln in der Ansicht aktualisieren kann. Soll das aktiviert sein?

  • Nein es gibt da eine Option bei den Ansichtseigenschaften wie eine Ansicht aktualisiert werden soll, und eine davon wäre nur manuell.
    Wenn das eingestellt ist bekommst du nur alte Werte bis du die Ansicht manuell bzw durch einen updall aktualisierst

  • Zitat


    taurec schrieb:
    Nein es gibt da eine Option bei den Ansichtseigenschaften wie eine Ansicht aktualisiert werden soll, und eine davon wäre nur manuell.
    Wenn das eingestellt ist bekommst du nur alte Werte bis du die Ansicht manuell bzw durch einen updall aktualisierst


    Ich hab' hier die englische Version des R6 Designers. Und dort gibt es im Register "Options" einen Punkt "Evaluate actions for every document change". Und es gibt das Ereignis "On Refresh", dass standardmäßig auf "Display indicator" steht. Das hab' ich auch mal auf "Refresh display" gesetzt, was aber nichts gebracht hat (bezieht sich wohl wirklich nur auf die GUI).

  • Zitat


    taurec schrieb:
    Ja das meinte ich, ich hatte öfters mal das Problem das wenn das falsche eingestellt war alte Werte bei Lookups zustande kamen


    Hm, aber mein Problem bleinbt. Ich hab' mal vor Jahren genau das gleiche in R5 gemacht - und da hat das einweindfrei funktioniert. Leider komm' ich nicht mehr an meine alten Datenbank ran...


    Sonst noch irgendwelche Ansätze?

  • Wenn die ansicht solche Probleme macht...waere es Dir nicht moeglich, den Wert nicht aus der spalte sondern aus dem Dokument zu holen..also aus dem Feld? Oder klappt das auch nicht??

  • Zitat


    dnotes schrieb:
    Wenn die ansicht solche Probleme macht...waere es Dir nicht moeglich, den Wert nicht aus der spalte sondern aus dem Dokument zu holen..also aus dem Feld? Oder klappt das auch nicht??


    Wie meinst Du das? Aus dem Dokument?


    Das Problem ist ja, dass er nur bspw. 2 Dokumente aus der Ansicht zurückmeldet, obwohl bspw. 4 schon drin sind.

  • Zitat


    taurec schrieb:
    Du hast aber nicht zufälligerweise Leserfelder in den Dokumenten drin ?


    Nein, es sind noch keine Sachen mit unterschiedlichen Rechten drin. Sollte also nicht das Problem sein.

  • Ich glaube, ich geb' das demnächst auf. Irgendwie aktualisiert der die Ansicht nur, wenn ich sie mir anzeigen lassen. Greife ich jedoch mit @DbLookup darauf zu, kann ich machen, was ich will. Ich bekomme nur die Werte, die in der Ansicht in der Oberfläche zuletzt angezeigt wurden. Sämtliche neuen Dokumente fehlen. :cry:

    • Offizieller Beitrag

    wie sieht der DBLookup aus?


    Verwende mal, falls du es noch nicht gemacht hast, die Option NoCache.
    @DBLookup("Notes":"NoCache";...)


    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


  • Sieht momentan so aus:

    Code
    _Nummern := @DbLookup("": "NoCache"; ""; "Angebotsnummer"; _Kuerzel; 2);


    ReCache habe ich auch schon probiert. Kam aber auch nix brauchbares dabei raus.

    • Offizieller Beitrag

    der Name "Angebotsnummer" kommt aber auch in keinem Namen oder Alias einer Ansicht / Ordner vor?


    Gruß
    Dirk

  • Zitat


    Diali schrieb:
    der Name "Angebotsnummer" kommt aber auch in keinem Namen oder Alias einer Ansicht / Ordner vor?


    Gruß
    Dirk


    Hab' den Namen der Ansicht in [i]AngebotsnummerView[i] umgeändert. Nun heisst nur noch das Feld so, in das später das Ergebnis der ganzen Geschichte eingetragen wird.


    Code
    _Nummern := @DbLookup("": "NoCache"; ""; "AngebotsnummerView"; _Kuerzel; 2);


    Hat aber auch nichts gebracht. :cry:

  • Hab' gestern noch rumprobiert, aber keine Lösung gefunden. Werde jetzt zur Holzhammer Methode ohne Formelsprache und ohne eine Ansicht übergehen: Per Lotus Script alle Dokumente in der Datenbank durcharbeiten, die größte Zahl ermitteln und um 1 inkrementieren. Ist sicher nicht die performanteste Methode, aber etwas anderes fällt mir nicht ein.

    • Offizieller Beitrag

    bau doch eine Ansicht, sortiert nach Nummer und hole mit Script das letzte Dokument (NotesView.GetLastDocument). Dann noch eins dazu zählen ...


    Hast Du anstelle von dem DBLookup mal einen DBColumn probiert? Was liefert der DBColumn?


    Mit einem Subset(Liste; 1) oder Subset(Liste; -1) kann der 1. oder letzte Wert leicht aus einer Liste ermittelt werden.


    Gruß
    Dirk


  • Die Frage bei NotesView.GetLastDocument ist, ob das wegen der Verwendung einer Ansicht genau so gut funktioniert, wie momentan mein @DbLookup.
    Probieren könnte ich es ja trotzdem mal. Allerdings wäre es schon merkwürdig, wenn Lotus Script andere Werte liefern würde als die Formelsprache.


    @DbColumn geht nicht, da ich dann alle Dokumente habe. Es soll aber für jeden Außendienstmitarbeiter einzeln hochgezählt werden. Also brauch in einen Schlüssel, der den Mitarbeiter enthält.