Питання calculate у XLSForm та 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 не є відразу видимим, якщо на нього не посилаються у полі відображення або у логіці форми.
Чи була ця сторінка корисною?