Przejdź do głównej zawartości

Posty

Licencjowanie komponentów Crystal Reports

Dzisiejszy wpis przeznaczony jest dla programistów, którzy budują rozwiązania z użyciem komponentów programistycznych Crystal Reports.

Jednak tym razem nie będę pisać o aspektach technicznych lecz chciałem zwrócić waszą uwagę na kwestie licencjonowania komponentów programistycznych Crystal Reports bo to nie jest łatwa sprawa.

Jeśli posiadamy płatną licencję na Visual Studio lub używamy darmowej wersji Community to ze strony SAP'a możemy pobrać za darmo Crystal Reports for Visual Studio. Przypominam, że darmowa wersja Visual Studio Express nie wspiera Crystal Reports. Swoją drogą jeśli ktoś z Was używa jeszcze wersji Express to niech czym prędzej ją odinstaluje(!) i zainstaluje w to miejsce wersję Community. To w pełni funkcjonalne Visual Studio niemal jak wersja Professional a do tego darmowa! Jeszcze do niedawna Microsoft kazał sobie płacić za to około 2000 PLN.

Ale wróćmy do licencjonowania Crystal Reports. Niespodzianki mogą pojawić się z chwilą wdrożenia naszego rozwiązania u …

Crystal Reports na wielu monitorach

Często pracuję z Crystal Reports na dodatkowym monitorze lub na szkoleniach z podłączonym projektorem. Wszystko ładnie pięknie działa, aż do czasu gdy wrócimy do podstawowej konfiguracji z jednym monitorem.

Crystal Reports wraca na swoje miejsce, ale niektóre opcje zachowują się tak jakby Crystal Reports się zawiesił(!).

Okazuje się, że Crystal Reports wcale się nie zawiesił, lecz okna dialogowe pamiętają stare położenie na odłączonym monitorze. Wyświetlają się ale w sposób niewidoczny na użytkownika na drugim monitorze którego nie ma i czekają na naciśnięcie OK :)

Zazwyczaj są to okna modalne, które blokują interfejs użytkownika aż do zatwierdzenia i wygląda tak jakby Crystal Reports się zawieszał.

Na szczęście z pomocą przychodzi "tajna kombinacja klawiszy", systemu Windows która umożliwia przesunięcie okna pomiędzy ekranami:

⊞ Win+←/→

Teraz wszystko wraca do normy :)

Mam nadzieję, że w przyszłej wersji Crystala zostanie to naprawione. Ale moim marzeniem jest aby zakładki d…

Crystal Reports 2016 nadchodzi...

Dzięki uprzejmości Marka Wawrzynczykai pamięci o mnie (uczestnik mojego szkolenia) dotarła do mnie informacja, że będzie nowy CrystalReports2016!
Od razu jak lew rzuciłem się na dokument opisujący nadchodzące zmiany. Choć szczerze mówiąc, nie spodziewałem się zbyt wiele. Myślałem, że będzie to znów kosmetyczna zmiana, nowy numer, nowe logo tak jak było z wersjami Crystal Reports 2011 i 2013. Sam wciąż używam Crystal Reports 2008 i nie widziałem sensu przesiadania się na nowsze wersje :) Nieźle się ubawiłem gdy przeczytałem, że jeden z Crystalowych guru niejaki Ken Hamady również używa CR 2008 http://kenhamady.com/cru/archives/2703 :) 
Ale przejdźmy do konkretów. Cóż takiego możemy się spodziewać w nowej wersji?
- wyrównywanie w pionie  NARESZCIE!!! Jedna z najbardziej brakujących opcji.
Gdy miłośnikom Excela mówiłem na swoich szkoleniach, że Crystal Reports nie posiada wyrównania w pionie to nie dowierzali. Teraz będę miał mocny argument :)
- formatowanie warunkowe na Line i Box  Czasami…

Zalogowany użytkownik

Prowadząc konsultacje u moich klientów spotkałem się z takim pytaniem w jaki sposób wyświetlić nazwę aktualnie zalogowanego użytkownika na raporcie. To pomaga w ustaleniu kto drukował dany raport.

Niestety Crystal Reports nie posiada gotowej funkcji.

Co prawda są pola specjalne Current CE User ID, Current CE User Name, ale one działają tylko w przypadku gdy posiadamy produkt Crystal Reports Server.

Ale na szkoleniu dla zaawansowanych wpadłem wspólnie z uczestnikami na bardzo proste rozwiązanie.

Należy utworzyć wyrażenie SQL (SQL Expression) a w jej treści wpisać CURRENT_USER i takie pole na raporcie. Tylko tyle! Raport wywoła funkcję SQL Server i pobierze aktualnie zalogowanego użytkownika do bazy danych. Uwaga - nie do domeny! No chyba, że mamy włączoną autentyfikację Windows.

Oczywiście to idealnie zadziała tylko w przypadku gdy każdy posiada inny login do bazy danych lub używamy wspomnianej autentykacji windowsowej.

Jeśli wszyscy pracujemy na jednym koncie - mam nadzieję, że  nie …

Konwersja tekstu na datę

Witajcie po dłuższej przerwie. Niektórzy pytają czy nadal zajmuje się Crystal Reports. Odpowiadam, że TAK! Tylko, że oprócz tworzenia raportów zajmuję się również rozwojem aplikacji w .NET i z braku czasu trochę zaniedbałem swojego bloga. Ale postaram się to nadrobić, zwłaszcza że nadchodzi nowy Crystal Reports 2016 o którym napiszę w kolejnym poście.

Ale do rzeczy...

Czasami zdarza się, że data zapisana jest w naszej bazie danych w postaci tekstu. Osobiście unikam takich rozwiązań, ale pomysłowość programistów nie zna granic ;-)

Generalnie do konwersji ciągu znaków na datę służy funkcja Date. Wystarczy jako argument przekazać pole date({Invoices.OrderDate}) i gotowe!

Ale to działa tylko w przypadku gdy data zapisana jest zgodnie ze standardem czyli na przykład z myślnikami: 2016-02-11

Ale w bazach danych, jeśli już ktoś zdecyduje się na przechowywanie daty jako tekst, to najczęściej stosowany jest zapis w formacie YYYYMMDD, który zajmuje mniej miejsca np. 20160211.

W takim przypadku …

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