Autor Thema: Problem/Frage:@PickList, @DbLookup und interaktive Sortierung der zweiten Spalte  (Gelesen 2985 mal)

Offline Sascha Seipp

  • Aktives Mitglied
  • ***
  • Beiträge: 139
  • Geschlecht: Männlich
Moin allerseits!

Folgendes Phänomen hab ich festgestellt und frage mich, ob das so sein soll:
Ein Auswahl-Button liefert über eine @PickList eine SAP-Materialnummer. Die zugrundeliegende Ansicht (1. Spalte Matnr., 2. Spalte Mat-Text) ist grundsätzlich nach der ersten Spalte sortiert. Die 2. Spalte kann aber per Klick auf den Spaltentitel die Sortierung nach dem Mat-Text vornehmen (nach SAP-Nummer findet man Sachen so schlecht).
Das scheint aber schlecht für das anschließende @DbLookup zu sein: Wenn zuvor die zweite Spalte sortiert wurde (womit dann zumindest in der angezeigten Ansicht die erste nicht mehr sortiert ist), liefert das Feld, welches den per DbLookup gelieferten SAP-Text zeigen soll, nur eine Fehlermeldung "Eintrag im Index nicht gefunden".

Was ich dabei nicht verstehe:
Ich hätte gedacht, daß das "Sortierung anklicken" in der Ansicht nur in dem PickList-Dialog wirkt, aber nicht in dem Backend-@DbLookup im Anschluß. Dem scheint aber wohl nicht so zu sein?

Anbei noch ein wenig Code zur Verdeutlichung (der von dem Auswahl-Button):
Code
FIELD R3Nummer := R3Nummer;
FIELD R3Nummer_Display := R3Nummer_Display;
FIELD R3Bez := R3Bez;
sapmat := @PickList( [Custom]:[Single]; ""; "Materials"; "SAP-Materialbezeichnung"; "Bitte Material auswählen"; 1);
saptext := @DbLookup( "Notes":""; ""; "Materials"; sapmat; 2);
@SetField("R3Nummer"; sapmat);
@SetField("R3Nummer_Display"; @TextToNumber(sapmat));
@SetField("R3Bez"; saptext)

Über eine Erleuchtung in der Hinsicht wäre ich dankbar. Fände es doof, für die Sache zwei verschiedene Ansichten zu benötigen, aber danach sieht es wohl aus..

Ciao
Sascha

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Für @dblookups nehme ich immer eine eigene Ansicht, in der NIX umsortiert wird. Und die sind immer vor den Anwendern versteckt.

Grüsse

Dau-in
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Anita spricht wahr. Für derartige programmatische Sachen immer eigene Ansichten verwenden (die man zudem wenigstens etwas durch Klammern um den Namen vom Otto-Normaluser versteckt.
Allein die Klammern sagen einem dann später: He, hier nicht dran drehen - das wird vom Code gebraucht!!

Bedenke: Die Ansicht, die da umsortiert wird, wird vom gleichen Client gecached, der dann auch das @dbLookup ausführt. Wenn dem nicht so wäre, würden Euch die Füsse einschlafen.

Bernhard

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Eine andere Alternative, die ich schon öfters mal eingesetzt habe ist, die Infos, die brauchst in einer versteckten Spalte der Ansicht zusammensetzen. Diese Spalte lässt du dir dann von @Picklist zurückgeben.

Spaltenformel: Feld1 + "~" + Feld2 + "~" + Feld3

Mit @Word kannst du dann die Werte wieder trennen.

Wenn du allerdings unterschiedliche Feldtypen hast oder die Werte aus unterschiedlichen Dokumenten geholt werden sollen, dann ist diese Lösung dafür nicht geeignet.


Axel
 

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

Offline HH

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
Wie verhält sich das, wenn du den Cache-Parameter auf NoCache oder ReCache setzt (abgesehen von den Zugriffszeiten)?

Hubert

Offline Sascha Seipp

  • Aktives Mitglied
  • ***
  • Beiträge: 139
  • Geschlecht: Männlich
Moin allerseits!

@Hubert: Die Zugriffszeiten sind faktisch nicht bemerkbar, die DB ist nich so groß. Cache-Parameter umbauen hat aber auch nix geholfen.

@Dau-in + Bernhard: Danke, so hat's geholfen und tut. Ich finde Notes an solchen Stellen zwar immer etwas gewöhnungsbedürftig, aber nun gut. Die Idee, die reinen Lookup-Ansichten per Klammer vor den Usern zu verstecken ist eine gute, die ich denn auch mal in Angriff nehmen werde.

@Axel: Den Ansatz versteh ich nu nicht ganz. Das Problem ist ja weniger die Rückgabe der PickList als die falsche Sortierung für das DbLookup? Außerdem brauch ich ja nur den Wert einer Spalte, nicht mehrerer.

Danke allerseits & Ciao
Sascha

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Das ist doch nicht so schwer zu verstehen. Wenn du die benötigten Info in einer Spalte zusammenfasst, dann brauchst du kein DbLookup mehr. Die Picklist kannst du dann sortieren wie du lustig bist.

In konkreten Fall heißt dass:
Du fügst an deine Picklistansicht eine versteckte Spalte an, das ist bspw. die 5.Spalte (kann bei deiner Ansicht abweichen). In dieser Spalte kombinierst du die Felder sapmat + "~" + saptext (Die Feldnamen können bei dir abweichen.) Diese Spalte lässt du dir dann von @Picklist zurückgeben. Somit hast du schon beide Werte. Du musst sie nur noch trennen.

Code
FIELD R3Nummer := R3Nummer;
FIELD R3Nummer_Display := R3Nummer_Display;
FIELD R3Bez := R3Bez;
temp := @PickList( [Custom]:[Single]; ""; "Materials"; "SAP-Materialbezeichnung"; "Bitte Material auswählen"; 5);
@SetField("R3Nummer"; @Word(temp; "~"; 1));
@SetField("R3Nummer_Display"; @TextToNumber(@Word(temp; "~"; 1)));
@SetField("R3Bez"; @Word(temp; "~"; 2))

Ich hoffe das ist jetzt etwas klarer geworden.

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

Offline Sascha Seipp

  • Aktives Mitglied
  • ***
  • Beiträge: 139
  • Geschlecht: Männlich
Hi Axel!

Für soviel Genialität war ich heute nicht genug im Notes-Thema drin, fürchte ich. Bei etwas intensiverem Nachdenken hätte ich da wohl auch drauf kommen können. Aber so isses klar, und eine recht nette Lösung. Mal schauen, was ich nu im Endeffekt einsetze.
Danke auch dir!

Ciao
Sascha

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
In diesem Zusammenhang ist vielleicht dieser Artikel ganz hilfreich:
Coding faster lookups in IBM Lotus Notes and Domino
siehe > http://www.ibm.com/developerworks/lotus/library/notes-lookups/

Gruß
Stefan
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz