Kiedy masz za zadanie stworzyć dużą liczbę raportów w ramach jednego stylu korporacyjnego, stajesz przed problemem powielania niektórych informacji, stylów projektowania w każdym raporcie. Z reguły publiczne raporty (dokumenty) w firmie mają ten sam nagłówek z nazwą i informacjami kontaktowymi. Załóżmy, że masz 50 szablonów z takim samym nagłówkiem. Ale zmienia się adres firmy i trzeba otworzyć każdy szablon w edytorze i poprawić go. Ale jeśli nie ma 50 szablonów, ale 100, to jest to prawdziwy ból głowy.
Uniknięcie tego problemu ułatwia mechanizm dziedziczenia, w którym posiadamy szablon, który może być wykorzystywany w różnych raportach. Zmiany wprowadzone w tym szablonie pojawią się we wszystkich odziedziczonych raportach.
Dziedziczenie raportów w FastReport.NET jest zorganizowane w następujący sposób. Zaczynasz od stworzenia tzw. raportu bazowego, po którym dziedziczą inne raporty. Raport ten powinien zawierać szablon z informacjami wspólnymi dla wszystkich dziedziczonych raportów. Na przykład, może to być nagłówek z danymi firmy.
Jak wspomniano powyżej, można zmodyfikować szablon raportu podstawowego, a następnie zostanie on zmieniony we wszystkich starszych raportach. Można również edytować informacje z raportu bazowego w raporcie starszego typu. Zmiany te zostaną zapisane tylko w tym konkretnym raporcie.
Co jednak w przypadku, gdy zmodyfikowałeś obiekt z raportu bazowego w raporcie dziedziczonym, a następnie zmodyfikowałeś ten sam obiekt w raporcie bazowym. W takim przypadku zmiany z raportu bazowego zostaną zastosowane do tego obiektu, ale tylko te, które nie pokrywają się ze zmianami w raporcie dziedziczonym. Na przykład, jeśli zmienisz czcionkę w obiekcie tekstowym w raporcie dziedziczonym, a następnie ustawisz pogrubioną dla tego samego obiektu w raporcie podstawowym, obie zmiany zostaną zastosowane. A jeśli czcionka zostanie zmieniona również w raporcie podstawowym, nie zostanie to odzwierciedlone w raporcie odziedziczonym, ponieważ została już w nim zmieniona.
Warto również pamiętać o ograniczeniach dotyczących dziedziczenia raportu. Nie ma możliwości:
- Usuwania i przenoszenia raportu bazowewwgo, w przeciwnym razie wszystkie odziedziczone raporty zostaną uszkodzone.
- Dziedziczenia raportu z innego dziedziczonego raportu. Oznacza to, że wielokrotne dziedziczenie nie jest dozwolone.
- Wykorzystania skryptu, parametrów raportu, obiektu "Tabela" i obiektu "Macierz" w raporcie podstawowym.
Przyjrzyjmy się teraz przykładowi tworzenia raportu dziedziczonego. Najpierw należy utworzyć podstawowy raport.
Przykładowo, będzie on zawierał szablon raportu o tytule:
Zapisz ten raport z nazwą zawierającą podstawę, aby łatwiej było go znaleźć wśród innych szablonów raportów.
Aby utworzyć starszy raport, należy użyć kreatora starszego raportu. Jest on dostępny na ekranie powitalnym lub w oknie nowego raportu (Plik->Nowy):
Kreator raportów będzie oferował tylko jedną czynność - wybór raportu bazowego za pomocą okna dialogowego Otwórz plik. Wybierz raport bazowy, który został wcześniej utworzony. Wszystkie elementy raportu posiadają ikonę kłódki. Oznacza to, że są one dziedziczone z raportu bazowego.
Nowo dodane obiekty nie będą już miały tej ikony. Dodajemy źródło danych do naszego raportu i umieszczamy pola na pasku "Data". Dla przykładu można użyć demonstracyjnego źródła danych nwind.xml z FastReport.NET:
Ze źródła danych wybieramy tabele Kategorie i Produkty. Tabele te są połączone kluczem, dzięki czemu możemy łatwo utworzyć raport Master-Detail:
Jak widać, dodane pola danych oraz Nagłówek i Dane szczegółowe nie posiadają ikony kłódki. Dzięki tej właściwości można zawsze odróżnić starsze obiekty raportu od raportu bazowego.
W ten sposób można utworzyć dużą liczbę raportów w jednym stylu, a następnie łatwo edytować je wszystkie, zmieniając tylko podstawowy szablon.