Autor Thema: Werte per Dialog aus einer Ansicht abfragen  (Gelesen 3606 mal)

Offline michael-r

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.768
Werte per Dialog aus einer Ansicht abfragen
« am: 14.01.21 - 16:23:11 »
Hallo zusammen,

ich würde gern aus einer Maske per Button, mehrere Felder per Dialog aus einer Ansicht abfragen, in dem ich die Daten im Dialog markiere.
Ähnlich wie bei einer Picklist, die kann aber nur einen Wert von einem Feld übergeben. Ich brauche aber alle Werte aller Felder und muss die an unterschiedliche Felder übergeben, also ich selektiere Hans (Feld Vorname), Mustermann (Feld Nachnahme) und in der Maske soll dann die Felder Vorname und Nachname ensprechend gefüllt werden.

Ich habe schon gesucht, aber leider war das passende nicht dabei ;).

Hat jemand da ein Beispiel oder Schlagwort?

MFG Michael

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 478
Re: Werte per Dialog aus einer Ansicht abfragen
« Antwort #1 am: 15.01.21 - 10:34:59 »
Hallo Michael,

im Normalfall holt man sich bei diesen Anforderungen per @Picklist einen eindeutigen Schlüssel und sucht mit diesem Schlüssel dann die anderen Werte per @DbLookup aus entsprechenden Hintergrundansicht heraus.
Sofern die Daten in der gleichen Datenbank liegen, kann man sich als eindeutigen Schlüssel auch die UNID holen und über @GetDocField die fehlenden Daten suchen.

Viele Grüße

André

Offline michael-r

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.768
Re: Werte per Dialog aus einer Ansicht abfragen
« Antwort #2 am: 15.01.21 - 11:30:21 »
Hallo Andre,

Danke, ich werde mal ein bißchen basteln.

MFG Michael

Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
Re: Werte per Dialog aus einer Ansicht abfragen
« Antwort #3 am: 15.01.21 - 12:35:04 »
Hallo Michael,

der Vorschlag von André ist vielleicht naheliegend, weil simpel umzusetzen, aber nur dann empfehlenswert wenn es sich um eher wenige und sich selten ändernde Daten handelt die nachzuladen sind und die Datenbanken (und Server auf denen sie liegen) sich eher langweilen.

Der Grund ist schnell erklärt: Ressourcen sind endlich, jedes erneute @DbLookup oder @GetDocField verursacht Last auf dem Server. Aus Erfahrung neigen Programmierer noch dazu gern mal ein [NoCache] als Parameter einzubauen weil es ja irgendwann (insbesondere beim Testen mit immer wieder gleichen Testdaten) den Fall gab dass das Lookup einen (alten) Wert aus dem Cache geholt hat.
Im Ergebnis funktioniert die Anwendung zwar wie sie soll aber die Bedienung und die Reaktion der Anwendungen und Masken sind zäh, bei jedem Feldwechsel kommt die Sanduhr weil auch noch in den HideWhen-Formeln weitere @DbLookup's stecken. Letztendlich leidet die Akzeptanz darunter erheblich.

Um zum Ursprung zurück zu kommen: Deine Frage war schon ganz richtig formuliert, wenn man schon mehrere Werte auf einen Schlag holen und verteilen kann ist das immer der (ressourcentechnisch) bessere Weg.

Sehr viel musst du dafür gar nicht ändern, du fragst ja schon per Dialog eine Ansicht ab. In diese Ansicht baust du dir eine zusätzliche Spalte ein, nennen wir sie mal  "Returnvalues". Die Spalte macht man später unsichtbar, Nutzer sehen nach wie vor eine normale Auswahl.

Die zusätzliche Spalte bekommt als Wert die Values aller zurückzugebenden Felder als eine Zeichenkette mit einem erfundenen Trennzeichen, das in den Feldwerten selbst nicht auftauchen darf. Ich habe als Beispiel-Trennzeichen hier mal "@;" benutzt. Die Formel sieht dann in etwa so aus:
Code
@Text(nr) + "@;" + Sortname + "@;" + @Trim( Name_1 + " " + Name_2 ) + "@;" + PLZ + "@;" + Ort + "@;" + ............

In der Maske gibst du diese Spalte als zurückzugebenden Wert an und in der Eingabeumsetzung des Feldes zerlegst du die Zeichenkette wieder, z.B. mit
Code
retvalue := @Explode( string ; "@;") 
Die Feldwerte stehen dann als Liste (Array) mit retvalue[n] zur Verfügung und können leicht in einem Rutsch auf die Felder in der Maske verteilt werden. @Command([RefreshHideFormulas]) anschließend nicht vergessen.

Ich bin mir sicher hier im Forum schlummern etliche Beispiele und Tipps die das vielleicht sogar besser erklären.

HTH
Carsten

[Edit] Einen Thread zu genau dieser Problematik (Performanceprobleme durch zu viele @Lookups) und gleicher Lösung habe ich auf die Schnelle noch gefunden: https://atnotes.de/index.php/topic,60615.0.html
« Letzte Änderung: 15.01.21 - 13:00:53 von CarstenH »

Offline michael-r

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.768
Re: Werte per Dialog aus einer Ansicht abfragen
« Antwort #4 am: 18.01.21 - 11:28:35 »
Hallo Carsten,

danke schön. Der Vorschlag gefällt mir noch besser und funktioniert sehr gut.
Bis auf dass man die Spalte nicht unsichtbar machen kann, denn sonst werden keine Werte übergeben, aber ich habe die nach hinten geschoben und mit breite von 1, fällt das nicht auf.

Ich habe noch Sachen gesucht wie Domino Designer werte aus einer Ansicht übernehmen etc, mit Picklist hatte ich auch einige Sachen gefunden, aber das hatte alles nicht so weiter geholfen.

MFG Michael

Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
Re: Werte per Dialog aus einer Ansicht abfragen
« Antwort #5 am: 18.01.21 - 11:45:24 »
Unsichtbare Spalte sollte eigentlich gehen, das habe ich definitiv an mehreren Stellen benutzt und das wird auch in dem anderen von mir verlinkten Thread so von Torsten (Tode) erklärt.
Aber egal - dein Workaround mit Größe 1 ist ja auch ok.

Carsten

Offline michael-r

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.768
Re: Werte per Dialog aus einer Ansicht abfragen
« Antwort #6 am: 18.01.21 - 14:46:17 »
Also ich hatte es über die "Hide Column" in den Eigenschaften der Spalte gemacht.
Nicht über eine Formel.

MFG Michael

Offline ronka

  • Senior Mitglied
  • ****
  • Beiträge: 377
  • Was macht der hier denn, muß der überall sein ?
    • das nächste DominoCamp kommt in Juni 2023
Re: Werte per Dialog aus einer Ansicht abfragen
« Antwort #7 am: 19.01.21 - 19:41:37 »
Sonnst den Schrift farbe an den Hintergrund anpassen.. weissen schrift auf weise hintergrund ist auch unsichtbar.
das neueste von Notes und Domino auf den DominoCamp vom 19 bis 21 Juni 2023 auf www.DominoCamp.de

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz