Domino 9 und frühere Versionen > Entwicklung

DBLookup nach Sprache

(1/2) > >>

Jörg:
Hi Leute,

ich stehe wieder mal vor ein Problem und ihr habt mir ja schon so oft
hier im Forum geholfen , daher ein weiterer Post ;-)

ICh möchte mit einen Feld "language" bei einer DBLookup-Funktion die angezeigte
Spalte verändern. Dazu habe ich folgenden Code in das Lsitfeld eingefügt, aber
der will nicht so wie ich.


--- Code: ---_Error_Message := "No NAMES installed" ;
_liste_deu := @DbLookup( "Notes" : "NoCache" ; @DbName ; "subkategorie" ; kategorie ; 3 );
_liste_eng := @DbLookup( "Notes" : "NoCache" ; @DbName ; "subkategorie" ; kategorie ; 4 );
@Text(language);
@If(language="deutsch"; @If ( @IsError ( _liste_deu ) ;_Error_Message ; _liste_deu );
@If ( @IsError ( _liste_eng ) ;_Error_Message ; _liste_eng ) )
--- Ende Code ---

Mir wird immer nur die Beschreibung der _liste_deu angezeigt.

Gruss Jörg

Axel:
Das könnte ein Problem mit der Aktualisierung sein. Hast du in deinem Listenfeld die Option "Auswahl bei Dokumentenaktualisierung aktualisieren" gesetzt?


Axel

billygates:
Probier es mal so:

_Error_Message := "No NAMES installed" ;
_liste_deu := @DbLookup( "Notes" : "NoCache" ; @DbName ; "subkategorie" ; kategorie ; 3 );
_liste_eng := @DbLookup( "Notes" : "NoCache" ; @DbName ; "subkategorie" ; kategorie ; 4 );

@If(
@text(language) = "deutsch";  _liste_deu;
@IsError( _liste_eng ); _Error_Message;
_liste_eng )

Was der "@Text(language)" vor Deiner @If-Konstruktion soll, hab ich aber nicht verstanden.
Falls das Feld "language" statt "deutsch" auch den Wert "english" haben kann, würde ich es jedoch anders lösen:

_Error_Message := "No NAMES installed" ;
_liste_deu := @DbLookup( "Notes" : "NoCache" ; @DbName ; "subkategorie" ; kategorie ; 3 );
_liste_eng := @DbLookup( "Notes" : "NoCache" ; @DbName ; "subkategorie" ; kategorie ; 4 );

@If(
@text(language) = "deutsch";  _liste_deu;
@text(language) = "english"; _liste_eng;
_Error_Message )

Zum Testen würde ich zwischendurch noch die Variablen "_liste_deu" & "_liste_eng" per @prompt auslesen, um zu sehen, ob und ggf. welche Werte vorhanden sind.

Jörg:
Tausend Dank an Euch es klappt.

Es lag an der Option "Auswahl bei Dokumentenaktualisierung aktualisieren"

Gruss Jörg

Tode:
ich würde es trotzdem anders machen... Du machst unnötigerweise 2 dblookups, was unnötig Performance kostet.

_col := @If( @text( language ) = "deutsch" ; 3 ; 4 );

_liste := @DbLookup( "Notes" : "NoCache" ; @DbName ; "subkategorie" ; kategorie ; _col );

@If( @IsError( _Liste ) | _liste = "" ; _Error_Message ; _liste )

Dabei hast Du dann gleich noch einen Fehler im deutschen Lookup abgefangen, was bei Dir momentan nicht der Fall ist...

Gruß
Tode


Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln