Przejdź do głównej zawartości

Znikające obrazki

Ostatnio spotkała mnie niemiła niespodzianka w Crystal Reports.

Postanowiłem wykorzystać to narzędzie do drukowania certyfikatów dla uczestników moich szkoleń.
Umieściłem na raporcie obrazek przygotowany przez grafika i dodałem kilka pól dynamicznie pobieranych z bazy danych (imię, nazwisko, nazwa szkolenia itp). Certyfikat był gotowy!

Jakież było moje zaskoczenie gdy po ponownym otwarciu tego raportu, obrazek zniknął! Nie było go widać ani na podglądzie ani na projekcie. Nieco podłamany przeszukałem sieć, czy ktoś również spotkał się z takim problemem.

Okazało się, że nie jestem sam na świecie, gdyż w Crystal Reports jest od dawna bug, który objawia się tym, że  obrazki o dużych rozmiarach znikają. Korzystam z CR 2008 SP4 i jak widać nie został on poprawiony.

Nie poddałem się jednak i znalazłem rozwiązanie:

1. Obrazek umieściłem na publicznym serwerze http
2. Wstawiłem zastępczą, małą grafikę na raporcie (Insert | Picture) 
3. Wybrałem Format Graphic oraz zakładkę Picture
3. W opcji Graphic Location podałem URL obrazka (np. http://domena/plik.png)

Od tego momentu grafika nie jest osadzona w pliku, lecz pobierana za każdym razem z sieci.
Oczywiście należy pamiętać, że przy takim rozwiązaniu musimy mieć dostęp do internetu, ale obecnie to coraz mniejszy problem. Dodatkowym plusem jest to, że plik rpt jest bardzo małych rozmiarów, gdyż grafika jest dociągana z sieci.





Komentarze

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

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ż

Wyświetlanie QRCode

Ostatnio coraz większą popularnością cieszą się tzw. foto-kody, czyli dwuwymiarowe kody kreskowe. Umożliwiają one przechowywanie zakodowanych informacji, które możemy odczytać za pomocą czytnika kodów kreskowych lub telefonem komórkowym dzięki specjalnej aplikacji. W fotokodzie może być zakodowany nie tylko tekst lecz adres URL, wizytówka vcard lub wiadomość sms. Jednym z najbardziej popularnych standardów jest QR Code . Crystal Reports nie posiada niestety wbudowanej obsługi kodów dwuwymiarowych.  Przedstawię wam prosty sposób na rozwiązanie tego problemu, bez potrzeby kupowania dodatkowych bibliotek. Otóż Crystal Reports umożliwia wstawienie obrazka graficznego spod wskazanego adresu url. Natomiast Google udostępnia usługę do generowania kodów kreskowych o nazwie Google Chart API . Musimy tylko przygotować odpowiedni url i w rezultacie otrzymamy obrazek graficzny w formacie PNG. Przykładowo, aby zakodować tekst Crystal Reports wystarczy wpisać do przeglądarki www taki adre