W poprzednim poście opublikowałem rozwiązanie problemu połączenia wartości z kilku wierszy w jedno pole tekstowe.
Okazało się, że to rozwiązanie nie działa w przypadku gdy numery zamówień się powtarzają.
Czyli cytując mojego matematyka z podstawówki można powiedzieć: "Prawie dobrze, ale jeszcze niedostatecznie".
W takim razie pochyliłem się raz jeszcze nad tym problemem... i pomyślałem, że najlepiej będzie sprawdzać czy bieżący numer zamówienia jest już w tablicy. Ale w Crystal Reports nie ma takiej funkcji. Ale zaraz zaraz... tablica elementów to zbiór. Skoro jest to zbiór to mogę zastosować operator in oraz jego negację not in. Bingo!
Czyli za pomocą operatora in sprawdzamy czy element istnieje już w tablicy. Jeśli nie to wstawiamy a w przeciwnym wypadku go pomijamy, a funkcję RecordNumber zastępujemy własnym licznikiem.
Rozwiązanie:
1. Formuła Iinit
// Deklaracja tablicy tekstowej shared StringVar array items; // Deklaracja licznika shared numbervar counter:=1; // Ustaw…
Okazało się, że to rozwiązanie nie działa w przypadku gdy numery zamówień się powtarzają.
Czyli cytując mojego matematyka z podstawówki można powiedzieć: "Prawie dobrze, ale jeszcze niedostatecznie".
W takim razie pochyliłem się raz jeszcze nad tym problemem... i pomyślałem, że najlepiej będzie sprawdzać czy bieżący numer zamówienia jest już w tablicy. Ale w Crystal Reports nie ma takiej funkcji. Ale zaraz zaraz... tablica elementów to zbiór. Skoro jest to zbiór to mogę zastosować operator in oraz jego negację not in. Bingo!
Czyli za pomocą operatora in sprawdzamy czy element istnieje już w tablicy. Jeśli nie to wstawiamy a w przeciwnym wypadku go pomijamy, a funkcję RecordNumber zastępujemy własnym licznikiem.
Rozwiązanie:
1. Formuła Iinit
// Deklaracja tablicy tekstowej shared StringVar array items; // Deklaracja licznika shared numbervar counter:=1; // Ustaw…