On this page
calculate
Calculate (Berechnen)
Calculate-Fragen in XLSForms und rtSurvey werden verwendet, um Berechnungen basierend auf anderen Feldern oder Werten in Ihrem Formular durchzuführen. Diese Fragen werden dem Benutzer nicht angezeigt, sondern laufen im Hintergrund und speichern ihre Ergebnisse für die spätere Verwendung oder Übermittlung.
Syntax
In der XLSForm wird eine calculate-Frage wie folgt definiert:
| type | name | label | calculation |
|---|---|---|---|
| calculate | calc_q1 | ${q1} + ${q2} |
- type: Für diesen Fragetyp immer
calculate. - name: Ein eindeutiger Name für die
calculate-Frage. - label: Wird normalerweise leer gelassen, da
calculate-Fragen den Benutzern nicht angezeigt werden. - calculation: Die auszuwertende Formel.
Anwendungen
Calculate-Fragen werden häufig verwendet für:
- Durchführung arithmetischer Operationen
- Verknüpfung von Zeichenfolgen (Strings)
- Anwendung komplexer Logik oder Funktionen
- Speicherung von Zwischenergebnissen für die spätere Verwendung
Beispiele
Grundlegende Arithmetik
| type | name | calculation |
|-----------|----------|-------------|
| calculate | total | ${price} * ${quantity} |
Zeichenfolgenverknüpfung (String Concatenation)
| type | name | calculation |
|-----------|----------|-------------|
| calculate | full_name| concat(${first_name}, ' ', ${last_name}) |
Verwendung von Funktionen
| type | name | calculation |
|-----------|----------|-------------|
| calculate | age | int((today() - ${date_of_birth}) / 365.25) |
Fortgeschrittene Verwendung in rtSurvey
pulldata() Funktion
rtSurvey unterstützt die Funktion pulldata() in calculate-Feldern, mit der Sie Daten aus externen CSV-Dateien abrufen können:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | city | pulldata('cities', 'city_name', 'zip_code', ${zip_input}) |
Syntax
Die grundlegende Syntax für pulldata() ist:
pulldata('csv_filename', 'column_to_return', 'key_column', ${matching_value})
- ‘csv_filename’: Name der CSV-Datei (ohne die Erweiterung .csv)
- ‘column_to_return’: Spaltenname, der die Daten enthält, die Sie abrufen möchten
- ‘key_column’: Spaltenname, der für den Abgleich verwendet werden soll
- ${matching_value}: Wert, nach dem in der Schlüsselspalte gesucht werden soll (oft eine Variable aus dem Formular)
Wichtige Hinweise
- Die CSV-Datei muss zusammen mit Ihrer XLSForm hochgeladen werden, wenn Sie die Umfrage bereitstellen.
- Verwenden Sie in Ihrer CSV-Datei Kommas als Trennzeichen, keine Semikolons.
- Vermeiden Sie Kommas innerhalb der Datenfelder Ihrer CSV-Datei, da diese Probleme beim Parsen verursachen können.
pulldata()unterstützt nur 1-zu-1-Beziehungen. Wenn mehrere Übereinstimmungen gefunden werden, wird nur die erste zurückgegeben.- Es kann Einschränkungen bei der Textlänge geben, die abgerufen werden kann (ca. 76 Zeichen).
- Sie können
pulldata()in Constraints verwenden, um Eingaben gegen die CSV-Daten zu validieren.
Bedingte Berechnungen
Sie können if()-Anweisungen für bedingte Berechnungen verwenden:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | discount | if(${total} > 1000, ${total} * 0.1, 0) |
Best Practices
- Verwenden Sie aussagekräftige Namen für
calculate-Felder, um die Lesbarkeit des Formulars zu verbessern. - Vermeiden Sie zu komplexe Berechnungen in einem einzigen Feld; unterteilen Sie sie bei Bedarf.
- Testen Sie Ihre Berechnungen gründlich, insbesondere wenn Sie komplexe Formeln oder externe Daten verwenden.
- Denken Sie daran, dass
calculate-Felder jedes Mal ausgeführt werden, wenn das Formular ausgewertet wird, was bei sehr komplexen oder zahlreichen Berechnungen die Leistung beeinträchtigen kann. - Stellen Sie bei der Verwendung von
pulldata()sicher, dass Ihre CSV-Dateien korrekt formatiert sind, und testen Sie gründlich mit Ihren spezifischen Daten und der Formularstruktur.
Einschränkungen
Calculate-Felder sind von den Benutzern nicht direkt bearbeitbar.- Das Ergebnis eines
calculate-Feldes ist nicht sofort sichtbar, es sei denn, es wird in einem Anzeigefeld referenziert oder in der Formularlogik verwendet.
War diese Seite hilfreich?