XLSForms और rtSurvey में Calculate questions का उपयोग आपके form के अन्य fields या values के आधार पर computations perform करने के लिए किया जाता है। ये questions user को display नहीं होते बल्कि background में run होते हैं, अपने results को बाद में उपयोग या submission के लिए store करते हैं।

Syntax

XLSForm में, एक calculate question इस प्रकार define किया जाता है:

typenamelabelcalculation
calculatecalc_q1${q1} + ${q2}
  • type: इस question type के लिए हमेशा “calculate”।
  • name: Calculate question के लिए एक unique name।
  • label: आमतौर पर blank छोड़ा जाता है क्योंकि calculate questions users को display नहीं होते।
  • calculation: Evaluate की जाने वाली formula।

उपयोग

Calculate questions सामान्यतः इनके लिए उपयोग किए जाते हैं:

  1. Arithmetic operations perform करना
  2. Strings concatenate करना
  3. Complex logic या functions लागू करना
  4. बाद में उपयोग के लिए intermediate results store करना

उदाहरण

Basic Arithmetic

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

String Concatenation

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

Functions का उपयोग करना

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

rtSurvey में Advanced Usage

pulldata() Function

rtSurvey calculate fields में pulldata() function का समर्थन करता है, जिससे आप बाहरी CSV files से data retrieve कर सकते हैं:

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

Syntax

pulldata() का basic syntax है:

  pulldata('csv_filename', 'column_to_return', 'key_column', ${matching_value})
  
  • ‘csv_filename’: CSV file का नाम (.csv extension के बिना)
  • ‘column_to_return’: वह column name जिसमें आप जो data pull करना चाहते हैं वह है
  • ‘key_column’: Match करने के लिए column name
  • ${matching_value}: Key column में lookup करने के लिए value (अक्सर form से एक variable)

महत्वपूर्ण Notes

  1. Survey deploy करते समय CSV file को अपने XLSForm के साथ upload की जानी चाहिए।
  2. अपनी CSV file में separators के रूप में commas का उपयोग करें, semicolons का नहीं।
  3. अपने CSV के data fields में commas से बचें, क्योंकि वे parsing issues का कारण बन सकते हैं।
  4. pulldata() केवल 1-to-1 relationships का समर्थन करता है। यदि multiple matches मिलते हैं, तो यह केवल पहला return करता है।
  5. Pull किए जा सकने वाले text length पर सीमाएं हो सकती हैं (लगभग 76 characters)।
  6. आप CSV data के विरुद्ध entries validate करने के लिए constraints में pulldata() का उपयोग कर सकते हैं।

Conditional Calculations

Conditional calculations के लिए if() statements का उपयोग कर सकते हैं:

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

Best Practices

  1. Form readability में सुधार करने के लिए calculate fields के लिए meaningful names का उपयोग करें।
  2. एक ही field में अत्यधिक complex calculations से बचें; यदि आवश्यक हो तो उन्हें break down करें।
  3. अपने calculations का पूरी तरह से परीक्षण करें, विशेषकर complex formulas या external data का उपयोग करते समय।
  4. याद रखें कि calculate fields हर बार form evaluate होने पर run होते हैं, जो बहुत complex या कई calculations के लिए performance को प्रभावित कर सकता है।
  5. pulldata() का उपयोग करते समय, सुनिश्चित करें कि आपकी CSV files सही ढंग से formatted हों और अपने specific data और form structure के साथ पूरी तरह से test करें।

सीमाएं

  • Calculate fields users द्वारा directly editable नहीं हैं।
  • Calculate field का result display field में referenced या form logic में उपयोग किए जाने तक immediately visible नहीं होता।
क्या यह पृष्ठ सहायक था?