Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Silver am 30.11.05 - 08:42:20

Titel: @DBLookup-Rückgabewert bei keiner Übereinstimmung
Beitrag von: Silver am 30.11.05 - 08:42:20
Hallo!

Ich hab folgende Teil-Formel in einer Schaltfläche:

temp := @DbLookup("" ; "" ; "MAALLE" ; @Name([CN];@UserName); "Filiale" ; [FailSilent] );
temp1 := @DbLookup("" ; "" ; "MAALLE" ; @Name([CN];@UserName); "Abteilung");
temp_endg := @If(temp=""; "NO" ; @If(temp = "Zentrale" ; temp1 ; temp));

Diese funzt auch soweit über Notes 6 (da dort wohl die Funktion [FailSilent] integriert ist)

Brauche allerdings so etwas unter Notes 5.5 (hier erscheint bei dieser Formel "Zu viele Argumente").

D. h. Wenn der User, der die Datebank aufmacht nicht in der Ansicht MAALLE gefunden werden kann, soll "" übergeben werden. Denn hierüber steuere ich, welche Ansicht aufgemacht werden soll. Momentan bekomme ich aber die Meldung "Serverfehler: Eintrag im Indes nicht gefunden". Welchen Wert gibt mir @DBLookup bei keiner Übereinstimmung zurück? Habs mit 0 und mit "" versucht. Aber das selbe Prob.

Hat jemand eine Idee?  ???
Titel: Re: @DBLookup-Rückgabewert bei keiner Übereinstimmung
Beitrag von: Thomas Schulte am 30.11.05 - 09:13:04
@if(@iserror (@dblookup....);"";@Dblookup(...))
Damit wird das ding zwar im Erfolgsfall zweimal aufgerufen aber das ist da die einzige Möglichkeit
Titel: Re: @DBLookup-Rückgabewert bei keiner Übereinstimmung
Beitrag von: klaussal am 30.11.05 - 09:14:13
Aus der Hilfe:
Zitat
Damit die Suche erfolgreich durchgeführt wird, muss die Ansicht eine sortierte Spalte enthalten, weil andernfalls ein NULL-Wert zurückgegeben wird.
Titel: Re: @DBLookup-Rückgabewert bei keiner Übereinstimmung
Beitrag von: Knarfbrain am 30.11.05 - 09:33:01
ich frage solche Fälle mit folgenden Formeln ab:

user:=@DbColumn("" : "NoCache"; "" : ""  ;"Ansicht"; 1);
erg:=@If(@IsMember(@Name([CN];@UserName);user);@DbLookup("" : "NoCache"; "" : ""  ;"Ansicht"; @Name([CN];@UserName);2);"");

Ich hoffe es hilft.

Gruß
Frank
Titel: Re: @DBLookup-Rückgabewert bei keiner Übereinstimmung
Beitrag von: Thomas Schulte am 30.11.05 - 09:52:48
@Klaus, das ist richtig aber denke ich bei diesem Problem nicht relevant. Er fragt ja wie er den [FailSilent] in R5 nachbilden kann.

@Frank, Hmm ein anderer Ansatz, der aber bei großen Rückgabewerten nicht mehr funktioniert.
Titel: Re: @DBLookup-Rückgabewert bei keiner Übereinstimmung
Beitrag von: Axel am 30.11.05 - 10:34:26
@if(@iserror (@dblookup....);"";@Dblookup(...))
Damit wird das ding zwar im Erfolgsfall zweimal aufgerufen aber das ist da die einzige Möglichkeit

Das zweimal aufrufen lässt sich m.E. so umgehen:


tmpValue := @DbLoopup(...);
value := @If(@IsError(tmpValue); ""; tmpValue);


Axel
Titel: Re: @DBLookup-Rückgabewert bei keiner Übereinstimmung
Beitrag von: Silver am 01.12.05 - 09:09:11
Super, dank! Hatte mich gleich für die erste Lösung entschieden. Funzt! Danke nochmals!  :-*  ;D
Titel: Re: @DBLookup-Rückgabewert bei keiner Übereinstimmung
Beitrag von: Thomas Schulte am 01.12.05 - 09:43:56
tmpValue := @DbLoopup(...);
value := @If(@IsError(tmpValue); ""; tmpValue);
Stimmt. Auf den Trichter bin ich irgendwie nie gekommen.

Das Kommt dabon wenn man stur an einer Sache festhält die man vor Jahren mal als richtig erkannt zu haben meint.