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
2. Formuła Calculate
3. Formuła Display
bez zmian.
Przykład:
Powyższe rozwiązanie zadziała w każdym warunkach i dopiero takie rozwiązanie można uznać za dobre i uniwersalne.
I jeszcze jedno:
Po przeniesieniu formuły Display do stopki raportu należy zaznaczyć opcję Can Grow, aby przy większej ilości zamówień nie obcięło nam pola.
Okazało się, że to rozwiązanie nie działa w przypadku gdy numery zamówień się powtarzają.
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
2. Formuła Calculate
3. Formuła Display
bez zmian.
Przykład:
Powyższe rozwiązanie zadziała w każdym warunkach i dopiero takie rozwiązanie można uznać za dobre i uniwersalne.
I jeszcze jedno:
Po przeniesieniu formuły Display do stopki raportu należy zaznaczyć opcję Can Grow, aby przy większej ilości zamówień nie obcięło nam pola.
Komentarze