Przejdź do głównej zawartości

Koszmar z limitem

Witajcie po dłuższej przerwie.

Jakiś czas temu prowadziłem szkolenie w firmie i z jakiegoś powodu nie chciały nam się wyświetlać się wszystkie tabele z ich bazy danych.

Na początku myślałem, że to kwestia uprawnień ale okazało się, że użytkownicy mają prawa do odczytu wszystkich tabel a problem wynika z czegoś innego...

Okazało się, że winowajcą jest sam Crystal Reports, który ma ustawiony limit(!) na ilość obiektów pobieranych elementów ze struktury bazy danych, czyli tabel, widoków i procedur składowanych razem wziętych. Domyślnie jest to 8000.

Większość baz danych nie przekracza tego limitu, więc możecie spać spokojnie, ale przy większym systemie może nadejść koszmar, który zerwie Was na równe nogi.

Pamiętajcie wówczas o moim blogu -  ten limit można zmienić (w praktyce podwyższyć).

Niestety nie ma do tego opcji w Crystal Reports, trzeba pogrzebać w rejestrach windows:


  1. Zamykamy Crystal Reports
  2. Uruchamiamy aplikację Edytor rejestru, z linii poleceń: regedit 
  3. Odnajdziemy klucz w rejestrze: HKEY_CURRENT_USER\Software\SAP BusinessObjects\Suite XI 4.0\Crystal Reports\FetchOptions 
  4. W kluczu NTablesMax ustawiamy własny limit, np. 20000
  5. Uruchamiamy ponownie Crystal Reports i cieszymy się widokiem wszystkich tabel :)
Od tej pory możecie spać spokojnie :)


Przyznaję, że sam na to nie wpadłem, lecz znalazłem dokument w bazie wiedzy:
1215994 - Unable to see all database Tables, Views or Stored Procedures in Crystal Reports


Przy okazji kompletna lista rejestrów Crystal Reports jest opisana w dokumencie:
2165260 - List of Registry Keys used in Crystal Reports *** Master KBA


Na koniec ważna wskazówka - gdy będziecie zmieniać wartość limitu, upewnijcie się, że Crystal Reports jest zamknięty. W przeciwnym razie podczas wychodzenia z aplikacji, Crystal nadpisze Wam ten limit z powrotem na 8000.

Mam nadzieję, że ten artykuł pomoże choć jednej zrozpaczonej osobie, która szuka swojej ulubionej tabeli :)

Komentarze

Ermlab pisze…
Witamy ponownie i czekamy na rozwiązywanie kolejnych programistycznych problemów. Mam nadzieje, że nowe posty będą spływały. Pozdrawiam serdecznie.
Marcin pisze…
Ermlab: dziękuję serdecznie za komentarz i motywację :)
Mam w planach opracowanie artykułu na temat konteneryzacji Crystal Reports w środowisku docker.

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ę:

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!

Zamiana daty i czasu na data-czas

Kolejne szkolenie u klienta i kolejne wyzwanie za mną... Chodziło o wygenerowanie raportu czasu pracy z uwzględnieniem, że zmiana następuje o godz. 6:00 a nie o północy. To znaczy, że godziny do 6:00 powinny być jeszcze zaliczane do dnia poprzedniego. Dodatkowym utrudnieniem u klienta był fakt, że data w bazie danych była rozbita na 2 pola: data w formacie: yyyy-mm-dd 00:00:00 godzina w formacie: 1900-01-01 HH:mm W takim razie do dzieła! Załóżmy, że mamy następującą tabelę: 1. Tworzymy formułę która zamieni 2 osobne pola z datą i czasem w jedno pole typu datetime: W ten sposób otrzymamy jedną wartość w formacie yyyy-mm-dd HH:mm 2. Następnie od tak utworzonej daty odejmujemy 6 godzin: Otrzymamy w rezultacie coś takiego: Kolumna WorkDate wyświetla datę do której została zakwalifikowana pozycja. Na podstawie tak utworzonej formuły można utworzyć grupowanie na raporcie.