W specyfikacji XLSForm istnieje możliwość wielokrotnego powtarzania zbioru pytań. Poniżej przedstawiono przykłady dotyczące używania powtórzeń:
- Zbieranie wielu odpowiedzi na to samo pytanie w jednej ankiecie.
- Zbieranie osobnych, mniejszych zbiorów rekordów, takich jak imię i nazwisko, wiek oraz płeć każdej osoby w gospodarstwie domowym.
- Zbieranie wielu pytań typu map (mapa) w jednej ankiecie.

Podczas publikowania ankiety zawierającej powtórzenia, każde z nich jest tworzone jako powiązana tabela w warstwie obiektowej lub jako powiązana warstwa, jeśli powtórzenie zawiera pytanie typu geopoint (punkt geograficzny), geotrace (ślad geograficzny) lub geoshape (kształt geograficzny).
Używanie powtórzeń
Aby powtórzyć zbiór pytań w celu zebrania wielu odpowiedzi, wykonaj następujące czynności na karcie survey (ankieta) w arkuszu kalkulacyjnym:
- W wierszu, w którym ma się rozpocząć powtórzenie, wpisz tekst begin repeat (rozpocznij powtórzenie) w kolumnie type (typ).
- Podaj nazwę powtórzenia w kolumnie name (nazwa).
- W wierszach poniżej wprowadzaj pytania, które mają znaleźć się w powtórzeniu.
- Zaraz po pytaniach wpisz wartość end repeat (zakończ powtórzenie) w kolumnie type (typ).
W ankiecie zostaje utworzony zbiór pytań, na które można odpowiadać wiele razy. Domyślnie nie ma żadnych ograniczeń dotyczących tego, ile razy można powtarzać pytania.
Lokalizacje punktów z pierwszego pytania typu geopoint (punkt geograficzny) w powtórzeniu mogą zostać wyświetlone na dowolnej mapie w ankiecie. Więcej informacji zawiera sekcja Nakładanie punktów na mapie.
Wygląd
Po ustawieniu w kolumnie appearance (wygląd) dla pytania begin repeat (rozpocznij powtórzenie) wyglądu minimal (minimalny) zbiór pytań nie jest widoczny podczas uruchamiania. Aby zobaczyć pytania w powtórzeniu, użytkownik musi kliknąć przycisk dodawania. Jest to przydatne w sytuacji, gdy powtarzanych pytań nie trzeba wypełniać w ankiecie. Ten wygląd jest zdefiniowany w pytaniu rozpoczynającym powtórzenie.

Jeśli liczba powtórzeń jest skonfigurowana na wartość minimal (minimalna), a liczba powtórzeń wynosi zero, elementy sterujące powtórzeniami i ich etykiety są niewidoczne.
Po ustawieniu dla pytania begin repeat (rozpocznij powtórzenie) wyglądu compact (kompaktowy) podczas uruchamiania powtórzenie jest zwinięte, a użytkownik ma możliwość jego rozwinięcia. Jest to użyteczne w przypadku dużych ankiet, które mogą być trudne do czytania i po których trudno się poruszać. Ten wygląd jest zdefiniowany w pytaniu rozpoczynającym powtórzenie.
W przeciwieństwie do innych wyglądów w powtórzeniu można stosować jednocześnie wygląd minimalny i kompaktowy przez ustawienie wyglądu na minimal compact (minimalny kompaktowy). Powoduje to, że pytania w powtórzeniu są wyświetlane w postaci zwiniętej (compact) i ukrytej (minimal).
Po ustawieniu dla pytania begin repeat (rozpocznij powtórzenie) wyglądu tabular (tabelaryczny) pytania w powtórzeniu są wyświetlane w postaci tabeli. Więcej informacji zawiera sekcja Powtórzenia tabelaryczne.
Notatka:
W aplikacji Survey123 Connect można również skonfigurować następujące wyglądy dla powtórzeń w ankietach używanych w aplikacji terenowej Survey123 lub aplikacji internetowej Survey123:
- Po ustawieniu w kolumnie style (styl) arkusza settings (ustawienia) wartości pages (strony), a dla każdego pytania begin repeat (rozpocznij powtórzenie) wyglądu field-list (lista pól), każdy powtarzający się zbiór pytań jest wyświetlany na oddzielnej stronie ankiety. To zachowanie jest takie samo jak w przypadku grupy.
- Po skonfigurowaniu w kolumnie style (styl) arkusza settings (ustawienia) wartości fixed-grid (siatka stała) lub dynamic-grid (siatka dynamiczna) powtórzenia w ankiecie można skonfigurować pod kątem wyświetlania zawartych w nich pytań w kompozycji siatki. To zachowanie jest takie samo jak w przypadku grupy.
Powtórzenia tabelaryczne
Notatka:
W tej sekcji opisano funkcje, które są dostępna tylko w aplikacjach Survey123 Studio i Survey123 Mobile.
W aplikacji Survey123 Connect, aplikacji terenowej Survey123 i aplikacji internetowej Survey123 wygląd tabular (tabelaryczny) i powiązane z nim parametry XLSForm są ignorowane.
Po ustawieniu dla pytania begin repeat (rozpocznij powtórzenie) wyglądu tabular (tabelaryczny) pytania w powtórzeniu są wyświetlane w postaci tabeli. W widoku tabelarycznym rekordy w powtórzeniu są wyświetlane jako wiersze, a pytania — jako kolumny. Widok tabelaryczny umożliwia edycję danych bezpośrednio w komórkach, a także sortowanie rekordów w powtórzeniu i przechodzenie między nimi.
Widok tabelaryczny jest przedstawiony na poniższym obrazie:

Poniżej przedstawiono objaśnienia widoczne na powyższym obrazie:
- Naciśnij przycisk menu powiązanego z określonym wierszem, aby uzyskać dostęp do opcji Edytuj w widoku formularza, Kopiuj do nowego rekordu i Usuń.
- Ikona trybu tylko odczytu wskazuje, że pytania (kolumny) nie można edytować w widoku tabelarycznym.
- Naciśnij nagłówek kolumny, aby posortować widok tabelaryczny w porządku rosnącym, i opcjonalnie wykonaj następujące czynności:
- Naciśnij ponownie nagłówek kolumny, aby posortować w porządku malejącym.
- Naciśnij nagłówek kolumny po raz trzeci, aby wyłączyć sortowanie (przywrócony zostaje pierwotny porządek wierszy). Można też nacisnąć nagłówek innej kolumny, aby posortować według tej kolumny.
- Naciśnij w komórce, aby edytować jej wartość. Tylko niektóre typy pytań można edytować w widoku tabelarycznym.
- Naciśnij w komórce przycisk czyszczenia, aby usunąć jej wartość.
Można też przeprowadzić edycję pojedynczych rekordów w widoku formularza. W widoku formularza poszczególne rekordy powtórzenia są wyświetlane w osobnym widoku ankiety wyposażonym we wszystkie niezbędne funkcje.
Wyglądu tabular (tabelaryczny) można używać w połączeniu z wyglądami minimal (minimalny) i compact (kompaktowy).
Aby rozpocząć pracę z powtórzeniami tabelarycznymi, wykonaj w aplikacji Survey123 Studio następujące czynności:
- Skonfiguruj wygląd tabular (tabelaryczny) w pytaniu rozpoczynającym powtórzenie.
Widok tabelaryczny będzie pusty do czasu, aż dodasz do niego pytania.
- Dodaj jedno lub większą liczbę pytań do widoku tabelarycznego, wpisując showInTabularView=true w kolumnie body:esri:Style każdego pytania.
- Skonfiguruj widok tabelaryczny z opcjonalnymi parametrami.
Dodawanie pytań do widoku tabelarycznego
Pytania można dodawać do widoku tabelarycznego, wpisując showInTabularView=true w kolumnie body:esri:Style każdego pytania w powtórzeniu. W widoku tabelarycznym można edytować następujące typy pytań:
- tekst
- całkowita
- dziesiętna
- data
- czas
- dateTime
Wszystkie inne typy pytań są wyświetlane w widoku tabelarycznym jako kolumny tylko do odczytu.
Uwaga:
Zwróć uwagę na następujące kwestie podczas dodawania pytania do widoku tabelarycznego:
- Pytań w powtórzeniu, które zawierają wyrażenie (w tym yes) w kolumnie readonly, nie można edytować w widoku tabelarycznym.
- Pytania w powtórzeniu, które zawierają wyrażenie w kolumnie body::Esri:Visible lub mają wygląd hidden (ukryte), nie są wyświetlane w widoku tabelarycznym.
- Pytania w powtórzeniu, które zawierają wyrażenie w kolumnie relevant (odpowiednie), nie są wyświetlane w widoku tabelarycznym.
- Pytania w powtórzeniu, które zawierają wyrażenie (w tym yes) w kolumnie required (wymagane) lub wyrażenie w kolumnie constraint (ograniczenie) są wyświetlane w widoku tabelarycznym. Gdy nie są spełnione jeden lub większa liczba warunków wymaganych bądź ograniczenia, powyżej widoku tabelarycznego wyświetlane jest ogólne ostrzeżenie z ikoną ostrzeżenia obok każdego rekordu (wiersza) z błędami. Nie można przesłać ankietę, dopóki te błędy nie zostaną usunięte. Można edytować rekordy w widoku formularza, aby widoczne były komunikaty ostrzegawcze dotyczące ograniczenia i wymagania dla poszczególnych pytań. Kiedy powtórzenie zawiera błędy, opcja Edytuj w widoku formularza jest włączona, nawet jeśli parametr editInFormView w kolumnie body::esri:style jest skonfigurowany na wartość false.
Opcje widoku tabelarycznego
Można skonfigurować opcje związane z rekordami (wierszami) w widoku tabelarycznym, określając parametry w kolumnie body::esri:style pytania rozpoczynającego powtórzenie. Te opcjonalne parametry są opisane w poniższej tabeli. Aby dodać wiele parametrów, należy rozdzielić je spacjami. Poniżej znajduje się przykład:
addRecordMode=form copyToNewRecord=false
Jeśli wygląd pytania rozpoczynającego powtórzenie jest skonfigurowany na tabular (tabelaryczne) i nie określono dla tego pytania żadnych parametrów w kolumnie body::esri:style opcje Edytuj w widoku formularza, Kopiuj do nowego rekordu i Usuń są domyślnie dostępne w widoku tabelarycznym.
| Parametr | Opis |
|---|---|
| addRecordMode | Określ tryb dla przycisku Dodaj rekord i opcji Kopiuj do nowego rekordu w widoku tabelarycznym. Wartość domyślna to row. Gdy wartością jest row, nowy rekord jest dołączany do widoku tabelarycznego. Gdy wartością jest form, nowy rekord jest otwierany w widoku formularza. Wartości: row | form Przykład: |
| editInFormView | Pokaż lub ukryj opcję Edytuj w widoku formularza w widoku tabelarycznym. Wartość domyślna to true. Notatka:Kiedy powtórzenie zawiera błędy, opcja Edytuj w widoku formularza jest włączona, nawet jeśli parametr editInFormView jest skonfigurowany na wartość false. Wartości: true | false Przykład: |
| copyToNewRecord | Pokaż lub ukryj opcję Kopiuj do nowego rekordu w widoku tabelarycznym. Ta opcja umożliwia użytkownikom zduplikowanie rekordu w powtórzeniu. Wartość domyślna to true. Parametr addRecordMode określa sposób dodawania zduplikowanego rekordu. Wartości: true | false Przykład: |
| editInTabularView | Włącz lub wyłącz edytowanie w widoku tabelarycznym. Wartość domyślna to true. Gdy wartością jest false, wszystkie komórki w widoku tabelarycznym są dostępne tylko do odczytu. Wartości: true | false Przykład: |
Ograniczenia podczas korzystania z powtórzeń tabelarycznych
W przypadku powtórzeń tabelarycznych obowiązują następujące ograniczenia:
- Wygląd tabular (tabelaryczny) nie jest obsługiwane w powtórzeniach zagnieżdżonych.
- Opcja Kopiuj do nowego rekordu nie powoduje kopiowania załączników ani zagnieżdżonych powtórzeń do nowego rekordu. Jest to spójne z zachowaniem podczas kopiowania rekordów ankiety do nowego rekordu z poziomu folderu Wysłane lub Skrzynka odbiorcza.
- Gdy widok tabelaryczny jest posortowany, zaleca się, aby nie edytować wartości w kolumnie, do której zastosowano sortowanie, ponieważ sortowanie aktualizuje się natychmiast po każdym naciśnięciu klawisza.
- Gdy powtórzenie tabelaryczne jest wewnątrz grupy mającej wyrażenie relevant (odpowiednie), jego widok tabelaryczny będzie pusty, jeśli grupa stanie się odpowiednia.
- W przypadku języków pisanych od prawej do lewej strony kolejność kolumn w widoku tabelarycznego nie jest odwracana, a nagłówki kolumn nie zawsze są wyrównane do prawej strony.
Określanie liczby rekordów powtórzenia
Notatka:
W tej sekcji opisano funkcje, które są dostępne tylko w aplikacji Survey123 Connect i aplikacji terenowej Survey123. Funkcje te nie są dostępne w aplikacji Survey123 Studio ani Survey123 Mobile.
Aby określić liczbę rekordów powtórzenia w obrębie powtórzenia, należy skonfigurować liczbę powtórzeń, wykonując następujące czynności:
- W wierszu, w którym ma się rozpocząć powtórzenie, wpisz tekst begin repeat (rozpocznij powtórzenie) w kolumnie type (typ) na karcie survey (ankieta).
- Podaj wartość liczbową oznaczającą liczbę powtórzeń w kolumnie repeat_count (liczba powtórzeń).
Opcjonalnie można podać nazwę pytania lub obliczenie zwracające wartość liczbową.
- Podaj nazwę powtórzenia w kolumnie name (nazwa).
- W wierszach poniżej wprowadzaj pytania, które mają znaleźć się w powtórzeniu.
- W ostatnim wierszu wpisz wartość end repeat (zakończ powtórzenie) w kolumnie type (type).
Gdy użytkownik otwiera ankietę, powtórzenia są już utworzone w liczbie skonfigurowanej w kolumnie repeat_count (liczba powtórzeń). Użytkownicy nie mogą tworzyć ani usuwać powtórzeń.
Użytkownicy muszą przejść przez wszystkie rekordy powtórzenia określone przez wartość repeat_count (liczba powtórzeń) przed przesłaniem odpowiedzi na ankietę. W przeciwnym razie nie wszystkie rekordy powtórzenia zostaną przesłane, ponieważ wyrażeń i wartości domyślnych nie można stosować do powtórzeń, dopóki użytkownicy nie przejdą do rekordu. Aby mieć pewność, że wszystkie powtórzenia zostaną przesłane, można w powtórzeniach utworzyć pytania wymagane. Pytania w powtórzeniach stosujące odpowiednie lub wymagane warunkowo wyrażenie nie są oceniane przy przesyłaniu.
Notatka:
Zachowanie powtórzenia ze zmieniającą się liczbą powtórzeń może różnić się w zależności od tego, czy tworzona jest odpowiedź na ankietę, czy edytowana jest przesłana wcześniej odpowiedź, w następujący sposób:
- Podczas tworzenia odpowiedzi na ankietę w aplikacji terenowej wyświetlany jest przycisk w górnej części powtórzenia umożliwiający usunięcie wszystkich rekordów z danymi powyżej nowej liczby powtórzeń. Puste rekordy są usuwane automatycznie. Niezależnie od tego, czy ten przycisk jest naciśnięty, przesłanie odpowiedzi na ankietę powoduje wysłanie wszystkich rekordów z wyjątkiem pustych.
- Podczas edycji istniejącej odpowiedzi na ankietę w aplikacji terenowej wyświetlany jest komunikat w górnej części powtórzenia wskazujący, że liczba rekordów jest niezgodna z liczbą powtórzeń. Nowe rekordy powtórzenia można dodawać tylko wtedy, gdy właściwość allowAdds jest skonfigurowana na wartość true w kolumnie bind::esri:parameters. Rekordów przekraczających liczbę powtórzeń nie można usuwać, ponieważ aplikacja terenowa nie obsługuje usuwania istniejących rekordów powtórzeń. Zmodyfikowane odpowiedzi na ankietę można przesyłać nawet wtedy, gdy liczba rekordów powtórzeń jest niezgodna z liczbą powtórzeń.
Funkcje agregujące
Notatka:
W tej sekcji opisano funkcje, które są dostępne tylko w aplikacji Survey123 Connect i aplikacji terenowej Survey123. Funkcje te nie są dostępne w aplikacji Survey123 Studio ani Survey123 Mobile.
Funkcji agregujących można używać do zwracania wartości pochodzących z odpowiedzi z powtórzeń. W tym celu do pytania w powtórzeniu odwołuje się pytanie spoza powtórzenia. Na przykład następująca formuła liczy odpowiedzi na pojedyncze pytanie w powtórzeniach:
count(${repeated_question})
W celu agregowania odpowiedzi można używać następujących funkcji:
- count
- sum
- min
- max
- join
Te funkcje dotyczą jedynie bieżącej odpowiedzi ankiety. Nie uwzględniają one innych rekordów w warstwie obiektowej. Możliwe jest też umieszczenie pytań używających funkcji sum i count w powtórzeniu. O ile jednak wartości sum i count są obliczane dla każdego nowego rekordu dodanego do powtórzenia, obliczenia przeprowadzone w poprzednich wpisach nie są automatycznie aktualizowane. Obliczenia te można odświeżyć ręcznie, używając przycisku Odśwież znajdującego się obok pytania. Użycie funkcji min i max obsługiwane jest tylko poza powtórzeniem.
Notatka:
W aplikacji terenowej Survey123 funkcje sum, count i join można umieścić w powtórzeniu lub poza nim. Jeśli funkcje sum, count i join mają być używane w aplikacji internetowej Survey123, muszą zostać umieszczone poza powtórzeniem. Wartości funkcji sum, count lub join spoza powtórzenia mogą być przywoływane w obliczeniu wewnątrz powtórzenia.
Funkcja join umożliwia łączenie ze sobą pytań zwracających ciąg znakowy. Funkcja sum umożliwia połączenie pytania typu geopoint (punkt geograficzny) w powtórzeniu jako pytania typu geotrace (ślad geograficzny) lub geoshape (kształt geograficzny) poza powtórzeniem.
Więcej informacji na temat używania tych funkcji można znaleźć w sekcji Formuły.
Zwracanie indeksu rekordu powtórzenia
Za pomocą funkcji position(..) można zwrócić liczbę całkowitą odpowiadającą indeksowi rekordu powtórzenia w powtórzeniu. Na przykład dla pierwszego rekordu w powtórzeniu zostanie zwrócona wartość 1, dla drugiego wartość 2 itd. W następującym przykładzie funkcja position(..) jest używana w ukrytym pytaniu typu integer (liczba całkowita) w powtórzeniu:

Uwaga:
Funkcja position(..) zawsze zwraca wartość 0 w aplikacji terenowej Survey123 Mobile oraz Survey123 lub wartość 1 w aplikacji internetowej Survey123, gdy jest używana poza powtórzeniem lub w grupie znajdującej się w powtórzeniu.
Funkcji position(..) można też użyć w wyrażeniu. W przykładzie poniżej funkcja selected-at() korzysta z funkcji position(..) do zwrócenia wyboru dokonanego w pytaniu typu select_multiple (wybierz wiele) w tej samej pozycji co bieżący rekord powtórzenia i wyświetlenia wyboru w powtórzeniu jako uwagi. Funkcja selected-at() rozpoczyna liczenie wyborów od zera, dlatego od wartości position(..) jest odejmowane jeden, aby dopasować indeksy. Przebiega to w następujący sposób:
selected-at(${issues}, position(..)-1)

Funkcji position(..) można użyć w połączeniu z funkcją indexed-repeat() w celu wyodrębnienia wartości pytania z określonych rekordów powtórzeń.
Używanie wartości z indeksowanych powtórzeń
Notatka:
W tej sekcji opisano funkcje, które są dostępne tylko w aplikacji Survey123 Connect i aplikacji terenowej Survey123. Funkcje te nie są dostępne w aplikacji Survey123 Studio ani Survey123 Mobile.
Funkcji indexed-repeat() można użyć do zwrócenia wartości z konkretnego pytania w rekordzie powtórzeń. Wymagane są: nazwa pytania, nazwa powtórzenia oraz numer indeksu powtórzenia, w tej kolejności. W poniższym przykładzie zostanie zwrócona odpowiedź na pytanie room_no dla trzeciego rekordu w powtórzeniu floor:
indexed-repeat(${room_no}, ${floor}, 3)
Funkcji indexed-repeat() można użyć dla powtórzeń w obrębie powtórzeń. Jeśli jest ona używana w ten sposób, otrzymuje tylko wartości dostępne z poziomu aktualnie widocznego powtórzenia nadrzędnego.
Uwaga:
Nie można użyć funkcji indexed-repeat() w powtórzeniu, do którego się ona odwołuje, ponieważ powoduje to odwołanie cykliczne. Na przykład następującego wyrażenia nie można użyć do obliczeń w powtórzeniu o nazwie defects:
indexed-repeat(${defect_type}, ${defects}, 3)
Znane ograniczenia
Poniżej wymieniono pewne znane ograniczenia i nieoczekiwane zachowania związane z użyciem powtórzeń w aplikacji Survey123:
- Jeśli ankieta zawiera wiele powtórzeń, a jedno z nich zawiera pytanie typu geopoint (punkt geograficzny), geotrace (ślad geograficzny) lub geoshape (kształt geograficzny), nazwy relacji mogą być publikowane w niewłaściwej kolejności.
- Zagnieżdżone powtórzenia obsługują tylko relacje jeden do wielu, a każdy element podrzędny może mieć tylko jeden element nadrzędny.
- Zagnieżdżone powtórzenia z wyrażeniem zarówno w kolumnie relevant (odpowiednie), jak i wyrażeniem w kolumnie repeat_count (liczba powtórzeń) powodują wyczyszczenie wszystkich istniejących zapisanych danych w pierwszym rekordzie powtórzenia. Aby tego uniknąć, należy uwzględnić wyrażenie relevant (odpowiednie) w wyrażeniu repeat_count (liczba powtórzeń), aby nie były tworzone żadne rekordy powtórzeń, gdy powtórzenie nie jest istotne.
- Edycja poszczególnych odpowiedzi w aplikacji internetowej Survey123 lub witrynie Survey123 nie jest obsługiwana w przypadku ankiet zawierających zagnieżdżone powtórzenia.