Liebe Entwickler,

Wenn ich das if-Kommando in einem Custom-Formularen verwendet bekomme ich immer folgende Fehlermeldung, egal, welche Syntax ich versuche:
Das Briefkommando if/if_then benötigt mindestens 3 Argumente.

 

Ich möchte in einem Formular ein "Textfeld mehrzeilig, nicht editierbar" in Abhängigkeit von einer Variablen füllen, z. B.:
$[if "$[score]$" "0" einem_unauffälligen_Befund. "1" einer_leichten_Beeinträchtigung.]$

 

Trotz der Fehlermeldung funktioniert der Befehl korrekt, aber schöner wäre es natürlich ohne die Meldung...

 

Und wenn das Formular auf dem iPad ausgefüllt wird, wird nach dem Übernehmen in der Kartei auf dem Mac erst der "Quelltext" angezeigt

 

und erst nach einem erneuten Öffnen des Formulars auf dem Mac der eigentliche Text:

 

Gibt es da einen Workaround?

 

Herzlichen Dank smiley

Gefragt in Frage von (500 Punkte)
Bearbeitet von
+1 Punkt
Hallo Herr Kühner,

hab gerade dasselbe Problem (...3 Argumente). Haben Sie eine Lösung gefunden?
Hallo Frau Wieder,

nein, leider nicht. Das if-Kommando funktioniert in Formularen nicht, und anscheinend gibt es auch wenig Interesse, das zu ändern.

Als Workaround habe ich ein CKE erstellt, das sich die Werte aus dem Formular holt und dann die Vergleiche/Berechnungen durchführt.

Ist halt wieder ein Karteieintrag mehr.
Ok, schade. Vielleicht liest es jetzt doch noch jemand von zollsoft.
siehe hier:

https://forum.tomedo.de/index.php/57566/bugreport-customformular-mit-berechnung-von-scores-funktioniert-seit-18-10-nicht-mehr

soll ab der V1.117.0.5 wieder gefixt sein

 

Oder ist das ein anderer Fehler?

Stellen Sie doch mal eben Ihre Syntax ein, dann kann ich nachsehen.
Da die Fehlermeldung schon 9 Monate alt ist, gehe ich eher davon aus, dass es ein anderer Fehler ist. Wäre natürlich super, wenn es mit dem neuen Update auch wieder funktionieren würde.

zur ursprünglichen Fehlermeldung mit den 3 Argumenten:

Das if-kommando ist ja so aufgebaut:

wenn A, dann B, sonst C

in der Syntax wie oben beschrieben haben sie

"$[if "$[score]$" "0" einem_unauffälligen_Befund. "1" einer_leichten_Beeinträchtigung.]$"

Wenn 0, dann einem_unauffälligen_Befund, wenn 1 dann einer_leichten_Beeinträchtigung. Was Ihnen aber fehlt ist das sonst! Das müssen sie also noch ergänzen, damit kein Fehler erscheint

 

(leider kann ich es aber gerade aber nicht konkret gegentesten)

Da haben Sie recht, ich habe aber alles durchgetestet, selbst ein einfaches Kommando wie

$[if $[score]$ zs_equals 1 eins 2 zwei drei]$

führt zur gleichen Fehlermeldung. Irgendwann habe ich dann aufgegeben.

 

Das kann ich bestätigen. Alle mir erdenklichen Varianten bringen stets dieselbe Fehlermeldung.

jetzt hab ich auch alle Varianten durchgetestet wink

 

Ich gebe Ihnen völlig recht, die Fehlermeldung kommt immer, unabhängig davon, ob die Syntax korrekt ist.

--> ist also ein Bug!

Das finde ich merkwürdig.

Habe keine Erklärung dafür, bei mir gibt es diese Fehlermeldung nicht und so sollte es ja auch sein.

Auch wenn das dritte Argument (Rückfallwert) fehlt bekomme ich keine Meldung.

Benutze aber noch v1.116.0.5
So wie ich das sehe, funktioniert das if-Kommando in einem CF nicht, wenn man sich auf eine Variable innerhalb desselben CFs bezieht. Bezieht man sich auf einen CKE oder ein anderes CF, dann geht es ohne Probleme.

Habe es gerade auch mit einem CF getestet. Da bekomme ich keine Fehlermeldung, wenn ich ein Zahlenfeld mit dem if Kommando in einem "Textfeld mehrzeilig, nicht editierbar" auswerte.

Es funktioniert am PC völlig reibungslos. Am iPAD erhalte ich beim Schließen des Formulars allerdings auch die Fehlermeldung jedoch nur beim ersten Mal. Öffnet man das gleiche Formular erneut und führt Änderungen durch, erhält man die Fehlermeldung nicht mehr.

Insgesamt ist diese Fehlermeldung leider sehr problematisch, weil man keine Information erhält, in welchem Feld sich der Fehler befindet. Es genügt, wenn von 10 möglichen Feldern nur eines fehlerhaft ist. Dann ploppt die Meldung sogar mehrfach auf. Da ist es äußerst mühsam, durch Ausschlussverfahren das fehlerbehaftete Feld zu finden.

Möglicherweise liegt das Problem hier in der Reihenfolge der Feldauswertung und nicht beim if-Kommando. tomedo befüllt die Felder am Mac sortiert nach Seite und sekundär nach Position (linke Spalte in der Tabelle der CustomFormularVerwaltung) innerhalb der Seite. Wenn Sie also einen Score aus anderen Feldern berechnen möchten, sollten diese anderen Felder alle vor dem Score-Feld positioniert sein.

Bei Referenzen auf Felder, die leer sein können (z.B. Radiobutton/Skala), ist es außerdem hilfreich der Referenz eine 0 voranzustellen, damit die Syntax nicht kaputt geht, z.B. um 1 zum Wert des Feldes v1 zu addieren:
0$[v1]$+1
Wenn das Feld v1 leer ist, wird hier 1 ausgegeben.
Hallo Herr Bürger,

vielen Dank für die Tipps. Die Reihenfolge hab ich beachtet und den 2ten Tipp auch versucht - leider nach wie vor ohne Erfolg.
Hallo Herr Klaproth,

vielen Dank, das ist interessant. Mit dem Zahlenfeld hab ich es nun auch versucht (auch mit einem einfachen Ankreuzfeld und einem Textfeld, die Fehlermeldung "… if/if_then benötigt mind. 3 Argumente…" bleibt bei mir jodoch bestehen, das Kommando selber funktioniert. Ich werde jetzt zunächst das nächste Update abwarten (link von Herrn Tenzer) und dann mal sehen.
Hallo Frau Wieder

es ist tatsächlich merkwürdig. Die Fehlermeldung kommt bei mir im CF nur beim ersten Aufruf, danach nicht wieder. In CKE habe ich meist mehrere if Kommandos. Da genügt ein kleiner Fehler und man bekommt die Meldung, weiß aber nicht, welches Feld den Fehler aufweist. Da kann man dann nur per Ausschlussverfahren arbeiten.
Dank einer Einsendung des verwendeten CFs von Herrn Tenzer konnte ich den Fehler eingrenzen. Problem war, dass die Feldreferenzen vor dem ersten Ausführen der Briefkommandos nicht ersetzt wurden - die Briefschreibung kam dann einfach mit ineinander verschachtetten Klammern wie in
$[if "$[score]$" "0" einem_unauffälligen_Befund. "1" einer_leichten_Beeinträchtigung.]$
nicht klar.

Das sollte dann ab der Version 118 behoben sein.
Ausgezeichnet! Vielen Dank.
Version 118 ist da, und die Fehlermeldung auch noch...

Was mir jetzt aufgefallen ist: man wählt auf dem iPad das Formular aus, drückt auf "Weiter", und dann sieht man schon kurz die Fehlermeldung im orangenen Fenster, ehe sie vom Formular überlagert wird. Die Fehlermeldung kommt also schon beim Öffnen des Formulars, bevor man mit dem Ausfüllen begonnen hat. Man kann das auch anhand der Uhrzeit, die bei der Fehlermeldung steht, nachvollziehen.

Wenn man dann das Formular dann ausfüllt, werden die Werte korrekt berechnet in die Akte übernommen, der if-Befehl funktioniert also prinzipiell. Beim Schliessen des Formulars erscheint dann halt trotzdem wieder die Fehlermeldung, die sich ja schon vorher geöffnet hatte.

Dabei erscheint bei nur einem if-Befehl im Formular 4-mal die Fehlermeldung im orangenfarbenen Fenster.

Kurz eine andere Frage: wenn ich bei einem Ankreuzfeld die Vorbefüllung '0' eingeben, sollte es im Formular beim Öffnen nicht angekreuz sein, und bei '1' angekreuz, oder habe ich das falsch in Erinnerung? Aktuell wird es immer angekreuz, sobald irgendetwas im Feld Vorbefüllung steht, auch bei '0'.
Für's iPad kann ich das bestätigen, am Mac funktioniert es jetzt ohne Meldung.

@Herr Kühner: Sie brauchen, wenn Sie kein Kreuz haben möchten, keine Vorbefüllung im Ankreuzfeld.

1 Antwort

Seit kurzem kann man bei den if-Kommandos besser vergleichen. Daher muss man das "3.Argument" noch nach der Variable einfügen z.B zs_contains oder zs_equals

Ist bei der Erklärung des if Kommandos ganz schön beschrieben.
Beantwortet von (12.7k Punkte)
0 Punkte

Hallo Herr Stenger,

damit hatte ich es auch versucht, es kommt aber die gleiche Fehlermeldung, z. B. bei:

$[if $[score]$ zs_equals 1 eins 2 zwei drei]$

 

Sie meinen die Erläuterungen bei den Briefkommandos? Das ist ein guter Hinweis, ich schaue immer im Forum und Handbuch nach und habe die Briefkommandos ganz vergessen. Die schaue ich mir noch mal genauer an.

Das ist das was Zollsoft loswerden muss. Die Syntax ist wirklich Zeitverschwendung. Ich habe deswegen wenig Lust die Praxis zu automatisieren.

Herr Tenzer kann hier sicher auch eine Baukasten machen aber seine Aufgabe ist das nicht.
Ich hatte das 3. Argument nicht in meinen CKE und das lief aber problemlos.
Nach dem update letzte Woche bekommen ich immer diese Fehlermeldungen (ich weiß selber, das ein Argument fehlt) - jetzt habe ich bei jedem CKE eingeblendte Erinnerungen an meine Unzulänglichkeit.
Ich kann es nicht abstellen, ich kann den Wert der Anzeige meiner Fehler auf 1 Sekunde in Tomedo - Einstellungen - Allgemein runterstellen, aber dann sehe ich auch sonst alles nur 1 Sekunde.
Ist das ein BUG?
Denn wenn ich meinen Eintrag neu machen soll, bin ich lange beschäftigt. Denn egal auf welchen Feldnamen ich klicke, es scheint eine Fehlerprüfung durchzulaufen und die zeigt mir zwar immer meinen Fehler an, aber nicht, in welchem Feld. Da ich über 150 Felder habe.. das bekomme ich nicht hin. Und alles auf die neue Syntax umschreiben, '' verwenden, aber dann keine _ mehr im Fließtext, darauf habe ich auch keine Lust.
Also: können die Fehlermeldungen wieder weg?
Hallo Matthias

Fehlermeldungen sind grundsätzlich sinnvoll. Nur diese Fehlermeldung - wenn denn alles auch so funktioniert - eben nicht. Habe das auch gelegentlich und werde so immer wieder an meine anfänglichen Unzulänglichkeiten erinnert.

Vielleicht gibt es mal die Möglichkeit derartige Meldungen gezielt an der jeweiligen Stelle nach dem Motto, diese Erinnerung hier nicht wieder anzeigen, abzuschalten. Das würde ich auch sehr begrüßen.

Damit man den Fehler gezielt abstellen kann, fehlt der Hinweis in welcher Zeile er liegt, so muss man tatsächlich 150 oder mehr Einträge durchforsten um den dämlichen banalen Fehler abzustellen, dessen Meldung immer wieder nervt. Es macht allerdings wenig Sinn, sich wegen der überflüssigen Fehlermeldung allzuviel Arbeit zu machen. Wenn man sich mit solchen komplexen Sachen beschäftigt kostet es leider schon Zeit genug.
11,253 Beiträge
17,898 Antworten
29,408 Kommentare
5,837 Nutzer