Autor Thema: @If - mehrere Bedingungen  (Gelesen 4770 mal)

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
@If - mehrere Bedingungen
« am: 25.10.05 - 11:12:50 »
Hi,

Ob eine Checkbox gehakt ist überprüfe ich so:
Code
@If(chk1_1="l" ...

Nun möchte ich eine Meldung ausgeben wenn keine von 20 Boxen gehakt ist. Einen @And Operator konnte ich nicht finden und in der Hilfe auch sonst keine Möglichkeit die Bedingungen zu verknüpfen, da die Syntax wie folgt lautet:

@If( condition1 ; action1 ; condition2 ; action2 ; ... ; condition99 ; action99 ; else_action )



Nun hab ich mir eine Notkonstruktion überlegt mit der ich zumindest das Ziel erreichen könnte, auch wenn es alles andere als elegant ist:
Code
n := 0;

@If(chk1_1!="l" ; n := n+1  ; chk1_2!="l" ; n := n+1  ; chk1_3!="l" ; n := n+1  ; chk1_4!="l" ; n := n+1  ; chk1_5!="l" ; n := n+1  ; chk1_6!="l" ; n := n+1  ; chk1_7!="l" ; n := n+1  ; chk1_8!="l" ; n := n+1  ; chk1_9!="l" ; n := n+1  ; chk1_10!="l" ; n := n+1  ; chk1_11!="l" ; n := n+1  ; chk1_12!="l" ; n := n+1  ; chk1_13!="l" ; n := n+1  ; chk1_14!="l" ; n := n+1  ; chk1_15!="l" ; n := n+1  ; chk1_16!="l" ; n := n+1  ; chk1_17!="l" ; n := n+1  ; chk1_18!="l" ; n := n+1  ; chk1_19!="l" ; n := n+1  ; chk1_20!="l" ; n := n+1  ;  n := 0 );

Nun müsste doch n = 20 sein wenn  kein Haken gesetzt ist. Wenn ich den Wert von n mit  @SetField in ein Feld schreiben lasse kommt aber immer 1 raus, egal ob keiner oder alle Haken gesetzt sind.

Könnt ihr mir eine etwas elegantere Lösung dafür aufzeigen?

Grüße,

Andreas

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: @If - mehrere Bedingungen
« Antwort #1 am: 25.10.05 - 11:31:36 »
Hi,

das ist auch logisch so. Denn du deklarierst n jedesmal neu. Erstze n:n+1 überall durch @Set("n"; n+1).


Code
n := 0;

@If(chk1_1!="l" ; @Set("n"; n+1)  ; chk1_2!="l" ; @Set("n"; n+1)  ; .... chk1_20!="l" ; @Set("n"; n+1)  ;  "" );



Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: @If - mehrere Bedingungen
« Antwort #2 am: 25.10.05 - 13:04:37 »
Das funktioniert leider noch nicht ganz.

Wenn ich n NICHT initialisiere ( n := 0;  -> seit R6 doch eigentlich nicht mehr nötig, oder?) dann wird eine Fehlermeldung ("Falscher Datentyp für Operator oder @Funktion: Text erwartet") geworfen.

Ansonsten wird immer 1 ausgegeben:

Code
n:=0;

@If(chk1_1!="l" ; @Set("n"; n+1)  ; chk1_2!="l" ; @Set("n"; n+1)  ; chk1_3!="l" ; @Set("n"; n+1)  ; chk1_4!="l" ; @Set("n"; n+1)  ; chk1_5!="l" ; @Set("n"; n+1)  ; chk1_6!="l" ; @Set("n"; n+1)  ; chk1_7!="l" ; @Set("n"; n+1)  ; chk1_8!="l" ; @Set("n"; n+1)  ; chk1_9!="l" ; @Set("n"; n+1)  ; chk1_10!="l" ; @Set("n"; n+1)  ; chk1_11!="l" ; @Set("n"; n+1)  ; chk1_12!="l" ; @Set("n"; n+1)  ; chk1_13!="l" ; @Set("n"; n+1)  ; chk1_14!="l" ; @Set("n"; n+1)  ; chk1_15!="l" ; @Set("n"; n+1)  ; chk1_16!="l" ; @Set("n"; n+1)  ; chk1_17!="l" ; @Set("n"; n+1)  ; chk1_18!="l" ; @Set("n"; n+1)  ; chk1_19!="l" ; @Set("n"; n+1)  ; chk1_20!="l" ; @Set("n"; n+1)  ;  "" );

@SetField("Z1";n)

Z1 ist ein Textfeld.

klaussal

  • Gast
Re: @If - mehrere Bedingungen
« Antwort #3 am: 25.10.05 - 13:09:31 »
... und n ist ein... ???-Feld  ;D

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: @If - mehrere Bedingungen
« Antwort #4 am: 25.10.05 - 13:13:44 »
Nein, das Feld n gibt es jetzt nicht mehr. n ist jetzt ja auch eine temporäre Variable.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: @If - mehrere Bedingungen
« Antwort #5 am: 25.10.05 - 13:20:03 »
Hi,

ist eigentlich ja auch logisch, dass n immer 1 ist. Die gesamte IF-Abfrage wird immer nur einmal ausgeführt und nicht die Abfragen nacheinander.

Was soll denn das Ganze werden?


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: @If - mehrere Bedingungen
« Antwort #6 am: 25.10.05 - 13:26:27 »
Also sobald eine Condition True ist wird die zugehörige Action ausgeführt und dann nicht mehr weiter überprüft?

Wie ich im ersten Posting geschrieben habe. Ich würde gerne den Fall daß in keinem der 20 Felder ein Haken gesetzt ist erkennen und darauf reagieren können.

Wie man @If Abfragen kombiniert konnte ich (auch nicht über die Hilfe) in Erfahrung bringen. Darum habe ich nach einem Kontrukt gesucht das es mir erlaubt das Ergebnis irgendwie ablesen zu können. Daher der umständliche Versuch. Wenn ihr etwas besseres wisst, würde ich das sehr gerne erfahren.

Vlg.

klaussal

  • Gast
Re: @If - mehrere Bedingungen
« Antwort #7 am: 25.10.05 - 13:27:11 »
Code
@SetField("Z1";n)

Zitat
Nein, das Feld n gibt es jetzt nicht mehr.

Das widerspricht sich jetzt aber, oder ?

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: @If - mehrere Bedingungen
« Antwort #8 am: 25.10.05 - 13:32:11 »
Code
@SetField("Z1";n)

Zitat
Nein, das Feld n gibt es jetzt nicht mehr.

Das widerspricht sich jetzt aber, oder ?

Ist der Inhalt meiner Variablen n denn zu diesem Zeitpunkt der Wertübergabe an das Feld denn schon wieder verloren?

Selbst mit einem Feld n ändert sich nichts am angezeigten Ergebnis.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: @If - mehrere Bedingungen
« Antwort #9 am: 25.10.05 - 13:33:51 »
Wie ich im ersten Posting geschrieben habe. Ich würde gerne den Fall daß in keinem der 20 Felder ein Haken gesetzt ist erkennen und darauf reagieren können.


Wenn's nur darum geht, dann kannst du das auch so machen:

Code
n := 0;

@If(chk1_1="l" ; @Set("n"; 1)  ; chk1_2="l" ; @Set("n"; 1)  ; .... chk1_20="l" ; @Set("n"; 1)  ;  "" );


Somit ist wenn kein Häkchen gesetzt wurde n = 1, sonst 0.


Axel
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: @If - mehrere Bedingungen
« Antwort #10 am: 25.10.05 - 13:42:05 »
Ich hab jetzt sicherheitshalber nochmal die Auswahlwerte aller Boxen überprüft damit auch wirklich überall ein "l" drin steht.

Das komische ist nämlich daß immer eine "1" zurückgeliefert wird, egal ob alle oder gar kein Haken gesetzt ist.

Mir ist grad noch eine Idee gekommen daß ich es mit 20 ineinander verschachtelten @If probieren könnte. Da die innerste ja nur erreicht wird wenn 19 mal TRUE vorangegangen ist.

Wie würdet ihr das lösen wenn ihr so ein Problem hättet?

klaussal

  • Gast
Re: @If - mehrere Bedingungen
« Antwort #11 am: 25.10.05 - 13:51:07 »
Zitat
Wie würdet ihr das lösen wenn ihr so ein Problem hättet?

Das kommt immer auf die Aufgabenstellung an, so pauschal kann man wenig dazu sagen.
Vorschlag: Schaltfläche ins Doc (überprüfen auf Richtigkeit der Eingaben), wenn alles ok, Flag setzten und Speichern zulassen, ansonsten FM + nicht speichern. Das hätte den Vorteil, dass man die ganze Validierung in LS machen könnte und das geht viel eleganter als in Formeln.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: @If - mehrere Bedingungen
« Antwort #12 am: 25.10.05 - 13:51:24 »
Hi,

wie sieht denn deine @If-Abfrage nun aus? Hast du dahingehend geändert, dass du auf gleich "l" abfrägst und nicht auf ungleich?

Ich hab's bei mir probiert, allerdings nicht mit 20 sondern nur mit 4 Feldern.

Mir ist grad noch eine Idee gekommen daß ich es mit 20 ineinander verschachtelten @If probieren könnte. Da die innerste ja nur erreicht wird wenn 19 mal TRUE vorangegangen ist.

Das ist aber im Prinzip das Gleiche was du jetzt schon hast.


Wie würdet ihr das lösen wenn ihr so ein Problem hättet?

Eigentlich genauso.


Axel
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Re: @If - mehrere Bedingungen
« Antwort #13 am: 25.10.05 - 13:58:30 »
Wie ich im ersten Posting geschrieben habe. Ich würde gerne den Fall daß in keinem der 20 Felder ein Haken gesetzt ist erkennen und darauf reagieren können.

Ich komme mit meinem Posting zwar etwas spät, aber warum macht ihr das eigentlich so kompliziert?

Belege doch einfach die Checkboxen mit Aliaswerten = "1", danach summierst du alle Checkboxen, vorher @Texttonumber natürlich nicht vergessen, wenn Summe > 0, dann wurde mindestens eine Checkbox ausgewählt.

Gruß Sascha

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: @If - mehrere Bedingungen
« Antwort #14 am: 25.10.05 - 14:10:50 »
So viel komplizierter ist die andere Lösung auch nicht.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Re: @If - mehrere Bedingungen
« Antwort #15 am: 25.10.05 - 14:13:45 »
So viel komplizierter ist die andere Lösung auch nicht.

Stimmt, für jemanden, der gerne viel Code schreibt nicht.  :)

Gruß Sascha

PS: Kommt eine Checkbox dazu, fängt man wieder an wilde IF's zu verschachteln.

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: @If - mehrere Bedingungen
« Antwort #16 am: 25.10.05 - 14:16:25 »
Wenn Feld leer, dann sei der Wert 0 gesetzt
Ist es gefüllt, dann habe es den Wert 1

Und dann kommt etwas vollkommen verblüffendes (für die allermeisten Notesentwickler) zum einsatz:
Eine einfache Oder-Verknüpfung (genau das willst Du nämlich offenbar tun.
Da 0=@False und 1=@True ist bieten sich diese Werte geradezu an.

Die Lösung wäre dann
_result:=n1|n2|...|n20;

Noch einfacher gehts wohl kaum...
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Andreas Huhn

  • Senior Mitglied
  • ****
  • Beiträge: 251
  • Geschlecht: Männlich
    • Private Homepage + eigene Software-Tools
Re: @If - mehrere Bedingungen
« Antwort #17 am: 25.10.05 - 15:01:26 »
Hab mit den ungleichs angefangen und dann auf = umgestellt. Vor lauter Code dann aber die ! nicht mal mehr bemerkt  ::)

So nun tuts zumindest. Danke euch!

Die Code-ärmere Version von Ghandi werd ich nachher noch probieren. Zunächst bin ich mal froh daß die Funktionalität da ist.

Danke!

Vlg

P.S. Etwas spät da das Board von Zeit zu Zeit ein wenig überlastet zu sein scheint.

Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Re: @If - mehrere Bedingungen
« Antwort #18 am: 25.10.05 - 15:24:20 »
Ach ja: Logische Operatoren in Formula language sind natürlcih aufgeführt:
| ist oder
& ist und
! ist nicht

Da das ganze in ND6 umgesetzt werden soll kannst Du Dir auch noch Schreibarbeit sparen:

@For( _i:=1 ; _i<=20 ;_i:=_i+1 ;
_result:=_result | feld;
)

Vorraussetzung, dass die Checkbox ein einzelnes Feld ist (was kein Problem sein sollte, wenn ich die Aufgabenstellung richtig verstanden habe).
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: @If - mehrere Bedingungen
« Antwort #19 am: 25.10.05 - 15:33:07 »
Vorraussetzung, dass die Checkbox ein einzelnes Feld ist (was kein Problem sein sollte, wenn ich die Aufgabenstellung richtig verstanden habe).

Das glaube ich nicht so ganz. Ich vermute mal das hängt hiermit http://atnotes.de/index.php?topic=26572.0 zusammen.

Auf dem Trip mit der For-Schleife war ich auch schon. Hab's aber wieder verworfen, weil es getrennte Felder sind.

Aber deine Lösung hat was. Einfacher geht's sicher nicht mehr.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz