Przejdź do głównej zawartości

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żby podstawy języka SQL.

Zatem jeśli znasz język SQL to możesz od tej pory stosować SQL Expression.
Ale zalecam je stosować tylko w niektórych przypadkach, tam gdzie jest to niezbędne lub umożliwia przyspieszenie raportu.

Powodzenia!

Komentarze

Anonimowy pisze…
Jak to się dzieje, że mam SQL Expression w niektórych raportach, a w niektórych nie ma takiej opcji? Jak można to włączyć? Podejrzewam tu różnicę w wersji CR for VS, w których raporty były tworzone. Proszę podpowiedź.
Unknown pisze…
Ta alternatywa jest bardzo ciekawa
Marcin pisze…
Ciekawe zastosowanie SQL Expression do pobrania loginu użytkownika: http://sulmar.blogspot.com/2014/02/zalogowany-uzytkownik.html

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

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.

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: Zamykamy Crystal Reports Uruchamiamy aplikację Edytor rejestru , z linii poleceń: ...