Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: harapat am 25.06.12 - 15:56:07

Titel: DBlookup bringt falsches Ergebnis
Beitrag von: harapat am 25.06.12 - 15:56:07
Hallo allerseits!

Ich möchte in einer Maske aus einer Ansicht nach einem Key eine unbestimmte Anzahl von Sätzen auslesen und danach eine bis mehrere Ergebnisse über ein Dialogfeld auswählen und speichern. Es handelt sich hierbei um Email-Adressen.

@Text(@DbLookup(""; ""; "(Lookupansprech)"; Nummer; 4))

Funktioniert super, ich bekomme zb. 3 Möglichkeiten im Dialog angezeigt, wähle eine aus und das Ergebnis steht im Datenfeld.

Wenn aber das Ergebnis groß ist dann passiert folgendes: Ich bekomme die Möglichkeiten in dem Dialogfeld angezeigt, wähle aus und ich bekomme immer einen falschen Satz. Meist den Satz davor! ???

Kann jetzt nicht sage wie viele Datensätze das sein müssen damit dieser Effekt eintritt, aber kann das was mit der 65 K problematik zu tun haben, die es bei anderen Routinen gibt?
Habe auch schon ReCache versucht, hat aber auch nichts gebracht. :-:

Bitte Hilfe.
Danke.


Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: Tode am 25.06.12 - 16:02:34
Erst mal: Der DBLookup ist eigentlich der Befehl, bei dem man am häufigsten über die 64k- Thematik stolpert... aber dann bekommt man entsprechende Fehlermeldungen.

Ich vermute, dass der Fehler in Deinem weiteren Code liegt, z.B. bei der Auswahl... Wahrscheinlich enthält Dein Ergebnis einen Text (z.B. ein Semikolon), das an irgendeiner Stelle des Codes als Mehrfach- Trennzeichen interpretiert wird, und deshalb "verrutscht" das alles.

Aber: Mehr input = mehr output. In der geposteten Zeile passiert der Fehler definitiv nicht, obwohl es worst practice ist, einen DBLookup ohne @Iserror zu handeln...
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: harapat am 25.06.12 - 16:14:01
Danke für die schnelle Antwort.

Also ich hab nur diesen Code... in einem Dialogfeld
Dort habe ich bei Auswahl "Formel für Auswahl verwenden" diesen Code. Sonst gibts da nix....
 ???
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: harapat am 25.06.12 - 16:57:37
Hier der Aufruf
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: koehlerbv am 25.06.12 - 18:30:17
Jetzt mal Butter bei die Fische: Was heisst denn "grosses Ergebnis"? Die 64-k-Grenze solltest doch Du abschätzen können - wir können das ja nun gar nicht beurteilen.
Ich glaube da aber noch nicht so richtig dran, denn bei >60kB+ fliegt Dir das ganze Konstrukt auseinander, eine falsche Datenübernahme habe ich noch nie gesehen (was nix heissen wollen - auch nicht nach 20 Jahren Notes).

Letzte Frage: Was soll denn das komische @Text um das @dbLookup? Liest Du Text aus oder nicht?? Vor dem nächsten Test diesen vermutlichen Quatsch also in die Tonne drücken!

Bernhard
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: MarkusL am 26.06.12 - 12:01:11
Hallo zusammen,

ich habe eine ergänzende Frage, die an diese Stelle meiner Meinung nach passt:
Ich frage mit einem dblookup Werte aus einer Ansicht ab. Dies funktioniert auch wunderbar.
Wenn allerdings ein neuer Wert in die Ansicht eingetragen wird oder sich ein bestehender Wert ändert, werden diese Änderungen nicht übernommen. Ich muss dann erst Notes schließen und wieder öffnen.
Kann mir jemand sagen, warum die Werte nicht aktualisiert werden, obwohl ich schon NoCache und ReCache ausprobiert habe.
Die Formel im Feld "Raum" lautet:
@DbLookup( "" : ReCache ; "" : "" ; "viewRessourcen" ; @GetField("Raum_Ort") ; 1 ; [FAILSILENT])

Weitere Frage:
Wenn ich das Feld "Raum_Ort" ändere, ruft die Formel im Feld "Raum" erst dann die richtigen Werte ab, wenn ich die Maske speichere oder aktualisiere. Ich habe im Feld "Raum" den Haken bei "Auswahl bei Dokumentaktualisierung aktualisieren" gesetzt (s. Kommentar von harapat). Warum fragt die Formel dann nicht sofort den richtigen Wert ab?

Danke für die Hilfe.

Markus
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: Axel am 26.06.12 - 12:16:33
Kann mir jemand sagen, warum die Werte nicht aktualisiert werden, obwohl ich schon NoCache und ReCache ausprobiert habe.
Die Formel im Feld "Raum" lautet:
@DbLookup( "" : ReCache ; "" : "" ; "viewRessourcen" ; @GetField("Raum_Ort") ; 1 ; [FAILSILENT])

Notes ist Weltmeister im Cachen von Daten.  ;)

Da helfen auch die Parameter NoCache oder ReCache nichts. Aber normalerweise sollte ein erneutes Öffnen des Dokumentes reichen.
 

Weitere Frage:
Wenn ich das Feld "Raum_Ort" ändere, ruft die Formel im Feld "Raum" erst dann die richtigen Werte ab, wenn ich die Maske speichere oder aktualisiere. Ich habe im Feld "Raum" den Haken bei "Auswahl bei Dokumentaktualisierung aktualisieren" gesetzt (s. Kommentar von harapat). Warum fragt die Formel dann nicht sofort den richtigen Wert ab?

Das sagt doch schon die Beschreibung der Option aus, "Auswahl bei Dokumentaktualisierung aktualisieren". Bei Dokumentenaktualisierung und die findet eben normalerweise nicht automatisch statt.

Du kannst allerdings in den Maskenoptionen einstellen, dass eine automatische Aktualisierung stattfinden soll, aber ich hatte da schon sehr unschöne Seiteneffekte, dass Werte falsch angezeigt wurden da z.B. die Maske noch nicht vollständig ausgefüllt war. Außerdem kann die Performance sehr stark darunter leiden.

Axel
 
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: Peter Klett am 26.06.12 - 12:24:23
Ich könnte mir vorstellen, dass das am @GetField liegt, vielleicht muss das Dokument gespeichert sein, damit da der aktuelle Wert herauskommt. Probier mal

@DbLookup( "" : ReCache ; "" : "" ; "viewRessourcen" ; Raum_Ort; 1 ; [FAILSILENT])
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: Tode am 26.06.12 - 12:30:07
EVtl. liegt es auch einfach daran, dass man ReCache in Anführungszeichen schreibt...
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: Peter Klett am 26.06.12 - 12:35:21
EVtl. liegt es auch einfach daran, dass man ReCache in Anführungszeichen schreibt...

Mit Sicherheit ...
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: MarkusL am 26.06.12 - 12:37:07

Agrrrrrrrr  :P
Wenn man die Syntax beachtet, dann klappt es auch. Danke an Tode.

Danke für die Hilfe an alle.

Schönen Tag noch
Markus
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: harapat am 26.06.12 - 13:24:28
Habe jetzt auch ohne @text gestestet. Hilft nichts.
Bzgl Datenmenge - habe jetzt nochmals nachgerechnet. sind weniger als 54 K.
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: harapat am 26.06.12 - 14:00:24
Heb jetzt unterschiedliche sätze entfernt und die satzanzahl von über 50 auf ca.10 reduziert. es funktioniert. habe dann gtestet und einen nch dem andere satz gelösct. unter 50 funktionirt es.... sobald ich den 51.tn himzufüge habe ich wieder datensalat....
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: Axel am 26.06.12 - 14:14:51
EVtl. liegt es auch einfach daran, dass man ReCache in Anführungszeichen schreibt...

Grrr... Das hatte ich übersehen.

Axel
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: harapat am 26.06.12 - 14:16:54
Das ich ein ganz anderes problem habe anscheinend auch....  ;)
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: Tode am 26.06.12 - 14:26:06
@MarkusL: Das nächste Mal bitte nicht fremde Threads kapern, nur weil sie zufällig vom gleichen Befehl handeln...

@harapat: Passiert das immer beim gleichen Datensatz, oder hängt das wirklich nur von der Anzahl der Sätze ab? Ich kenne dieses Phänomen aus alten Versionen bei der Adressbuchauswahl, wo Notes mit Sonderzeichen (vor allem dem ö) durcheinander kam und auch immer den Satz vorher verwendet hat....

Sind denn die 51 Datensätze "geheim", oder könntest Du uns eine leere Datenbank nur mit der Lookup- Ansicht mit den 51 Datensätzen und der Maske (bzw. einer leeren Maske mit dem Feld SendTo2 und dem Feld "ParNummer") hier hochladen, damit wir das mal bei uns nachvollziehen können?

ggf. Ist auch das Feld SendTo2 kaputt... Erstell das mal komplett neu, und berichte, ob das eine Änderung bewirkt.
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: harapat am 26.06.12 - 16:22:22
Also ich habe das Feld neu ersellt. Leider kein anderes Ergebnis.
Die Daten sind Kundendaten und doch etwas heikel.
Aber es wird immer ein vorheriger Datensatz genommen. entweder der direkt davor liegende oder2 - 3 vorher.
Scheint in die Richtung zu gehen die du gemeint hast.

Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: umi am 27.06.12 - 15:32:46
Hi

Hast Du schon mal ein "NoCache" anstatt "ReCache" probiert?
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: harapat am 27.06.12 - 16:04:30
bzgl. ReCache und Nocache - ja beides schon probiert. Auch kein ergebnis... :(
Titel: Re: DBlookup bringt falsches Ergebnis
Beitrag von: Tode am 28.06.12 - 07:16:06
Mach mal folgendes, sonst kann man das nicht sauber debuggen: erstell ei. feld, berechnet, mehrachwerte zulassen, und schreib deine dblookup formel da rein. Dann schau Dir in einem gespeicherten dokument das feld via properties an. Wenn das feld keine sensiblen daten enthält, dann kopiere uns den inhalt des lookups doch mal hier rein. Kannst ja vorher ein @ReplaceSubstring (@Lowercase(DeinLookup); "a" : "b" : "c" : "d" : "e" : "f" : "g" : "h" : "i" : "j" : "k" : "l" : "m" : "n" : "o" : "p" : "q" : "r" : "s" : "t" : "u" : "v" : "w" : "x" : "y" : "z" ; "x" ) drum machen, um das komplett zu anonymisieren.

Hast Du in den Werten zufälligerweise aliase drin (also das Pipe- Zeichen |) ?