Οι ερωτήσεις calculate στα XLSForms και στο rtSurvey χρησιμοποιούνται για την εκτέλεση υπολογισμών βάσει άλλων πεδίων ή τιμών της φόρμας σας. Αυτές οι ερωτήσεις δεν εμφανίζονται στον χρήστη αλλά εκτελούνται στο παρασκήνιο, αποθηκεύοντας τα αποτελέσματά τους για μεταγενέστερη χρήση ή υποβολή.

Σύνταξη

Στο XLSForm, μια ερώτηση calculate ορίζεται ως εξής:

typenamelabelcalculation
calculatecalc_q1${q1} + ${q2}
  • type: Πάντα “calculate” για αυτόν τον τύπο ερώτησης.
  • name: Μοναδικό όνομα για την ερώτηση calculate.
  • label: Συνήθως αφήνεται κενό καθώς οι ερωτήσεις calculate δεν εμφανίζονται στους χρήστες.
  • calculation: Ο τύπος προς αξιολόγηση.

Χρήσεις

Οι ερωτήσεις calculate χρησιμοποιούνται συνήθως για:

  1. Εκτέλεση αριθμητικών πράξεων
  2. Συνένωση συμβολοσειρών
  3. Εφαρμογή σύνθετης λογικής ή συναρτήσεων
  4. Αποθήκευση ενδιάμεσων αποτελεσμάτων για μεταγενέστερη χρήση

Παραδείγματα

Βασική αριθμητική

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | total    | ${price} * ${quantity} |
  

Συνένωση συμβολοσειρών

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | full_name| concat(${first_name}, ' ', ${last_name}) |
  

Χρήση συναρτήσεων

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | age      | int((today() - ${date_of_birth}) / 365.25) |
  

Προχωρημένη χρήση στο rtSurvey

Συνάρτηση pulldata()

Το rtSurvey υποστηρίζει τη συνάρτηση pulldata() σε πεδία calculate, επιτρέποντάς σας να ανακτάτε δεδομένα από εξωτερικά αρχεία CSV:

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | city     | pulldata('cities', 'city_name', 'zip_code', ${zip_input}) |
  

Σύνταξη

Η βασική σύνταξη για pulldata() είναι:

  pulldata('csv_filename', 'column_to_return', 'key_column', ${matching_value})
  
  • ‘csv_filename’: Όνομα του αρχείου CSV (χωρίς επέκταση .csv)
  • ‘column_to_return’: Όνομα στήλης που περιέχει τα δεδομένα που θέλετε να ανακτήσετε
  • ‘key_column’: Όνομα στήλης για αντιστοίχιση
  • ${matching_value}: Τιμή για αναζήτηση στη στήλη κλειδιού (συχνά μεταβλητή από τη φόρμα)

Σημαντικές σημειώσεις

  1. Το αρχείο CSV πρέπει να μεταφορτωθεί μαζί με το XLSForm σας κατά την ανάπτυξη της έρευνας.
  2. Χρησιμοποιήστε κόμμα ως διαχωριστή στο αρχείο CSV, όχι ερωτηματικά.
  3. Αποφύγετε κόμματα εντός πεδίων δεδομένων CSV, καθώς μπορεί να προκαλέσουν προβλήματα ανάλυσης.
  4. Η pulldata() υποστηρίζει μόνο σχέσεις 1-προς-1. Εάν βρεθούν πολλαπλές αντιστοιχίσεις, επιστρέφει μόνο την πρώτη.
  5. Ενδέχεται να υπάρχουν περιορισμοί στο μήκος κειμένου που μπορεί να ανακτηθεί (περίπου 76 χαρακτήρες).
  6. Μπορείτε να χρησιμοποιήσετε pulldata() σε περιορισμούς για επικύρωση καταχωρήσεων έναντι δεδομένων CSV.

Υπό συνθήκη υπολογισμοί

Μπορείτε να χρησιμοποιήσετε εντολές if() για υπό συνθήκη υπολογισμούς:

  | type      | name     | calculation |
|-----------|----------|-------------|
| calculate | discount | if(${total} > 1000, ${total} * 0.1, 0) |
  

Βέλτιστες πρακτικές

  1. Χρησιμοποιήστε ουσιαστικά ονόματα για πεδία calculate για βελτίωση αναγνωσιμότητας φόρμας.
  2. Αποφύγετε υπερβολικά σύνθετους υπολογισμούς σε ένα πεδίο· αναλύστε τους εάν είναι απαραίτητο.
  3. Δοκιμάστε τους υπολογισμούς σας διεξοδικά, ειδικά κατά τη χρήση σύνθετων τύπων ή εξωτερικών δεδομένων.
  4. Θυμηθείτε ότι τα πεδία calculate εκτελούνται κάθε φορά που αξιολογείται η φόρμα, γεγονός που μπορεί να επηρεάσει την απόδοση.
  5. Κατά τη χρήση pulldata(), βεβαιωθείτε ότι τα αρχεία CSV έχουν σωστή μορφοποίηση και δοκιμάστε διεξοδικά.

Περιορισμοί

  • Τα πεδία calculate δεν είναι άμεσα επεξεργάσιμα από χρήστες.
  • Το αποτέλεσμα ενός πεδίου calculate δεν είναι άμεσα ορατό εκτός εάν αναφερθεί σε πεδίο εμφάνισης ή χρησιμοποιηθεί σε λογική φόρμας.
Ήταν χρήσιμη αυτή η σελίδα;