Laboratorium 060 Crystal Reports Ćwiczenie 4 Raport kasowy Raport kasowy oparty jest na następujących tabelach: Gbkmut - Wpisy księgowe Debitr - Dane adresowe dłużników Credit - Dane adresowe wierzycieli Dagbk - dane dzienników 1. Otworzyć aplikację utworzoną w laboratorium 050. 2. Dodać do aplikacji nowy raport Crystal i zmienić jego nazwę na crcashreport.rpt 3. Otworzyć ekran edycji raportu. 4. Wybrać menu Crystal reports/database/database expert.oraz wybrać połączenie z bazą 555 xdefiniowane w laboratorium 050.. 5. Wybrać dbo a następnie z listy tabel wybrać tabelę Gbkmut. 6. Do sekcji Szczegóły raportu dodać poniższe pola: data (datum), nr dowodu (bkstnr), opis (oms25) (ekrany zawarte w tym dokumencie odwołują się do starszej wersji CrystalReports) 7. Zmienić nagłówki nazw pól na: Data, Nr dowodu, Opis (prawy klawisz myszy i Edit Text Object). 8. Wybrać Crystal reports/report/select expert. Z listy pól wybrać pole Gbkmut.dagbknr (nr dziennika), wpisać stałą wartość 110 pole Gbkmut.reknr (nr konta), wyświetlić listę dostępnych wartości i wybrać wartość 10000 (uwaga: spacje są tutaj istotne!) 9. Wybrać Crystal reports/report/record sort expert. Z listy pól wybrać pole Gbkmut.datum (data). 10. Zapisać (Save) aplikację. 11. Na dole ekranu edycji raportu kliknąć na zakładce Main report preview. Sprawdzić prawidłowość wyświetlania danych. 12. Do raportu dodać tabele Debitr (dłużnicy): Crystal reports/database/database expert. Strona 1
13. Crystal reports automatycznie łączy tabele po nazwach pól. Większość takich połączeń jest błędna (np. połączenie po polach ID). Usunąć wszystkie połączenia oprócz połączenia po polu debnr: Gbkmut.debnr = Debitr.debnr UWAGA: Dodanie połączenia polega na zaznaczeniu pola w jednej tabeli i przeciągnięciu go na odpowiednie pole w drugiej tabeli. 14. Zaznaczyć to połączenie, kliknąć prawym klawiszem myszy i z dostępnych parametrów opisujących typ połączenia wybrać zewnętrzne lewe (Left outer join). 15. Powtórzyć punkt 12, 13 i 14 dla tabeli Credit (Wierzyciele) i połączenia Gbkmut.crdnr = Credit.crdnr, ( typ Left outer join) 16. Powtórzyć punkt 12, 13 i 14 dla tabeli Dagbk (Dzienniki) i połączenia Gbkmut.dagbknr = Dagbk.dagbknr, (tym razem typ INNER JOIN) Otrzymamy taki schemat struktury tabel i ich połączeń. 17. Do nagłówka strony (Page header) dodać poniższe pola Pole tekstowe Raport kasowy Pole tekstowe Data Pole obliczeniowe (Formula Field) DataRaportu z funkcją daty Date(yyyy,mm,dd) (wartość tego pola nie jest na razie istotna, można wpisać np. Date(2000,01,01)) Pole obliczeniowe Dziennik wyświetlające tekst Kasa, numer dziennika (Dagbk.dagbknr) i walutę dziennika (Dagbk.valcode). Strona 2
18. Do sekcji Szczegóły (Details) dodać poniższe pola Pole obliczeniowe Nazwa pobierające nazwę dłużnika (Debitr.naam) gdy pole Gbkmut.debnr nie jest puste lub nazwę wierzyciela (Credit.naam) gdy pole Gbkmut.crdnr nie jest puste Pole obliczeniowe Przychód wyświetlające wartość pola Gbkmut.bdr_hfl gdy jest dodatnie i 0 w przeciwnym przypadku. Nie wyświetlać pola Przychód, gdy jego wartość jest równa 0 w tym celu zaznaczyć pole, z menu kontekstowego wybrać Format Object, na zakładce Wspólne zaznaczyć Ukryj, kliknąć na ikonę formuły po prawej stronie pola Ukryj i w oknie edycji formuły wpisać {@Przychod}=0 Pole obliczeniowe Rozchód wyświetlające wartość pola Gbkmut.bdr_hfl gdy jest ujemne i 0 w przeciwnym przypadku. Nie wyświetlać pola Rozchód, gdy jego wartość jest równa 0. (Postępuj analogicznie, jak w przypadku pola Przychód). Pole obliczeniowe Lp. pokazujące numer kolejnego wiersza. Wykorzystać o Zmienną NumberVar RecNo o Pole RecordNumber NumberVar RecNo; RecNo := RecordNumber Dodać ramki oraz poziome linie zgodnie z poniższym ekranem. Ćwiczenie 5 Raport kasowy na dany dzień 19. Wybrać Crystal reports/report/select expert, Edytor formuł i dodać warunek pole Gbkmut.datum <= @DataRaportu 20. Zmienić wartość pola DataRaportu na 18-01-2000. 21. Na końcu sekcji Szczegóły (Details) dodaj (techniczne) pole obliczeniowe Ukryj sprawdzające, czy data operacji jest mniejsza od pola @DataRaportu. Usuń nagłówek tego pola (z sekcji Nagłówek strony). Sprawdź, czy pole Ukryj zwraca prawidłowe wartości. 22. Na końcu sekcji Szczegóły (Details) dodaj (techniczne) pole obliczeniowe SaldoOtwarcia zliczające kwoty (Gbkmut.bdr_hfl) do dnia 18-01-2000 : o Zadeklarować zmienną: NumberVar SaldoOtw; o Zainicjalizować wartość zmiennej SaldoOtw, gdy (if) RecordNumber=1 Strona 3
o Zwiekszać wartość SaldoOtw, gdy @Ukryj = True. Sprawdź, czy wyświetlana kwota jest prawidłowa. 23. Do wszystkich pól w sekcji Szczegóły (od LP do Rozchód ) dodać warunek ukrywający pole, gdy wartość pola @Ukryj=TRUE (Format Object, Wspólne, zaznaczyć pole Ukryj i zdefiniować formułę). Uwaga: w polach Przychód i Rozchód formuła ukrywająca pole będzie składała się z dwóch części (@...=0 lub @Ukryj). 24. Sprawdź, czy wszystkie pola w sekcji Szczegóły dla daty mniejszej od daty raportu są ukryte. Ukryj również (bezwarunkowo) pola obliczeniowe Ukryj i SaldoOtw. 25. Dodaj sumy (running totals): SumaPrzych - Suma przychodów w danym dniu (na ekranie poniżej: w wierszu Razem) Menu kontekstowe na polu @Przychód, Wstaw, Runnig total, Wyznaczanie Użyj formuły i wpisz formułę not {@Ukryj} SumaRozch - Suma rozchodów w danym dniu (postępuj jak wyżej na polu @Rozchód ). 26. Dodaj pola obliczeniowe: Poprzednie saldo (zwracające zawsze wartość pola SaldoOtwarcia) Saldo bieżące (=Poprzednie saldo + Suma przychodów w dniu Suma rozchodów w dniu). W ostatnim wierszu w bloku podsumowań wstaw podsumowania końcowe sum po stronie przychodów (Saldo przychodów w dniu + Poprzednie saldo) i po stronie rozchodów (Suma rozchodów w dniu + saldo bieżące). Obydwie te sumy muszą zwracać tę samą wartość. 27. Usuń z raportu puste wiersze kliknąć prawym klawiszem na pasku tytułu sekcji, wybrać sekcję Szczegóły (Details) włączyć opcję Ukryj pustą sekcję ( Suppress blank lines ). 28. Zmodyfikuj formułę pola Lp tak, aby numerowała ona kolejne wiersze od 1 (a więc numerowała tylko pokazywane wiersze). Strona 4
29. Zmień datę raportu na 17-01-2000. Sprawdź, czy Saldo bieżącze w dniu 17-01-2000 jest równe saldu poprzedniemu w dniu 18-01-2000. Ćwiczenie 6 Prezentacja raportu 1. W procedurze inicjalizacyjnej formatki:. Dodaj nową opcję do wyboru w cmbreports : Raport kasowy (indeks = 2) 2. Upewnij się, że do formatki frmviewer został dodany komponent crcashreports1, Jeśli nie, dodaj go ręcznie. 3. Zmień obsługę zdarzenia SelectedIndexChanged na kontrolce cmbreport. Case 2 CrystalReportViewer1.ReportSource = crcashreport1 4. Sprawdź działanie aplikacji. Strona 5