Domino 9 und frühere Versionen > ND6: Entwicklung
Sinnvolle Daten aus View/Form übernehmen
koehlerbv:
Dennis, in FeldA bietest Du via @dbColumn eine Auswahl basierend auf einer Ansicht. In den Feldern FeldB, FeldC etc. greifst Du via @dbLookup mit dem Schlüssel aus FeldA auf die gleiche Ansicht zu und liest Du die Feldwerte, die Du brauchst, aus.
@DbLookup (Klasse : "NoCache" ; Server : Datenbank ; Ansicht ; Schlüssel ; Feldname)
Schlüssel ist der Wert aus FeldA, Feldname (Achtung - als String !) is tdas Feld, welches Du auslesen möchtest.
HTH,
Bernhard
PS: Hierzu die DesignerHelp gut studieren ... Gaaaaanz sorgfältig, um alles zu verstehen.
jr:
Wieder ich... ;)
Man merkt, dass ich heute ein bisschen Zeit habe.
Also wenn's unbedingt mit @Formeln sein muss...
Um einen Wert aus einer anderen Datenbank zu holen brauchst Du den besagten eindeutigen Schlüsse (ob @Formel oder LS ist egal, Schlüssel braucht man immer).
Nehmen wir mal an, dass der Name eindeutig ist.
Dann kann man mit @DbLookup direkt in einer Ansicht auf ein Dokument und dort auf ein Feldwert zugreifen:
@DbLookup("":"NoCache"; ""; view; key; feldname) holt den Wert aus einer Ansicht in der aktuellen Datenbank.
Wenn es eine andere Datenbank ist, gibt es zwei Möglichkeiten:
@DbLookup("":"NoCache"; server:pfad; view; key; feldname) oder
@DbLookup("":"NoCache"; replikid; view; key; feldname)
Anstatt des Feldnamens, kann man auch eine Spaltennummer angeben, wenn es passt.
Der komplette Code würde dann so aussehen:
FIELD sCity := @DbLookup("":"NoCache"; "SRV":"names.nsf"; "($Users)"; sCombo; "City");
Das Combobox-Feld heißt "sCombo", dort wird der vollständige Name (am besten voll qualifiziert, also CN=.../OU=...) ausgelesen. Für die Person gibt's im globalen Adressbuch auf dem Server "SRV" ein Dokument und den Wohnort speichere ich im aktuellen Dokument in das Feld "sCity". Alles klar?
Natürlich kann man das ein bisschen schöner machen und eventuell fehlende Dokumente abfangen usw.
dbSrv := "SRV" : "names.nsf";
view := "(@Users)";
key := sCombo;
feld := "City";
val := @DbLookup("":"NoCache"; dbSrv; view; key; feld);
erg := @If(@IsError(val); ""; val);
FIELD sCity := erg;
Und das machst Du dann für alle Daten, die Du brauchst.
Gruß,
Joachim
P.S.: Mit LotusScript ist's aber schöner... ;D
jr:
oops, Bernhard war wieder etwas schneller...
koehlerbv:
--- Zitat von: jr am 17.06.05 - 18:33:31 ---Mit LotusScript ist's aber schöner... ;D
--- Ende Zitat ---
Ich schätze @functions wirklich sehr, aber mit LS geht das wirklich ... besser, leserlicher. Und man kann eher aus ausgelesenen Äpfeln Birnen machen, wenn erforderlich. Vor allem aber erfordert das auslesen von n Feldern nur einen einzigen Backend-Zugriff. Auch wenn Notes hier caching betreibt - zahlreiche @dbLookups fressen einfach Performance.
Joachim: Und "wieder schneller" war ich heute wohl nicht - bislang habe ich doch immer Dir hinterhergehinkt. Ist aber auch wurscht: Schön, dass Du hier so mithilfst !
Designer:
wenn ich jetzt in einem Feld bsp. Größe folgendes eingebe:
@dblookup("Notes:"NoCache";"":"";"MitarbeiterView";"ID";1)
die ID ist sortiert in der 1. Spalte..
wie komme ich jetzt an die anderen werte die beispielsweise in der 2. oder 3. Spalte sind.. um jetzt net auf das Dokument zuzugreifen sondern über den View??
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln