Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet 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? ???
-
@if(@iserror (@dblookup....);"";@Dblookup(...))
Damit wird das ding zwar im Erfolgsfall zweimal aufgerufen aber das ist da die einzige Möglichkeit
-
Aus der Hilfe:
Damit die Suche erfolgreich durchgeführt wird, muss die Ansicht eine sortierte Spalte enthalten, weil andernfalls ein NULL-Wert zurückgegeben wird.
-
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
-
@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.
-
@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
-
Super, dank! Hatte mich gleich für die erste Lösung entschieden. Funzt! Danke nochmals! :-* ;D
-
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.