Τα select_one_from_file και select_multiple_from_file λειτουργούν όπως τα select_one και select_multiple, αλλά αντί να ορίζουν επιλογές στο φύλλο εργασίας choices, οι επιλογές φορτώνονται από ένα εξωτερικό αρχείο CSV ή XML που επισυνάπτεται στη φόρμα. Αυτό είναι χρήσιμο όταν η λίστα επιλογών σας είναι πολύ μεγάλη, αλλάζει συχνά ή χρειάζεται ενημέρωση χωρίς αναδημιουργία ολόκληρης της φόρμας.

Βασική προδιαγραφή XLSForm

typenamelabel
select_one_from_file health_facilities.csvfacilityΕπιλέξτε την υγειονομική εγκατάσταση
select_multiple_from_file crops.csvcropsΠοιες καλλιέργειες κάνει το νοικοκυριό;

Το όνομα αρχείου μετά το όνομα τύπου πρέπει να ταιριάζει με το όνομα του αρχείου που επισυνάπτετε κατά τη φόρτωση της φόρμας.

Μορφή αρχείου CSV

Το αρχείο CSV πρέπει να έχει τουλάχιστον δύο στήλες: name (η αποθηκευμένη τιμή) και label (το εμφανιζόμενο κείμενο). Μπορείτε να προσθέσετε οποιοδήποτε αριθμό επιπλέον στηλών για φιλτράρισμα.

health_facilities.csv:

  name,label,district,type
HF001,Nairobi Central Clinic,Nairobi,clinic
HF002,Westlands Health Centre,Nairobi,health_centre
HF003,Kisumu District Hospital,Kisumu,hospital
  

Φιλτράρισμα επιλογών

Χρησιμοποιήστε τη στήλη choice_filter για εμφάνιση μόνο των επιλογών που ταιριάζουν με το τρέχον πλαίσιο. Αναφερθείτε στις στήλες CSV απευθείας με το όνομά τους (χωρίς ${}):

typenamelabelchoice_filter
select_one districts.csvdistrictΕπιλέξτε περιφέρεια
select_one_from_file health_facilities.csvfacilityΕπιλέξτε εγκατάστασηdistrict = ${district}

Σε αυτό το παράδειγμα, εμφανίζονται μόνο οι εγκαταστάσεις στην επιλεγμένη περιφέρεια. Η district στο choice_filter αναφέρεται στη στήλη district του αρχείου CSV· το ${district} αναφέρεται στο πεδίο φόρμας με όνομα district.

Χρήσεις

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

  1. Μεγάλες λίστες επιλογών — υγειονομικές εγκαταστάσεις, σχολεία, χωριά, λίστες ειδών (εκατοντάδες ή χιλιάδες στοιχεία)
  2. Συχνά ενημερωμένες λίστες — όταν η κύρια λίστα αλλάζει μεταξύ γύρων έρευνας, ενημερώστε μόνο το CSV χωρίς αναδημιουργία της φόρμας
  3. Κοινά δεδομένα αναφοράς — ένα αρχείο CSV χρησιμοποιούμενο σε πολλές φόρμες
  4. Φιλτραρισμένες ιεραρχικές επιλογές — φορτώστε όλες τις περιοχές/επαρχίες/χωριά σε ένα αρχείο, μετά φιλτράρετε ανά γονική επιλογή

Επισύναψη αρχείου

Κατά τη φόρτωση της φόρμας σας στο rtSurvey, επισυνάψτε το αρχείο CSV ως συνημμένο πολυμέσων. Το όνομα αρχείου στον ορισμό φόρμας πρέπει να ταιριάζει ακριβώς με το όνομα αρχείου του συνημμένου.

Χρήση choice-label() με from-file

Για εμφάνιση της ετικέτας μιας επιλεγμένης επιλογής σε πεδίο note ή calculate:

typenamelabelcalculation
select_one_from_file health_facilities.csvfacilityΕπιλέξτε εγκατάσταση
calculatefacility_labelchoice-label(${facility}, ${facility})
notesummaryΕπιλεγμένη εγκατάσταση: ${facility_label}

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

  1. Κρατήστε τα αρχεία CSV κάτω από 5.000 γραμμές για καλή απόδοση σε κινητές συσκευές.
  2. Πάντα συμπεριλαμβάνετε στήλες name και label — επιπλέον στήλες είναι προαιρετικές.
  3. Για ιεραρχικές επιλογές, χρησιμοποιήστε ένα CSV με στήλη γονικού και φιλτράρετε με choice_filter.
  4. Δώστε έκδοση στα ονόματα αρχείων CSV (π.χ. facilities_v3.csv) κατά την πραγματοποίηση ριζικών αλλαγών στη δομή στηλών.
  5. Δοκιμάστε εκφράσεις φιλτραρίσματος προσεκτικά — ένα τυπογραφικό λάθος στο choice_filter θα εμφανίζει σιωπηλά καμία επιλογή.

Περιορισμοί

  • Πολύ μεγάλα αρχεία CSV (10.000+ γραμμές) μπορεί να επιβραδύνουν τη φόρτωση φόρμας, ειδικά σε χαμηλής κατηγορίας συσκευές.
  • Τα αρχεία CSV πρέπει να φορτωθούν μαζί με τη φόρμα — δεν μπορούν να ανακτηθούν από URL κατά την εκτέλεση (χρησιμοποιήστε search() ή pulldata() για δυναμικές αναζητήσεις).
  • Το select_multiple_from_file υποστηρίζεται λιγότερο συχνά στους clients — ελέγξτε τη συμβατότητα πριν τη χρήση.
select_one_from_fileεμφάνιση search()
Πηγή επιλογώνΕπισυναπτόμενο αρχείο CSV/XMLΕρώτημα βάσης δεδομένων από server
Λειτουργεί εκτός σύνδεσηςΝαι (αρχείο είναι ενσωματωμένο)Απαιτεί σύνδεση
Αριθμός επιλογώνΠεριορίζεται από μνήμη συσκευήςΑπεριόριστος (σελιδοποίηση)
Δεδομένα σε πραγματικό χρόνοΌχιΝαι

Για μεγάλα, συχνά μεταβαλλόμενα ή δεδομένα από server, δείτε Δυναμική αναζήτηση.

Ήταν χρήσιμη αυτή η σελίδα;