Przejdź do głównej zawartości

Posty

Wyświetlam posty z etykietą Crystal Reports

Dynamiczna zmiana rozmiaru i położenia

Podczas jednego z moich szkoleń, spotkałem się z pytaniem, w jaki sposób przesuwać pola zależnie od wartości. Otóż na każdym obiekcie (pole, grafika, itd.) pod prawym przyciskiem jest opcja Size and Position , która wyświetli okno: Jak widzicie, można tutaj wpisać dokładne położenie oraz rozmiar obiektu z ręki, ale co więcej, przy atrybutach X i Width można wpisać formułę. I tutaj napotykamy problem... Wpisując tam przykładowe wartości rzędu 10, 20 wydaje się, że to w ogóle nie działa. Obiekt ani drgnie... Myślałem swego czasu, że to bug, i że poprawią to w kolejnym Service Packu, aż wreszcie uważnie wczytałem się w dokumentację... Okazuje się, że wszystko jest OK. Po prostu wartość wpisana za pomocą formuły, przesuwa w prawo (X) lub poszerza pole (Width) względem położenia obiektu, a nie raportu . Ale to nie wszystko... Wartości tych nie podajemy w centymetrach ani pikselach, lecz w ... twipsach! Cóż to takiego??? Twip to taka specjalna jednostka miary, używana ...

Szkicowanie raportów w Balsamiq

Zanim zabierzecie się za tworzenie raportu w Crystal Reports, warto naszkicować sobie jego projekt na kartce, zanim jeszcze uruchomicie środowisko. Na szkicu powinny znaleźć się kolumny, grupowania, parametry i podsumowania. To bardzo ułatwia późniejsze tworzenie raportu w Crystalu. Tworzenie raportu na kartce jest bardzo szybkie, ale trudniej go przesłać komuś mailem. Oczywiście można zeskanować nasze bazgroły, ale mogą być one nieczytelne dla odbiorcy. Z pomocą przychodzi program Balsamiq , który służy do szkicowania interfejsów użytkownika aplikacji i aplikacji webowych. Pomyślałem, że może się on przydać również do projektowania raportów. Efekt takiej próby widzicie na obrazku. Program "nie blokuje" przekazywania myśli i po pewnym czasie rysuje prawie jak na papierze. Bardzo ciekawie jest rozwiązane wprowadzanie przykładowych danych. Projekt można wyeksportować do PDF lub PNG. Program co prawda nie jest darmowy, ale kosztuje tylko 75$. Na początek można pobrać 7-dniową we...

Numer tygodnia w roku

Aby pobrać numer tygodnia w roku najlepiej skorzystać z wbudowanej funkcji DatePart z odpowiednim argumentem: DatePart('ww', {tabela.data}) Jednak trzeba pamiętać, że funkcja domyślnie przyjmuje jako początek nowego tygodnia niedzielę(!), a nie poniedziałek. Jak rozwiązać ten problem? Należy dodać jeszcze jeden opcjonalny argument określający początek tygodnia: DatePart('ww', {tabela.data}, crMonday) Teraz funkcja będzie zwracała prawidłowy numer tygodnia w roku.

Crystal Reports na iPhonie

W serwisie Apple iTunes Store znalazła się aplikacja SAP Business One Mobile Application , która umożliwia korzystanie z wybranych funkcji systemu SAP Business One za pomocą telefonu iPhone. Między innymi użytkownicy iPhone'a mogą przeglądać raporty Crystal Reports, co można zobaczyć na filmie . Aplikację można pobrać za darmo. Więcej na ten temat tutaj . Niestety nie posiadam iPhone, aby to przetestować. Wkrótce stanę się użytkownikiem telefonu z systemem Android i liczę, że SAP też wypuści coś takiego dla tego systemu.

Ukrywanie sekcji z pustym podraportem

W jaki sposób ukryć sekcję, w której jest pusty podraport? Poniżej przedstawiam proste rozwiązanie: 1. Zaznacz podraport, wybierz opcję Format Subreport -> Subreport i zaznacz opcję Suppress Blank Subreport Podraport powinien być niewidoczny jeśli jest pusty. Ale to jeszcze nie wszystko, bo pozostaje pusta sekcja. 2. Zaznacz sekcję w której znajduje się podraport, wybierz opcję Section Expert i zaznacz opcję Suppress Blank Section Gotowe! Teraz sekcja będzie ukryta wraz z podraportem. Przyjemności w tworzeniu raportów życzę :)

SQL Expression

Wielu użytkowników Crystal Reports nie stosuje SQL expression, gdyż są bardzo mało udokumentowane. Generalnie umożliwiają one wysłanie zapytania SQL bezpośrednio do bazy danych i wyświetlenie wyniku. Jedyny warunek - zapytanie musi zwracać pojedynczą wartość. Dzięki świetnej prezentacji The Power and Possibilities of SQL Expressions można przekonać się jaka siła tkwi w sql expression i kiedy je stosować.

SAP zmienia nazwę Crystal Reports

Od 17 maja, Crystal Reports będzie nazywał się SAP Crystal Reports . Niewielka zmiana prawda? Ale większa rewolucja zachodzi w przypadku Xcelsiusa. Xcelius Present będzie się teraz nazywał SAP Crystal Presentation Design a wersja Engage - SAP Crystal Dashboard Design, personal edition Wszystkie te produkty będą pod marką SAP Crystal Solutions . Przy okazji można wyczytać, że kolejna wersja CR v.13 pojawi się do 2011 roku. Więcej na ten temat na blogu

Wartości ujemne w pozycjach

Ciekawy trick opublikował Ken Hamady. Jak wiadomo, aby pobrać znak na określonej pozycji w ciągu tekstowym, wystarczy wywołać: {Customer.Customer Name} [3] (innym sposobem jest użyciu funkcji Mid) Ale co ciekawe, jako pozycję można wstawiać wartości ujemne! {Customer.Customer Name} [-1] Powyższe wyrażenie pobiera ostatni znak w ciągu tekstowym. To samo można przenieść na tablicę. Aby pobrać ostatni element w tablicy wystarczy wywołać: NumberVar array MyArray; MyArray [-1] To dużo łatwiejsze, niż używanie funkcji Length, Count or Ubound. Na podstawie artykułu Using negative subscripts

Polska wersja Crystal Reports XI - refleksje

Przez wiele lat użytkownicy Crystal Reports, zwłaszcza ci nowi, dopytywali się o polską wersję tego produktu. Wreszcie pojawiła się już jakiś czas temu polska wersja Crystal Reports XI PL. Jak wypadło tłumaczenie? Czy warto kupować polską wersję Crystal Reports XI? Po zainstalowaniu i uruchomieniu zobaczymy polskie menu! Zakładki [Projekt], [Podgląd]. o jak miło... Naciskamy F1 (Pomoc) i co widzimy? Help po angielsku :( Tutaj następuje pierwsze rozgoryczenie. OK, rozwijamy menu. Dowiadujemy się, że jesteśmy ekspertem od wszystkiego "Ekspert sekcji", "Ekspert grupy", "Ekspert XML", itd. Bezpośrednie tłumaczenie z angielskiego słowa Expert. Lepiej w tym miejscu brzmiałby "kreator". Idźmy dalej... Kto zgadnie do czego służy opcja "Może rosnąć"? To tłumaczenie "Can grow" :) W Excelu ładnie przetłumaczone na "Zawijaj tekst". Kolejny kwiatek: "Wstaw wiersz", zamiast "Wstaw linię" (ang. Insert Line), co...

UFL w .NET

UFL (User Function Libraries) umożliwiają rozszerzenie i tak już bogatej palety funkcji w Crystal Reports. UFL najłatwiej pisać w starym poczciwym Visual Basic 6.0 Ale co zrobić jeśli pracujemy już tylko w Visual Studio .NET ? Niestety, nie ma wprost takiej możliwości :( Zobaczcie z resztą sami: http://www.codeproject.com/KB/dotnet/DecryptForCrystal.aspx Autor tworzy logikę funkcji w VSNET, ale na końcu sięga po VB 6.0, aby zobaczył ją Crystal Reports! Obiecam zmierzyć się osobiście z tym problemem, aby wszystko zrobić w Visual Studio NET Swoją drogą, ciekawy pomysł z enkrypcją danych.

Visual Studio 2010 i Crystal Reports

Zainstalowałem właśnie Visual Studio 2010 Beta 1. W szablonach aplikacji nie znajdziecie jednak Crystal Reports, ani jego komponentów na pasku narzędzi. Ale uspokajam miłośników Crystala - ma się znaleźć w kolejnych odsłonach Visual Studio 2010. Polecam wątek Crystal Reports dropped in Visual Studio 2010??? Ciekawe, jaką wersję Crystal Reports nam podarują...

Porównanie wersji Crystal Reports od 8.0 do 2008

Mimo, że najnowsza wersja Crystala to Crystal Reports 2008, to nadal wiele osób, używa z powodzeniem starszych wersji. Zwykle są to wersje 10 i XI. Czasami udzielając porady takiej osobie, nie pamiętam dokładnie w której wersji pojawiła się dana funkcja i czy użytkownik może jej użyć. Ja sam pracuję w Crystal Reports od wersji 6.5 :) Z pomocą przychodzi wówczas tabelka: Features by edition Comparison Chart

Obliczanie czasu pracy pracowników

Ostatnio miałem zapytanie od użytkownika Crystal Reports, który chciał w czytelny sposób przedstawić czas pracy swoich pracowników. Np. 7 godz. 25 min. Zaproponowałem następujące rozwiązanie: 1. Tworzymy formułę @Czas i obliczamy różnicę pomiędzy czasem wejścia i wyjścia pracownika, w minutach: DateDiff('n', godzina_wejscia, godzina_wyjscia) 2. Następnie tworzymy formułę, która wyświetli odpowiednio sformatowany czas: Cstr(Truncate ({@Czas}/60) ,0) + ' godz. ' + cstr({@Czas} - Truncate ({@Czas}/60) * 60 ,0) + ' min.' Przykładowy raport do pobrania tutaj .