Przejdź do głównej zawartości

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 "sa" - to takie rozwiązanie nie zadziała.

Podsumowując, brakuje w Crystal Reports funkcji, która pobierze aktualnie zalogowanego użytkownika do domeny. Zachęcam was do zagłosowania na mój pomysł na stronie https://ideas.sap.com/D31669 i może doczekamy się takiej funkcji w kolejnej wersji Crystal Reports...

Jest jeszcze inny sposób - można użyć dodatkowej biblioteki do wywołań Win32API ale to temat na osobny post...


Komentarze

Popularne posty z tego bloga

Lista funkcji Crystal Reports po polsku

Opracowałem kiedyś skróconą listę funkcji Crystal Reports po polsku, aby mieć podręczną ściągawkę podczas tworzenia formuł. Pewnie i Wam się przyda dlatego ją teraz publikuję. To oczywiście tylko kilkadziesiąt funkcji spośród kilkuset, które znajdują się w Crystal Reports. Dlatego zamierzam stworzyć kompletną listę funkcji CR 2008.

Postaram się również dodać kolumnę z wersją Crystal Reports od której jest dostępna funkcja, bo wciąż są użytkownicy starszych wersji.

Czekam na sugestie, komentarze i ewentualnie propozycje lepszych tłumaczeń.

Na początek pytanie - jaki format preferujecie? PDF, HTML a może HTML Help z możliwą wyszukiwania?

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ęz…

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