Warsztat 2: Dynamiczne tworzenie raportów, wypełnianie kontrolek ListView.

Dynamiczne_raporty.zip
Autor: Krzysztof Ciuba (kciuba@calia.daewoo.lublin.pl)
Baza w formacie MsAccess 2000
62kB, 10-06-2002

Opis problemu:

1. Czy nie patrzyliśmy czasem trochę zazdrośnie na accessowe kreatory do budowy raportów? Wystarczy podać źródło danych, a czarodziej zaprojektuje i wykona resztę.

2. Jak wypełnić danymi formant ListView w naszej aplikacji? Wprawdzie Microsoft przygotował rozbudowany przykład na stronie: http://support.microsoft.com/default.aspx?scid=kb;EN-US;q165437, który demonstruje użycie formantu ListView, TreeView oraz innych kontrolek zawartych w MSCOMCTL.OCX, lecz jest on raczej dość skomplikowany i mało czytelny, zwłaszcza dla początkujących praktyków Accessa.

Rozwiązanie:

W przykładzie Dynamiczne_raporty.zip Krzysztof Ciuba zdradza sekrety, jak wcielić się w rolę wizarda i samemu z poziomu kodu zbudować raport od podstaw. Rozwiązanie może znaleźć wprost zastosowanie w raportach opartych na kwerendach krzyżowych, w których nie można z góry przewidzieć nazw, ani ilości kolumn.

Ten sam przykład demonstruje metodę wypełniania kontrolek ListView. Jest to warte oddzielnego wyszczególnienia, bo wykorzystanie tego formantu jest trudniejsze niż standardowych obiektów z accessowego przybornika i często nastręcza problemy. A oto co pisze Krzysztof Ciuba o swoim programie:

Na grupie dyskusyjnej Access'a padają czasem pytania jak za pomocą VBA wygenerować raport. Popełniłem więc mały przykładzik, który może odgrywać rolę wizarda - teraz trochę prymitywnego, bo brak pełnej funkcjonalności. Poza tym może być dobrym fundamentem do dalszego rozwoju. Wykorzystałem też formant ListView, który sam może być warty przestudiowania.

Przypominam, że kontrolki ListView nie ma w standardowej instalacji Accessa, dlatego Ci którzy nie posiadają jej w swoich komputerach, muszą wcześniej ją zainstalować. Możliwe jest także wykorzystanie starszych wersji bibliotek, które już są w naszym systemie. W tym celu (w razie problemów z kompilacją) należy odpowiednio zmodyfikować referencje w menu Tools/References. Ja np. musiałem zmienić odwołanie do biblioteki Microsoft ActiveX Data Objects 2.7 Library na Microsoft ActiveX Data Objects 2.5 Library i program działa prawidłowo.

W referencjach musi być również odniesienie do pliku MSCOMCTL.OCX. Jeśli ktoś dysponuje starszą wersją, np. 5.0 z Visual Basica, może dokonać upgrade'u do ver. 6.0 ze strony: http://msdn.microsoft.com/vbasic/downloads/axupgrade.asp

Niektóre źródła danych dla dynamicznie tworzonych raportów, są przez Krzysztofa tylko zamarkowane w prezentowanym przykładzie - należy w ich miejsce podłączyć swoje tabele lub kwerendy.