Jednym z kluczowych zadań generatora raportów jest pobieranie danych. Najczęściej bazy danych są wykorzystywane do przechowywania i pobierania danych. Jednak co zrobić, jeśli do przechowywania określonych danych używa się zdalnej pamięci masowej w chmurze? Jak wgrać logo firmy przez http do swojego raportu, aby było zawsze aktualne?
Aby rozwiązać te problemy w FastReport VCL 2021.3 dodaliśmy wsparcie dla protokołów i możliwość przesyłania danych poprzez protokoły do obiektów takich jak: Mapy, obraz, tekst, obiekt PDF, obiekt HTML. Szereg obiektów posiada nową właściwość DataLink, która zawiera dodatkowe właściwości do obsługi linków. Linki te zawsze zaczynają się od nazwy schematu, po której następuje delimiter. Przykład <schemat>:[//ścieżka] . Schematami w większości przypadków są protokoły takie jak http i https.
Pobieranie danych poprzez linki w FastReport VCL
FastReport VCL jest oparty na architekturze modułowej, funkcjonalność http i https nie jest wyjątkiem, i jest umieszczona w oddzielnym pakiecie razem z portami internetowymi. Dlatego, aby linki http i https działały, w sekcji uses aplikacji musi być włączony moduł frxTransportHTTP lub do formularza aplikacji musi być dodany jeden z portów internetowych.
Uwaga! Do poprawnego działania protokołu https wymagane są następujące biblioteki Open SSL: ssleay32.dll oraz libeay32.dll, które znajdują się w katalogu z główną aplikacją demo.
Uruchom kreator raportów i utwórz nowy raport. Dodaj do strony raportu pasek "Nagłówek raportu" oraz zdjęcie obiektu. Raport powinien wyglądać tak jak poniżej.
Wyróżnij obiekt "Picture" i przejdź do Inspektora Obiektów. W Inspektorze obiektów znajdź właściwość DataLink. Do szybkiego wyszukiwania można użyć filtru wbudowanego w Inspektorze Obiektów, wpisując nazwę szukanej właściwości.
Rozważ znaczenie właściwości pochodnych DataLink:
Link - link ze schematem (protokołem), w formacie <schemat>:[//ścieżka]. Dane zostaną załadowane z określonego łącza.
LoadingType - typ pobierania danych, określa, w którym momencie dane zostaną załadowane. Może przyjmować następujące wartości:
[] - Puste. Dane wczytywane są w trybie edycji szablonu, po kliknięciu przez użytkownika na edytor wczytywania. Używane, jeśli chcesz tylko raz pobrać dane i zapisać je w szablonie.
-
[dltOnGetData]- Default. Dane są ładowane do obiektu podczas tworzenia raportu. W tym przypadku dane obiektu nie są zapisywane w szablonie. Przy każdym budowaniu obiekt otrzymuje nowe dane za pomocą linku.
- [dltOnPreview] - Dane są wczytywane w momencie podglądu, eksportu lub wydruku raportu. W tym przypadku zbudowany raport przechowuje link do danych i ładuje je za każdym razem, gdy użytkownik ładuje zbudowany raport. Może być używany do pobierania aktualnych danych w skonstruowanym raporcie, bez konieczności jego ponownego budowania.
- [dltOnGetData, dltOnPreview] - Tryb hybrydowy. Podczas wytwarzania obiekt pobiera dane przez referencję i zapisuje je do wykonanego raportu. W ten sam sposób zachowane jest łącze do danych. Podczas wczytywania zbudowanego raportu przy pomocy takiego obiektu, obiekt będzie próbował wczytać dane podobnie jak przy [dltOnPreview] lecz jeżeli wczytanie danych nie powiodło się, to zostaną wyświetlone dane odebrane podczas budowania raportu.
- ProcessingType - wartość określająca sposób przetwarzania linku podczas budowania raportu: dpString - jako zwykły łańcuch znaków, dpExpression - jako wyrażenie skryptu raportu.
Inne obiekty takie jak Text, Picture, Maps, HTMLView, PDFView mogą być załadowane w ten sam sposób.
Możesz użyć linków, aby uzyskać dostęp do Web API w celu pobrania danych, takich jak mapy OSM.
Stwórzmy nowy raport z paskiem "Nagłówek raportu" i obiektem Mapy z pustą warstwą (jak stworzyć obiekt "Mapy' można zobaczyć w naszej dokumentacji).
Teraz zaznacz MapFileLayer1 i przejdź do właściwości DataLink.Link w Inspektorze Obiektów. Możesz użyć API OpenStreetMap, aby załadować mapy OSM. Spróbujmy wyświetlić wybrany obszar w FastReport VCL. Link API będzie wyglądał następująco: https://www.openstreetmap.org/api/0.6/map?bbox=-6.7234%2C61.6283%2C-6.697%2C61.6379. Wstaw go do właściwości DataLink.Link. Przejdźmy do wykonania raportu.
Dane z serwera zostały automatycznie wczytane do obiektu mapy.
Więcej niż tylko hiperłącza
W FastReport VCL wszystkie schematy i protokoły właściwości DataLink są obsługiwane przez fabrykę. To pozwala deweloperom na rozszerzenie funkcjonalności aplikacji o nowe schematy i protokoły bez zmian w kodzie źródłowym FastReport VCL. Dodatkowo, FastReport VCL automatycznie rejestruje transporty internetowe w fabryce jako nowe protokoły. Pozwala to na dostęp do prywatnej pamięci masowej w chmurze i pobieranie z niej danych do raportu, bez konieczności przesyłania lub przechowywania jakichkolwiek danych autoryzacyjnych w raporcie. Schemat interakcji właściwości DataLink z fabryką protokołów można zobaczyć poniżej.
Jak więc dodać port internetowy i korzystać z linków do prywatnego dysku Google Drive?
Można to zrobić w zaledwie kilku krokach:
- Otwórz listę komponentów z dostępem do kanałów internetowych.
- Dodaj TfrxGoogleDriveIOTransport do formularza aplikacji.
- Nadaj komponentowi nazwę. Nazwa ta zostanie użyta jako protokół schematu na łączu dostępu. W przykładzie nazwaliśmy go "GDRIVE".
- Nawiąż połączenie z Google Drive poprzez menu "Edytuj połączenie" (szczegóły w naszym innym artykule).
- Uruchom projektanta raportów i wygeneruj raport, postępując zgodnie z krokami podanymi na początku artykułu przy tworzeniu raportu z obrazem.
- We właściwości DataLink.Link podaj link do pliku w Google Dive, ale zamiast schematu (protokołu) podaj nazwę transportu. W naszym przypadku jest to "GDRIVE". Link będzie wyglądał następująco GDRIVE://LogoF.PNG. Można teraz uruchomić raport w celu jego wykonania.
Ważne! Jeśli dane nie zostaną pobrane, sprawdź, czy połączenie z pamięcią masową w chmurze zostało nawiązane prawidłowo i czy zapisano token autoryzacyjny podczas połączenia.
W ten sam sposób można połączyć się z innymi źródłami dostępu do Internetu. Jest to jedno z kilku potężnych narzędzi, które pojawiły się wraz z wydaniem FastReport VCL 2021.3, które możesz wykorzystać do ulepszenia swoich projektów.