Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Scotty67 am 14.06.10 - 07:23:07

Titel: Kann DBLookup mehr zurückliefern ?
Beitrag von: Scotty67 am 14.06.10 - 07:23:07
Ich hab in einem Feld eine KundenNummer stehen.
In beinem 2ten Feld mache ich auf Basis dieser Kundennummer ein DBLookup...das funkt auch.

Das Lookup ist auf Basis einer Formel in einem Dialoglist Feld "VB" hinterlegt.
@Unique(@DbLookup("";"":"";"(Vertriebsbeauftragter)";KundenNummer;2))

Jetzt wird ja der Wert der Spalte 2 aus dem View "Vertriebsbeauftragter" auf  Basis des Keys "KundenNummer" als einzelner Wert
in der Dialogliste ausgewählt.  SUPER - gut funkt es....NUR... mein Kunde hätte gerne das hier mehr Information zurückgeliefert wird so das z.B. Ort + Straße auch der Auswahl sichtbar sind...damit die Auswahl eindeutiger ist.

Ist mir schon klar ich könnte den View "Vertriebsbeauftrager" so aufbauen  das mehrere Werte in  eine Spalte zusammengefassst werden könnten - nur schlußendlich soll nur der Wert aus Spalte 2 in das Feld "VB" zurückgeschrieben werden.

Ich persönlich glaub ja das geht gar nicht was mein Kunde da wil !? Oder bin ich zu doof und hab den Tunnelblick ?  ;-))
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Peter Klett am 14.06.10 - 07:39:45
Probier es mit einem Alias. In der Spalte rechnest Du erst alle Informationen zusammen, die angezeigt werden sollen, dann folgt ein Pipe | und dann der Wert, der in Dein Feld geschrieben werden soll (der Alias), z.B. "Name Vorname - Strasse - Ort|Name Vorname", dann kannst Du Name Vorname -Strasse - Ort auswählen und erhältst Name Vorname zurückgeliefert. Achte darauf, dass keine Kommata in der Auswahlliste enthalten sind.
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Scotty67 am 14.06.10 - 07:59:06
Guten Morgen Peter !

Danke mal für den Hinweis - hab mich gleich drauf gestürzt  ;D
Hmmmm... das heißt in der Spalte im View soll ich diese Werte zusammenstoppeln ?

Nachstehende Spaltenformel funkt nicht - oder liegt es am Pipe...???

(VertriebsbeauftragterNachname  + " - " + VertriebsbeauftragterVorname + "-" + Vertriebsweg + " - " + VertriebswegPersonalNr) | VertriebsbeauftragterNachname
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Peter Klett am 14.06.10 - 08:11:21
VertriebsbeauftragterNachname  + " - " + VertriebsbeauftragterVorname + "-" + Vertriebsweg + " - " + VertriebswegPersonalNr + "|" + VertriebsbeauftragterNachname
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Scotty67 am 14.06.10 - 08:24:01
....hmmm die Dialogliste bleibt leer ....

hier der VIEW
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Peter Klett am 14.06.10 - 08:28:24
Vielleicht mag er das Pipe nicht im DBLookup, dann probier mal dieses:

Spaltenformel:

VertriebsbeauftragterNachname  + " - " + VertriebsbeauftragterVorname + "-" + Vertriebsweg + " - " + VertriebswegPersonalNr + "*" + VertriebsbeauftragterNachname

Listenformel:

@ReplaceSubstring (@Unique(@DbLookup("";"":"";"(Vertriebsbeauftragter)";KundenNummer;2)); "*"; "|")
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Peter Klett am 14.06.10 - 08:34:06
Die View sieht gut aus, genau so muss die Auswahlliste aussehen. Natürlich ist das jetzt Spalte 4 und nicht mehr Spalte 2 (für das @DBLookup). Inhaltlich würde ich auch noch darüber nachdenken, ob Du wirklich den Nachnamen zurückhaben willst, denn spätestens wenn es z.B. mehrere Müllers gibt, hast Du ein Problem, aber das ist eine andere Baustelle.
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Scotty67 am 14.06.10 - 08:53:02
 :(

geht leider immer noch nicht - dialoglist ist noch immer leer
hier das Feld
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Peter Klett am 14.06.10 - 09:02:07
Merkwürdig. Deine erste gepostete Formel hat doch funktioniert, oder? Hast Du nach dem Ändern der View (neue Spalte 4) die Datenbank einmal geschlossen und neu geöffnet, um das Lookup-Ergebnis aus dem Cache zu löschen?

Ich würde einmal den Client und den Designer ganz schließen und neu öffnen. Es kann nicht sein, dass das Lookup nichts zurückgibt. Falls danach immer noch nichts auswählbar ist, lass mal das ReplaceSubstring weg, dann muss ja die Spalte 4 mit dem * ausgegeben werden. Geht das, ersetzt Du * durch | (wobei ich glaube, dass auch das Pipe über DBLookup gelesen werden kann).
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: atbits am 14.06.10 - 09:08:23
Lass Dir vom Lookup doch lieber die UNID zurückgeben, dann kannst Du mit @GetDocField( documentUNID ; fieldName ) aus dem Dokument holen was Du willst und mußt bei Erweiterungswünschen durch den Kunden nicht immer alles neu berechnen lassen.

Grüße David
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Peter Klett am 14.06.10 - 09:21:39
@David

Es geht hier um die Auswahlliste, die mehr Informationen liefern soll. Zu einer Kundennummer gibt es anscheinend mehrere Vertriebsbeauftragte, wobei dann einer davon ausgewählt werden muss. Und zu diesem werden weitere Infos während der Auswahl gewünscht.
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Scotty67 am 14.06.10 - 09:28:29
Merkwürdig. Deine erste gepostete Formel hat doch funktioniert, oder? Hast Du nach dem Ändern der View (neue Spalte 4) die Datenbank einmal geschlossen und neu geöffnet, um das Lookup-Ergebnis aus dem Cache zu löschen?

Ich würde einmal den Client und den Designer ganz schließen und neu öffnen. Es kann nicht sein, dass das Lookup nichts zurückgibt. Falls danach immer noch nichts auswählbar ist, lass mal das ReplaceSubstring weg, dann muss ja die Spalte 4 mit dem * ausgegeben werden. Geht das, ersetzt Du * durch | (wobei ich glaube, dass auch das Pipe über DBLookup gelesen werden kann).

ja seltsam, ok LN Neustart hat jetzt besseres geliefert !
In das Feld wir tatsächlich nur den "LastName" hineingeschrieben aber im FrontendDokument steht der Wert so drinnen wie in der Auswahlliste....hmmm...
das wollt ich so auch nicht - ich brauche lediglich in der auswahlliste die ausführlichere information über den Vertriebsbeauftragten - optisch und ins Feld sollte nur der z.B. vor+nachname geschrieben werden....

noch ideen ?

ich sag jetzt schon mal ganz lieben dank für die bisherige unterstützung !!!
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Scotty67 am 14.06.10 - 09:29:43
@David

Es geht hier um die Auswahlliste, die mehr Informationen liefern soll. Zu einer Kundennummer gibt es anscheinend mehrere Vertriebsbeauftragte, wobei dann einer davon ausgewählt werden muss. Und zu diesem werden weitere Infos während der Auswahl gewünscht.

BINGO  ;D
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: atbits am 14.06.10 - 09:32:55
Ups - ein Hirnhänger ...
 :-[

Ich bin schon wieder ruhig - Grüße David
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: koehlerbv am 14.06.10 - 09:35:05
Dann wäre aber für den UI-Teil eine Picklist das Mittel der Wahl.

Bernhard
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Scotty67 am 14.06.10 - 09:42:46
Dann wäre aber für den UI-Teil eine Picklist das Mittel der Wahl.

Bernhard

hmmm - noch nie mit einer pickliste gearbeitet, kannst du mir in kurzen worten erzählen wo der vorteil gegeben wäre ?
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Peter Klett am 14.06.10 - 10:07:41
Da hast Du völlig recht, habe ich nicht dran gedacht. Mit einer Schaltfläche kannst Du das aber lösen. Allerdings kann @Prompt ([OKCancelList]... keine Aliase, daher würde ich den Alias z.B. in Klammern dahinterschreiben. Deine Spaltenformel lautet dann:

VertriebsbeauftragterNachname  + " - " + VertriebsbeauftragterVorname + "-" + Vertriebsweg + " - " + VertriebswegPersonalNr + " (" + VertriebsbeauftragterNachname + ")"

In die Schaltfläche neben dem Feld Vertriebsbeauftragter_Display, das dann kein Auswahlfeld, sondern ein Textfeld (berechnet beim Anlegen) ist, schreibst Du diese Formel:

FIELD Vertriebsbeauftragter := @Prompt ([OkCancelList]; "Vertriebsbeauftragter"; "Wählen Sie einen Vertriebsbeauftragten" ;Vertriebsbeauftragter; @Unique(@DbLookup("";"":"";"(Vertriebsbeauftragter)";KundenNummer;4));
FIELD Vertriebsbeauftragter_Display := @Left (@Right (Vertriebsbeauftragter; "("); ")");
""


Das Feld Vertriebsbeauftragter enthält dann den ganzen ausgewählten Wert als Vorgabewert, falls die Schaltfläche nochmals betätigt wird. Das Feld kannst Du verbergen (oder nicht in der Maske definieren).

Wenn Du eine Auswahlliste ohne angezeigten Alias haben möchtest, musst Du eine Dialogbox bauen, damit geht das, aber dann wird es noch etwas umfangreicher.
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Peter Klett am 14.06.10 - 10:10:15
Dann wäre aber für den UI-Teil eine Picklist das Mittel der Wahl.

Bernhard

Eine Picklist würde ich nicht empfehlen, da man der keinen Vorgabewert mitgeben kann. Das ist lästig bei mehrfacher Betätigung der Schaltfläche, würde aber natürlich funktionieren.
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Scotty67 am 14.06.10 - 10:30:59
Da hast Du völlig recht, habe ich nicht dran gedacht. Mit einer Schaltfläche kannst Du das aber lösen. Allerdings kann @Prompt ([OKCancelList]... keine Aliase, daher würde ich den Alias z.B. in Klammern dahinterschreiben. Deine Spaltenformel lautet dann:

VertriebsbeauftragterNachname  + " - " + VertriebsbeauftragterVorname + "-" + Vertriebsweg + " - " + VertriebswegPersonalNr + " (" + VertriebsbeauftragterNachname + ")"

In die Schaltfläche neben dem Feld Vertriebsbeauftragter_Display, das dann kein Auswahlfeld, sondern ein Textfeld (berechnet beim Anlegen) ist, schreibst Du diese Formel:

FIELD Vertriebsbeauftragter := @Prompt ([OkCancelList]; "Vertriebsbeauftragter"; "Wählen Sie einen Vertriebsbeauftragten" ;Vertriebsbeauftragter; @Unique(@DbLookup("";"":"";"(Vertriebsbeauftragter)";KundenNummer;4));
FIELD Vertriebsbeauftragter_Display := @Left (@Right (Vertriebsbeauftragter; "("); ")");
""


Das Feld Vertriebsbeauftragter enthält dann den ganzen ausgewählten Wert als Vorgabewert, falls die Schaltfläche nochmals betätigt wird. Das Feld kannst Du verbergen (oder nicht in der Maske definieren).

Wenn Du eine Auswahlliste ohne angezeigten Alias haben möchtest, musst Du eine Dialogbox bauen, damit geht das, aber dann wird es noch etwas umfangreicher.


ich hab einen button angelegt mit obiger formel, in der View hab ich die spalte nr. 4 entsprechend umgebuat.....
nur dieses textfeld, wenn ich das auf "computed when composed" stelle dann will es ja ein formel hinterlegt haben....was  gehört da hinein ?
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Peter Klett am 14.06.10 - 10:47:06
""

Das bedeutet, beim Anlegen berechnet, Wert ist nichts.
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Scotty67 am 14.06.10 - 11:05:17
Da hast Du völlig recht, habe ich nicht dran gedacht. Mit einer Schaltfläche kannst Du das aber lösen. Allerdings kann @Prompt ([OKCancelList]... keine Aliase, daher würde ich den Alias z.B. in Klammern dahinterschreiben. Deine Spaltenformel lautet dann:

VertriebsbeauftragterNachname  + " - " + VertriebsbeauftragterVorname + "-" + Vertriebsweg + " - " + VertriebswegPersonalNr + " (" + VertriebsbeauftragterNachname + ")"

In die Schaltfläche neben dem Feld Vertriebsbeauftragter_Display, das dann kein Auswahlfeld, sondern ein Textfeld (berechnet beim Anlegen) ist, schreibst Du diese Formel:

FIELD Vertriebsbeauftragter := @Prompt ([OkCancelList]; "Vertriebsbeauftragter"; "Wählen Sie einen Vertriebsbeauftragten" ;Vertriebsbeauftragter; @Unique(@DbLookup("";"":"";"(Vertriebsbeauftragter)";KundenNummer;4));
FIELD Vertriebsbeauftragter_Display := @Left (@Right (Vertriebsbeauftragter; "("); ")");
""


Das Feld Vertriebsbeauftragter enthält dann den ganzen ausgewählten Wert als Vorgabewert, falls die Schaltfläche nochmals betätigt wird. Das Feld kannst Du verbergen (oder nicht in der Maske definieren).

Wenn Du eine Auswahlliste ohne angezeigten Alias haben möchtest, musst Du eine Dialogbox bauen, damit geht das, aber dann wird es noch etwas umfangreicher.


also die spaltenformel für den View ist mir klar...
nur mit den Feldern  bin ich jetzt total durcheinander gekommen....

d.h. ich erzeuge ein Feld "Vertriebsbeauftrager_Dispay"= computed when composed mit dem Value ""

Einen Button lege ich an mit diesem Code:
FIELD Vertriebsbeauftragter := @Prompt ([OkCancelList]; "Vertriebsbeauftragter"; "Wählen Sie einen Vertriebsbeauftragten" ;Vertriebsbeauftragter; @Unique(@DbLookup("";"":"";"(Vertriebsbeauftragter)";KundenNummer;4));
FIELD Vertriebsbeauftragter_Display := @Left (@Right (Vertriebsbeauftragter; "("); ")");
""
Wie ist dann das Feld "Vertriebsbeauftrager" eingentlich aufgebaut....da steh ich jetzt voll daneben.
Tut mir leid wenn ich so blöd frage - ECHT !!!
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Peter Klett am 14.06.10 - 11:24:53
Wie die Felder heißen, ist letzlich egal. Das Feld, das ich Vertriebsbeauftragter_Display genannt habe, sollte das Feld sein, das vorher die Dialogliste enthalten hat. In das andere Feld wird nur die letzte vollständige Auswahl geschrieben, um daraus den Vorgabewert für den nächsten Aufruf zu nehmen. Das Feld muss nicht in der Maske angelegt sein (ansonsten Textfeld, berechnet beim Anlegen, verborgen).

Versuchst Du auch zu verstehen, was ich schreibe, oder tippst Du nur ab? Ich möchte eigentlich keine schlüsselfertige Lösung, sondern Denkanstöße liefern. Das ganze ist daher eher quick & dirty. Wenn Du das alles zum Laufen gebracht hast, solltest Du auch noch abfangen, dass evtl. keine passenden Dokumente existieren, DBLookup also einen Fehler liefert, usw.
Titel: Re: Kann DBLookup mehr zurückliefern ?
Beitrag von: Scotty67 am 14.06.10 - 11:31:14
...normalerweise denke ich schon  ;D
nur in 1h hab ich eine besprechung diesbezüglich und ich hätte gerne die bessere (deine) lösung geboten...

ich werde mich auf meine erste variaten zurückziehen müssen da ich es jetzt einfach nicht mehr schaffe...

ich werde mir nach der besprechung das alles in ruhe anschauen und dann mit "ordentlichen" fragen zurückkommen sofern es noch welche gibt !

DANKE !!!