Przejdź do głównej zawartości

Commands - dobre rady


Po dłuższej przerwie w blogowaniu postanowiłem napisać kilka dobrych rad przy stosowaniu Command:

1. Nie należy łączyć ze sobą kilku Command lub Command z tabelą/widokiem bezpośrednio crystalu.
Zamiast tego należy przepisać zapytanie ze złączenia do jednego command. Dzięki temu zapytaniem zajmie się motor bazy danych i prześle tylko wynikowe dane. W przeciwnym razie to Crystal Reports pobiera dane z poszczególnych źródeł i ostro walczy na komputerze klienta co objawia się bardzo wolnym generowaniem raportu.

2. Nie filtrować command za pomocą standardowej opcji Selection Formula.
Zamiast tego należy dodać where do zapytania SQL w Command. Dzięki temu filtrowanie będzie po stronie bazy danych z użyciem indeksów (jeśli istnieją). W przeciwnym Crystal Reports pobiera wszystkie dane z Command i filtruje lokalnie, co najczęściej prowadzi do bardzo wolnego generowania raportu i zapychania łączą.

3. Nie używać standardowych parametrów do filtrowania Command.
W Command jest osobna opcja do tworzenia parametru. Wartość tego parametru będzie doklejona do zapytania SQL i przetworzona po stronie bazy danych. To również przyspieszy przetwarzanie raportu.
Niestety parametry typu command są uboższe od standardowych, ale w większości przypadków wystarczają.

4. Zastąpić Command procedurą składowaną (o ile mamy takie uprawnienia i umiejętności)
Źródłem raportu może być procedura składowana (stored procedure). Jeśli procedura posiada jakieś parametry to Crystal Reports utworzy na ich podstawie standardowe parametry w raporcie. 

Procedura składowana będzie wydajniejsza niż Command, gdyż plan wykonania oraz jej kompilacja będzie odkładana w cache'u bazy danych. Kolejne wywołania będą szybsze niż poprzednie, czego nie można uzyskać przy command, bo są to dla bazy danych, kolejne nowe zapytania SQL i musi je za każdym na nowo przetwarzać.

Komentarze

Popularne posty z tego bloga

Konwersja daty w CDN Optima

Crystal Reports jest bardzo często zintegrowany z popularnymi aplikacjami. Przykładem jest system CDN Optima . Początkujących użytkownikom sprawiają kolumny z datą, bo data nie jest zapisana jako datetime lecz jako liczba. Otóż data w CDN Optima zapisana jest w formacie Clarion, czyli liczba dni, które upłynęły od daty 1800-12-28 . (Czy ktoś wie co to za data w historii?) Dlatego jeśli chcemy użyć takiego pola na raporcie, pierwsze co powinniśmy zrobić to dokonać konwersji liczby na datę. W innym przypadku Crystal Reports nie będzie wiedział, że jest to data i żadne formatowanie dat, grupowanie po okresach nie będzie działać. Formuła do konwersji formatu Clarion na datę : Jeśli mamy wiele takich pól to najlepiej utworzyć własną funkcję:

Jak używać SQL Expression?

SQL Expression to taka formuła, której treścią jest zapytanie SQL do bazy danych. Niestety, bezpośrednie wklejenie zapytania SQL kończy się najczęściej błędem "Error in compiling SQL Expression : Failed to retrieve data from the database" . Większość użytkowników w tym momencie kończy przygodę z SQL Expression, gdyż podręcznik użytkownika niewiele mówi na ich temat i nie przytacza żadnego przykładu. Rozwiązanie jest na wyciągnięcie ręki... Treść zapytania SQL musi być otoczone nawiasem! - to taki pomysł twórców Crystala. Zapytania musi zwracać wartość skalarną! - czyli musi zwracać pojedynczą wartość, a nie zestaw rekordów. Najczęściej jakąś funkcję agregującą np. sumę Oto przykład: Gotowe! Taką formułę można umieścić na raporcie lub wykorzystać do dalszego przetwarzania. To również bardzo dobry sposób na optymalizację raportu, zwłaszcza w przypadku gdy posiadamy w raporcie podraporty, które służą tylko pobieraniu pojedynczej wartości. Niestety trzeba znać chociaż

Funkcje Crystal Reports

Crystal Reports posiada bardzo dużo funkcji (ok. 200) do operacji na tekstach, liczbach, datach itd. Można się z nimi zapoznać przeglądając drzewo Funkcje (Functions) w Edytorze Formuł (Formula Editor) i czytając helpa. Warto je znać, aby nie wyważać otwartych drzwi.  Problem w tym, że trzeba wiedzieć czego się szuka.   Dla wielu osób dodatkową barierą może być język angielski, bo nawet w polskiej wersji Crystala, help, o przepraszam.... pomoc jest w języku Szekspira. Dlatego stworzyłem niegdyś listę funkcji Crystal Reports w języku polskim, którą otrzymywali uczestnicy moich szkoleń w formacie PDF.  Teraz postanowiłem  opublikować ją w sieci, aby była zawsze była pod ręką i dostępna dla szerszego grona.  Lista funkcja dostępna jest tutaj . Lista funkcji nie jest jeszcze w pełni kompletna, więc będę ją na bieżąco aktualizować. Czekam na wasze komentarze i uwagi, zwłaszcza propozycje lepszych tłumaczeń. Miłego korzystania!