Przejdź do głównej zawartości

Posty

Wyświetlanie postów z październik, 2011

Funkcje warunkowe

W większości raportów w formułach stosujemy funkcje warunkowe. Okazuje się, że Crystal Reports posiada wiele różnych konstrukcji warunkowych, które warto znać i dobierać do konkretnego przypadku. Funkcja if-else-then To podstawowa i najczęściej stosowana funkcja warunkowa w Crystal Reports. Przykład: Pamiętajcie, że typ formuły jest określany na podstawie pierwszej zwracanej wartości. W związku z tym nie możemy mieszać typów w jednej formule. Przykład niepoprawny: if {Orders Detail.Quantity} <> 0 then {Orders Detail.Quantity} else "nothing"  Taka formuła wyświetli błąd, gdyż Crystal spodziewa się wartości numerycznej na podstawie pierwszej pierwszej wartości. Zatem musimy dokonać jawnej konwersji typu. Przykład poprawny: If {Orders Detail.Quantity} <> 0 Then ToText({Orders Detail.Quantity}) Else "nothing"  Funkcje if-then-else można zagnieżdżać, ale lepiej zachować umiar. Przykład: Funkcja IIF Bardzo podobną k

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