Domino 9 und frühere Versionen > ND8: Entwicklung

@If + @ Contains

<< < (7/22) > >>

koehlerbv:
Zur Formel:
Den letzten Parameter in dbLookup lass ganz weg.
Lies nach, was dbLookup zurückliefert. Besonders in Deinem Fall bestimmt nicht die Zahl 0. Dafür könnte es auch @Error zurückgeben.

@Failure kannst Du nur in der Eingabevalidierung verwenden. Du verwendest ihn gleich zweimal - das ist Quatsch. Statt @Failure ("Name gefunden") verwende Success.


Lies die Hilfe gründlicher. Was hast Failure auf deutsch?

Und das Konstrukt ist immer noch ungenügend. Schreib doch als erstes mal genau auf, was Du haben möchtest. Erst denken, dann Coden. In Deinem Fall kommt dann auch noch das *genaue* Lesen der DesignerHelp zu den verwendeten @functions dazu.

Bernhard

Tode:
Versuchst Du eigentlich auch mal, Deine Fehler selbst herauszufinden? Da sind wir wieder beim systematischen vorgehen...

1. Wo steht diese Formel? - @Failure funktioniert NUR in Eingabevalidierungen, sonst NIRGENDS
2. @DBLookup fängt man IMMER mit @IsError ab, sonst hat man ganz schnell Probleme

Dein Fehler liegt aber -höchst wahrscheinlich- im nicht angegebenen letzten Parameter: Entweder DU füllst Ihn mit einem Wert, den er erwartet, also zum Beispiel [FAILSILENT], oder Du lässt ihn weg.

So sähe ein sauberer DBLookup aus, den man dann auch noch warten kann:
Das ganze in einer Feldvalidierung...

viw := "vdoppelpreuf";
crit := "Melecay";
col := 4;
lkp := @DBLookup( "" : "NoCache" ; "" ; viw ; crit ; col );
res := @If( @IsError( lkp ) ; "" ; lkp );

@If( res != @Text( @DocumentUniqueID ) ; @Failure( "Name gefunden" ) ; @Success );

Im übrigen kann ich Bernhard nur erneut recht geben: Geh nicht blind an so ne Sache ran, sondern systematisch...

Von Systematik ist bei Dir momentan nichts zu erkennen...

Wenn Du es schon nicht schaffst, in einem Einzeiler einen Fehler zu finden, dann wirst Du in der Programmierung keine Zukunft haben...
Und das hat nichts mit der verwendeten Programmiersprache / ENtwicklungsumgebung zu tun, sondern ist allgemeingültig.
Entschuldige, dass ich so hart sein muss, aber so sehe ich das aktuell...

Gruss
Tode

smokyly:
Ist ja interessant, hier mit zu lesen. Da lernt man doch gleich dazu.


Aber das hier versteh ich nicht:

--- Zitat von: Tode am 24.05.11 - 14:21:32 ---

@If( res != @Text( @DocumentUniqueID ) ; @Failure( "Name gefunden" ) ; @Success );


--- Ende Zitat ---

Wenn der @IsError greift, ist res doch null leer und damit wäre doch in diesem IF der Name NICHT gefunden ???


Gruß

Peter Mewes:
Hallo Bernhard,


--- Zitat von: koehlerbv am 24.05.11 - 14:08:33 ---Zur Formel:
Den letzten Parameter in dbLookup lass ganz weg.
--- Ende Zitat ---

So sei es.


--- Zitat ---Lies nach, was dbLookup zurückliefert. Besonders in Deinem Fall bestimmt nicht die Zahl 0. Dafür könnte es auch @Error zurückgeben.
--- Ende Zitat ---

@DbLookup looks up a specified value in the first sorted column of a specified view in a specified database. For each document that matches the search value, @DbLookup returns the value of a specified field on the document or column in the view.

Zu Deutsch Er sucht einen Bestimmten Wert ( in meinem Fall Melecay?), in der erstern sortierten Spalte ( in meinem Fall Name ), Findet er den Namen Melecay, gibt er den Wert der Spalte 4 aus ( in meinem Fall Unique ID ). WENN dieser ausgabewert nicht 0 ist ( also er einen Namen und damit dann auch einen Wert aus Spalte 4 gefunden hat ), DANN soll er mich darüber informieren, auch bei anderer Variante.


--- Zitat ---@Failure kannst Du nur in der Eingabevalidierung verwenden. Du verwendest ihn gleich zweimal - das ist Quatsch. Statt @Failure ("Name gefunden") verwende Success.
--- Ende Zitat ---

Oright!


--- Zitat ---Lies die Hilfe gründlicher. Was hast Failure auf deutsch?
--- Ende Zitat ---

So glaube man mir doch, dass ich die DBlookup rauf und runter gelesen habe. Und bitte nehme man mein momentanes Unverständnis nicht als direkten Beleg für meine generelle Unzulänglichkeit! ;( Ps.: Failure = Fehlschlag / Misserfolg


--- Zitat --- Und das Konstrukt ist immer noch ungenügend. Schreib doch als erstes mal genau auf, was Du haben möchtest. Erst denken, dann Coden. In Deinem Fall kommt dann auch noch das *genaue* Lesen der DesignerHelp zu den verwendeten @functions dazu.
--- Ende Zitat ---

Ich tu' mein bestes. Und deshalb tu ich mir noch ein paar Mal die @functions rein. Was ich machen will? ( vorerst ): In einer Ansicht, soll der fixe Name ( Melecay) gesucht werden. Wenn gefunden soll der Spaltenwert der UniqueID ausgegeben werden. Der UniqueID-Wert wird dann als Kontrollwert benutzt, ob der Name bereits vorhanden ist.

Soweit der Plan.

Tode:
Ach menno... Das sollte Pete doch selbst rausfinden ;-).

Du hast natürlich recht... Die Zeile müsste korrekt heissen:

@If( res != @Text( @DocumentUniqueID ) & res != "" ; @Failure( "Name gefunden" ) ; @Success );

Danke fürs aufpassen...

Tode

@Pete: Wenn in Spalte 4 eine DocumentUniqueID steht, dann ist das ein Text.... wenn Du diesen jetzt mit einer Zahl (0) vergleichst, dann geht das ebenfalls schief...

Und meine Formel ist nichts anderes als Deine, nur dass die einzelnen Parameter in Variablen rausgezogen wurden und ein Errorhandling mit angefügt wurde... Diese Formel solltest Du schon lesen und auch verstehen können...

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln