Hi,
Ob eine Checkbox gehakt ist überprüfe ich so:
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:
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
Hi,
das ist auch logisch so. Denn du deklarierst n jedesmal neu. Erstze n:n+1 überall durch @Set("n"; n+1).
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
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:
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.
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:
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