Autor Thema: @If + @ Contains  (Gelesen 42667 mal)

Offline Peter Mewes

  • Junior Mitglied
  • **
  • Beiträge: 58
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #40 am: 24.05.11 - 15:59:51 »
Ich begebe mich auf den Spießrutenlauf und versuche das ganze Mal aufzudröseln.

viw := "vdoppelpreuf";
crit := ~_name;
col := 4;
lkp := @DbLookup( "" : "NoCache" ; "" ; viw ; crit ; col );
res := @If( @IsError( lkp ) ; "" ; lkp );
@If( res != @Text( @DocumentUniqueID ) & res != "" ; @Failure( "Name bereits gefunden" ) ; @Prompt([Ok];"Profil scheint Unique"; "Das Profil ist nicht doppelt.")  )


Okay. Die Variablendeklarierung ist klar. Aber wenn ich das Ding richtig verstehe, dann:

- wird res bei Erfolg von dblookup zu lkp ( wobei lkp die UniqueID ist).

- wird res bei Misserfolg zu ""

- wenn res am Ende NICHT der UniqueID und NICHT "" entspricht, DANN sagt er "Name bereits vorhanden"

-sollte res der UniqueID entsprechen, bzw einen Wert jenseits "" haben, dann gibt er den Prompt aus.


Konkrete Frage1: Sehe ich es richtig, dass die Ausgaben so im Moment falsch sind? Oder habe ich nur wieder die Syntax nicht ganz verstanden? Eigentlich müsste er doch bei !="" und !="UniqueID" sagen, dass der Name noch NICHT da ist, oder?

Konkrete Frage2: Was könnte zB. bei DBlookup passieren, das lkp veranlasst hätte "" zu sein.
« Letzte Änderung: 24.05.11 - 16:03:19 von PeteM »
Don't do it! ... the cake is a lie! ...

"Viele Menschen sind zu gut erzogen, um mit vollem Munde zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun." (Oscar Wilde)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #41 am: 24.05.11 - 16:07:07 »
Nix "Spiessrutenlauf", das war notwendige Kritik.

Und dass das positiv gewirkt hat, zeigt Dein Posting auf beste Weise. Daran "kritisiere" ich lediglich noch, dass Deine Ansicht vermutlich nicht "vdoppelpreuf" heisst  ;)

Bernhard

Offline smokyly

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.169
  • Geschlecht: Männlich
  • Nicht jeder ist ersetzbar.
Re: @If + @ Contains
« Antwort #42 am: 24.05.11 - 16:14:01 »
Eigentlich müsste er doch bei !="" und !="UniqueID" sagen, dass der Name noch NICHT da ist, oder?
Nein. Der DBLookup findet in der Ansicht nach Deinen Suchkriterien ja ein Dokument und liefert dazu die UNID zurück.
Und wenn Du mein Nachfragen verfolgt hast, würdest Du auch verstehen, was der Vergleich der UNID macht: Es wird das gefundene Dokument mit dem verglichen, welches gespeichert werden soll. Sind die UNID nicht identisch ->

Zitat
Konkrete Frage2: Was könnte zB. bei DBlookup passieren, das lkp veranlasst hätte "" zu sein.
Z.B. dass Du Dich bei der Benennung der Ansicht verschrieben hast. ;D
Geri

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #43 am: 24.05.11 - 16:15:01 »
Konkrete Frage1: Sehe ich es richtig, dass die Ausgaben so im Moment falsch sind? Oder habe ich nur wieder die Syntax nicht ganz verstanden? Eigentlich müsste er doch bei !="" und !="UniqueID" sagen, dass der Name noch NICHT da ist, oder?
Wenn das Ergebnis nicht leer und auch nicht die UniversalID des aktuellen Dokuments ist, dann gibt es schon ein anderes Dokument mit den gleichen Werten. Die Meldungen sind in der korrekten Reihenfolge

Konkrete Frage2: Was könnte zB. bei DBlookup passieren, das lkp veranlasst hätte "" zu sein.
Der Name wurde in der Ansicht nicht gefunden, also DBLookup findet über den Suchschlüssel (bei Dir den Namen) kein Dokument. Aber dann wäre nicht lkp leer, sondern @IsError, und damit wird res auf "" gesetzt, aber das meintest Du wohl?

Die Zeile crit := ~_name; habe ich nicht verstanden, ist das ein Tippfehler oder etwas, was ich noch nicht kenne?

Offline Peter Mewes

  • Junior Mitglied
  • **
  • Beiträge: 58
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #44 am: 24.05.11 - 16:16:30 »
Hehe.

Doch die Ansicht heisst tatsächlich so.



Zugegeben entstanden aus einem Rechtschriebfehler, dann aus Witzigkeit beschlossen so zu belassen. Sag Mal drei Mal hintereinander das Wort "preuf", dann weisste wieso. :) Und ja... im Namen der Programmiererehre werde ich meine Ansichten in Zukunft ordentlich benennen.

Zitat
Die Zeile crit := ~_name; habe ich nicht verstanden, ist das ein Tippfehler oder etwas, was ich noch nicht kenne?

Ich hatte die Tage Mal munkeln gehört, dass Feldnamen mit "_" beginnend in einer Deklaration ":=" in Formel nicht funktionieren, es sei denn, man setzt ein Tilde davor... Not?
« Letzte Änderung: 24.05.11 - 16:32:34 von PeteM »
Don't do it! ... the cake is a lie! ...

"Viele Menschen sind zu gut erzogen, um mit vollem Munde zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun." (Oscar Wilde)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #45 am: 24.05.11 - 16:39:02 »
Das hat nichts mit "Programmiererehre" zu tun, Pete - das spart im schlimmsten Fall ein blaues Auge  ;D

Du weisst nie, wer morgen mit Deinem Code arbeiten muss, und jeder ist dankbar, wenn Variablennamen oder die Bezeichner von Designelementen selbstsprechend sind. Übrigens ist IBM Lotus hier selbst kein leuchtendes Beispiel - die Leute dort schreiben manchmal ganz schön schlampig.

Ein weiterer Tipp: Wenn Du die Ansicht zumindest vor unbedarft-neugierigen Anwendern verbergen willst, dann setze den Ansichtsnamen in Klammern. Bei "normalen" Aktionen werden diese Ansichten dann nicht angezeigt.

Bernhard

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #46 am: 24.05.11 - 16:43:03 »
Die Zeile crit := ~_name; habe ich nicht verstanden, ist das ein Tippfehler oder etwas, was ich noch nicht kenne?

Das kann man so machen, muss es aber nicht  ;)
Im Gegensatz zu LotusScript, wo man ja beispielsweise
docMail._ViewIcon = 1
nicht verwenden kann und statt dessen eben die Mathilde einsetzen muss:
docMail.~_ViewIcon = 1

Beste Grüsse nach Norwegen,
Bernhard

Offline smokyly

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.169
  • Geschlecht: Männlich
  • Nicht jeder ist ersetzbar.
Re: @If + @ Contains
« Antwort #47 am: 24.05.11 - 16:43:28 »
EDIT: Falsch verstanden.
« Letzte Änderung: 24.05.11 - 16:49:50 von smokyly »
Geri

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #48 am: 24.05.11 - 16:54:07 »
Nochmal zu ~_name:

@Bernhard: Dass man das mit Script so machen kann, habe ich hier auch erst gelernt (ich verwende da immer doc.GetItemValue)

@PeteM: Was ist das bei Dir? Ist das das Feld _Name im Dokument (in der Maske kann es kaum sein), wenn ja, wie ist das da reingekommen? Kann ich mir also kaum vorstellen. Oder hast Du eine Variable in der Formel so benannt? Zusammengefasst also so:

~_name := MeinNamenfeld;
crit := ~_name;

Das würde wohl funktionieren, wäre aber doppelt gemoppelt.

Offline Peter Mewes

  • Junior Mitglied
  • **
  • Beiträge: 58
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #49 am: 24.05.11 - 16:56:34 »
Der Tipp mit den ( ) ist super. Direkt in den Wissensfundus absorbiert.

Wissenlücke Tilde auch gefüllt.

Das der Designer hustet is mir neu. Meine Felder haben fast alle Namen mit "_" beginnend. Ist aber nur noch so, weil ich zu faul bin sie alle und die darauf verweisenden Routinen umzubennen. Werde es aber nicht wieder tun. Und ja, die Felder sind in Masken. ^^;

Zurück zu:

viw := "vdoppelpreuf";
crit := Mewes;
col := 4;
lkp := @DbLookup( "" : "NoCache" ; "" ; viw ; crit ; col );
@SetField ("list2" ; lkp);
@SetField ("f_list3" ; "Hallo");
res := @If( @IsError( lkp ) ; "" ; lkp );

@If( res != @Text( @DocumentUniqueID ) & res != "" ; @Failure( "Name vorhanden" ) ; @Prompt([Ok];"¿Profil nicht vorhanden"; "Das Profil scheint Unique.")  )

Funktioniert leider nicht. Bzw nicht so wie ich dachte. Ich habe zur Überprüfung den lkp Wert in das auf dem Screenshot zu sehende Kontrollfeld "f_list3" gesetzt und das Feld "list2" mit Hallo bestückt.

Das Feld list2 bleibt immer "". Egal ob man einen Namen wählt, der definitiv vorhanden ist, einen der nicht vorhanden ist, oder ob man das ~_name durch einen Fixwert ( Melecay ) der bereits vorhanden ist ersetzt. Irgendwas greift nicht.
Don't do it! ... the cake is a lie! ...

"Viele Menschen sind zu gut erzogen, um mit vollem Munde zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun." (Oscar Wilde)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #50 am: 24.05.11 - 16:56:44 »
Pete, bitte ändere nicht nachträglich Deine Posts, wenn sich dadurch der Sinn des Inhalts verändert. Wenn vorab schon jemand geantwortet hat, sieht keine Sau mehr durch oder es entstehen Missverständnisse.

Wenn Dein Feld _Name heisst, dann führt eine Zuweisung variable := ~_name zu einem Leerstring, da ~_name nicht als Item vorhanden ist.

Wie schon an Peter geschrieben, ist das in LotusScript anders. Da braucht es in Kombination mit Underscore die Mathilde.

@Peter: Die Bennenung eines Feldes (!) "_name" ist notesseitig statthaft und machbar.

Bernhard

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #51 am: 24.05.11 - 16:57:57 »
Mewes ist ein Itemname, Pete!

Du willst "Mewes" verwenden.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #52 am: 24.05.11 - 17:10:24 »
@Peter: Die Bennenung eines Feldes (!) "_name" ist notesseitig statthaft und machbar.
Man wird alt wie ne Kuh und lernt immer noch dazu ...  ;)

Man kann sich damit das Leben allerdings auch unnötig schwer machen, spätestens bei Script wird es dann lästig. Ich verwende den Unterstrich i.d.R immer vor Variablen in Formeln, um damit eindeutig erkennen zu können, dass damit KEIN Feld gemeint ist. Also mein Dialekt wäre gewesen:

_viw := "vdoppelpreuf";
_crit := Namenfeld;
_col := 4;
_lkp := @DbLookup( "" : "NoCache" ; "" ; _viw ; _crit ; _col );
...

Zum Glück haben wir da alle unsere Freiheiten ...

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #53 am: 24.05.11 - 17:14:08 »
Man wird alt wie ne Kuh und lernt immer noch dazu ...  ;)
Das ist die Bedingung, um bei AtNotes mitmachen zu dürfen  ;)

Bernhard

Offline Peter Mewes

  • Junior Mitglied
  • **
  • Beiträge: 58
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #54 am: 24.05.11 - 17:15:44 »
Mewes ist ein Itemname, Pete!

Du willst "Mewes" verwenden.

Bernhard

Da hast du sowas von Recht gehabt.

Danke. Schönen Feierabend erstmal.
« Letzte Änderung: 24.05.11 - 17:40:53 von PeteM »
Don't do it! ... the cake is a lie! ...

"Viele Menschen sind zu gut erzogen, um mit vollem Munde zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun." (Oscar Wilde)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: @If + @ Contains
« Antwort #55 am: 25.05.11 - 09:47:44 »
Wo steht denn jetzt der Code, den Du gepostet hast?

Wenn der in den Schaltflächen steht, die Da im Screenshot angezeigt werden, dann passiert GAR NIX, wenn er ein Dokument findet...
Denn @Failure ist -wie ich schon mehrfach geschrieben habe- NUR in Feldvalidierungen gültig!!!

Auszug aus der Designer- Hilfe (Die Du scheinbar noch immer meidest wie der Teufel das Weihwasser):
Zitat
Usage
@Failure is intended for use only in input validation formulas.
@Failure does not terminate execution of the formula. Use @Return to force a formula to exit.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Peter Mewes

  • Junior Mitglied
  • **
  • Beiträge: 58
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #56 am: 25.05.11 - 10:14:31 »
Wo steht denn jetzt der Code, den Du gepostet hast?

Wenn der in den Schaltflächen steht, die Da im Screenshot angezeigt werden, dann passiert GAR NIX, wenn er ein Dokument findet...
Denn @Failure ist -wie ich schon mehrfach geschrieben habe- NUR in Feldvalidierungen gültig!!!

Auszug aus der Designer- Hilfe (Die Du scheinbar noch immer meidest wie der Teufel das Weihwasser):
Zitat
Usage
@Failure is intended for use only in input validation formulas.
@Failure does not terminate execution of the formula. Use @Return to force a formula to exit.


Der Code :

viw := "vdoppelpreuf";
crit := _name;
col := 4;
lkp := @DbLookup( "" : "NoCache" ; "" ; viw ; crit ; col );
res := @If( @IsError( lkp ) ; "" ; lkp );
@If( res != @Text( @DocumentUniqueID ) & res != "" ; @Prompt([Ok];"¿Profil bereits vorhanden"; "Das Profil ist bereits vorhanden. Eine Nachricht wurde an den zuständigen Admin versendet. Er wird sich in kürte mit Ihnen in Verbindung setzen. NICHT Unique.") ; @Prompt([Ok];"¿Profil nicht vorhanden"; "Das Profil ist Unique.")  )

Steht im Querysave einer Maske mit Eingabefeldern - stand. Inzwischen steht dort:

viw := "vadminview";
outpd := _vorname + " " +_name + " " + _straße ;
crit := outpd;
col := 2;
lkp := @DbLookup( "" : "NoCache" ; "" ; viw ; crit ; col );
res := @If( @IsError( lkp ) ; "" ; lkp );
@If( res != @Text( @DocumentUniqueID ) & res != "" ; @Prompt([Ok];"¿Profil bereits vorhanden"; "Das Profil ist bereits vorhanden. Eine Nachricht wurde an den zuständigen Admin versendet. Er wird sich in kürte mit Ihnen in Verbindung setzen. NICHT Unique.") ; @Prompt([Ok];"¿Profil nicht vorhanden"; "Das Profil ist Unique.")  )

Das stellt meinen Versuch dar auf mehrere Faktoren, als den Nachnamen zu prüfen. Klappt aber NOCHT nicht so ganz.
« Letzte Änderung: 25.05.11 - 10:16:54 von PeteM »
Don't do it! ... the cake is a lie! ...

"Viele Menschen sind zu gut erzogen, um mit vollem Munde zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun." (Oscar Wilde)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: @If + @ Contains
« Antwort #57 am: 25.05.11 - 10:16:06 »
OK... ich gebs auf...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Peter Mewes

  • Junior Mitglied
  • **
  • Beiträge: 58
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #58 am: 25.05.11 - 10:17:42 »
OK... ich gebs auf...

Okay. Tut mir leid.
Don't do it! ... the cake is a lie! ...

"Viele Menschen sind zu gut erzogen, um mit vollem Munde zu sprechen, aber sie haben keine Bedenken, es mit leerem Kopf zu tun." (Oscar Wilde)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @If + @ Contains
« Antwort #59 am: 25.05.11 - 10:47:19 »
Ignorieren wir im ersten Schritt einmal, dass es sinnvoller wäre, das Speichern zu verhindern. Wenn Deine Formel funktioniert, bekommst Du eine Fehlermeldung, dass der Schlüssel doppelt ist, das Dokument dann aber trotzdem gespeichert wird.

Was funktioniert jetzt nicht?

Wie sieht der Inhalt der ersten Spalte in Deiner Suchansicht aus?

outpd := _vorname + " " +_name + " " + _straße ;

finde ich etwas unglücklich, denn die Leerzeichen zwischen den Feldern könnten u.U. dazu führen, dass andere Dokumente passen, obwohl sie nicht identisch sind.

outpd := _vorname + "#" +_name + "#" + _straße ;

fände ich besser, müsste sich dann aber auch in der Ansicht wiederfinden

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz