Przejdź do głównej zawartości

Posty

Wyświetlanie postów z 2014

Konwersja w SQL Expression

Ostatnio musiałem skorzystać z wyrażeń SQL Expression, które opisałem tutaj, ale dodatkowo dokonać jeszcze konwersji typu.

W edytorze wyrażeń SQL Expression odnalazłem funkcję Convert, która niestety nie jest opisana w dokumentacji. Na szczęście poprzez analogię do funkcji dostępnej w TSQL, doszedłem jak z niej korzystać:
{fn Convert("Persons"."Age", SQL_CHAR)}

Ale pozostał jeszcze problem w jakim formacie podawać typy danych. 
Metodą prób i błędów doszedłem jakie typy są obsługiwane: SQL_VARCHARSQL_CHARSQL_DATESQL_NUMERICSQL_BIT

Crystal Reports for Visual Studio SP 8

Uwaga programiści!
SAP wydał kolejnego, już ósmego(!) Service Packa do Visual Studio 2010/2012. Warto zatem zaktualizować swoje developerskie maszynki, bo usuwają kilka bugów. Jeśli do instalacji swojej aplikacji używacie technologii clickonce to koniecznie pobierzcie dodatkowego patch'a link

Ci którzy przesiedli się na Visual Studio 2013 jeszcze muszą chwilę poczekać, bo dopiero kolejny Service Pack będzie wspierał najnowszą wersję Visual Studio, który ma się ukazać w 1 kwartale 2014 roku.







Zalogowany użytkownik

Często na moich szkoleniach spotykam się z pytaniami od uczestników w jaki sposób wyświetlić na raporcie nazwę zalogowanego użytkownika. A jeszcze lepiej, żeby można było po tym filtrować.

Owszem, Crystal Reports posiada standardowe funkcje CurrentCEUserID i CurrentCEUserName, które zwracają identyfikator lub nazwę aktualnego użytkownika ale działają tylko gdy logujemy się do Crystal Reports Server (Crystal Enterprise).

A co jeśli posiadamy zwykłego Crystal Reports i logujemy się do domeny lub do bazy danych? Niestety od dawna brakuje takiej funkcji.

Ale przy odrobinie sprytu możemy odpytać o to bazę danych!

Nadszedł wreszcie czas aby użyć SQL Expression o których pisałem wcześniej.

Wystarczy w nawiasach (koniecznie!) wpisać nazwę funkcji SQL Server:
(SYSTEM_USER)

i umieścić pole na raporcie lub wykorzystać w warunku filtrującym!

W przypadku innych baz danych, np. Oracle musimy użyć odpowiednio innej funkcji.

Powodzenia!



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…