Jak z gąszczu danych zrobić czytelny raport?
Oracle DB, MySQL, Microsoft SQL Server, PostgreSQL, FireBird to prawdopodobnie najbardziej popularne, ale bynajmniej nie wszystkie, z wielu DBMS, w których dane mogą być tworzone, wypełniane, modyfikowane i zarządzane.
Często są one wypełnione tymi samymi danymi przez dość długi czas (np. w systemach ewidencji czasu pracy, zamówień towarów, a pytanie "jak wydobyć z nich informacje?" (czytelną, możliwą do ogarnięcia wzrokiem i ludzkim umysłem, do dalszej analizy) odkłada się na później. Zastanówmy się, co zrobić "potem" - gdy mamy już "pełną bazę danych", a my (lub zarząd firmy) zastanawialiśmy się, "co się właściwie dzieje? Wykorzystajmy efektywnie dane, które zbieramy w procesie, wyciągnijmy z nich informacje i na ich podstawie podejmijmy decyzje! ". To jest właśnie definicja Business Intelligence (BI) mówiąc prościej.
Istnieje wiele możliwości ich tworzenia (raportów), ale tutaj zajmiemy się FastReport VCL. Jest tam projektant do generowania szablonów, podgląd i wiele innych funkcji do wykonywania zadań na różnych poziomach - przyglądaliśmy się im w innych artykułach, ale wciąż nie przyjrzeliśmy się im wszystkim.
FastReport może pracować z kilkoma źródłami danych (bazami danych) jednocześnie, lub pobierać je z tzw. źródeł użytkownika (nie baz danych) - tablic lub zwykłych plików.
Jak uzyskać informacje z DB w Delphi?
W celu podłączenia źródła danych należy z palety komponentów zastosować konektor (TfrxDBDataSet). Jest to połączenie pomiędzy danymi a FastReportem.
Teraz opowiem krótko o roli komponentów:
TfrxDBDataSet jest elementem służącym do pracy ze źródłem danych, jest również kompatybilny z TDataSet, ale TfrxIBODataSet jest stosowany dla obiektów IB, również TfrxUserDataSet jest stosowany dla innych zasobów - tablic, plików, itp.
Przede wszystkim, używając właściwości DataSet, połącz się z samym zapytaniem lub tabelą, lub DataSource (łączy się z komponentem TDataSource).
Aby dane były już w raporcie, należy określić, które z nich mają trafić do naszego raportu! To również jest proste do zrobienia.
Wybierz w projekcie FastReport VCL w menu Raport -> Dane.
Zaznacz niezbędne elementy i kliknij "OK"!
Podłącz to źródło danych do zespołu. Wybierz DataSet (tabela) w jego właściwościach. Teraz przeciągnij i puść pola tabeli/zapytania do odpowiednich pasm. Po jednokrotnym przeciągnięciu ma osobliwość automatycznego łączenia na bandzie - pola bazy.
Jeśli potrzebujesz zobaczyć wygenerowany raport, możesz użyć podgląd! Nie zapomnij, że możesz dodać prawie wszystko, czy to QR kody, mapy i inne dodatki, których jest wystarczająco w FastReport VCL.
Podgląd:
W lewym górnym rogu wybierz "Plik".
Natychmiast pojawi się lista ustawień. Wybierz na niej opcję "Podgląd".
To wszystko! Po tej czynności zobaczysz, jak będzie wyglądał gotowy raport.
Jeśli jesteś zadowolony z wyniku, możesz zapisać plik do różnych formatów i eksportować do pamięci w chmurze lub na komputerze, a także wydrukować.
Wybierz "Zapisz" i odpowiedni format.
Wybrany zostanie wysłany do określonej lokalizacji w celu zapisania/wyeksportowania!
Aby wygenerować raport z kodu należy, wykonać następujące kroki :
- Wyczyść raport.
- dodaj źródło danych.
- dodaj stronę “Data”
- dodaj pasma na stronie.
- ustaw właściwości pasma i połącz je z danymi.
- dodaj obiekty na każdym paśmie.
- ustaw właściwości obiektu i połącz je z danymi.
Zapisz szablon i naciśnij “Preview”!
Raport został wykonany! Możemy zapisać go w formacie XML, PDF, a nawet CSV lub DBF w celu dalszej analizy!
Rozumiem, że taka ilość zrzutów ekranu może nawet zniechęcić. Ale przy pisaniu tego artykułu zrobienie tych wszystkich zrzutów ekranu było najdłuższym i najbardziej czasochłonnym zadaniem. Samo przygotowanie samego raportu zajęło około 5 minut. A gdyby tak szybciej i bez zrzutów ekranu?
Stwórz raport z naszej bazy danych z Delphi / Lazarus - kodu!
Przeanalizujmy stworzenie prostego raportu typu "lista". Załóżmy, że mamy komponenty frxReport1: TfrxReport i frxDBDataSet1: TfrxDBDataSet (ten ostatni jest podłączony do danych z DBDEMOS, tabela Customer.db). Nasz raport będzie zawierał jedną stronę z tytułem raportu i źródło głównych danych. W pasku tytułu raportu będzie znajdował się obiekt z tekstem "Witaj FastReport!" a w danych głównych będzie znajdował się obiekt z odniesieniem do pola "CustNo".
Zamień dane bazy danych w dokument w Delphi / Lazarus / C++ Builder | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
var DataPage: TfrxDataPage; Page: TfrxReportPage; Band: TfrxBand; DataBand: TfrxMasterData; Memo: TfrxMemoView; { Clear the report } frxReport1.Clear; { add data source to the available list for the report } frxReport1.DataSets.Add(frxDBDataSet1); { add “data” page } DataPage := TfrxDataPage.Create(frxReport1); { add page } Page := TfrxReportPage.Create(frxReport1); { create unique name } Page.CreateUniqueName; { set page properties by default } Page.SetDefaults; { change page orientation } Page.Orientation := poLandscape; { add report title } Band := TfrxReportTitle.Create(Page); Band.CreateUniqueName; { it’e enough for a band to set coordinate Top and hight } { both coordinates are in pixels } Band.Top := 0; Band.Height := 20; { add object on report title } Memo := TfrxMemoView.Create(Band); Memo.CreateUniqueName; Memo.Text := 'Hello FastReport!'; Memo.Height := 20; { this object will be aligned with the band width } Memo.Align := baWidth; { add master data } DataBand := TfrxMasterData.Create(Page); DataBand.CreateUniqueName; DataBand.DataSet := frxDBDataSet1; { coordinate Top shouldn’t cross the previous band! } DataBand.Top := 100; DataBand.Height := 20; { add object on master data } Memo := TfrxMemoView.Create(DataBand); Memo.CreateUniqueName; { connect to data } Memo.DataSet := frxDBDataSet1; Memo.DataField := 'CustNo'; Memo.SetBounds(0, 0, 100, 20); { align text on the right side of the object } Memo.HAlign := haRight; { show the report } frxReport1.ShowReport; |
Podsumowując - nauczyliśmy się jak zamieniać niewidoczne, ale uporządkowane dane w raporty - dokumenty. Teraz możesz je opublikować lub przekazać analitykom!