Wydruki XML - przykład 2
Kolejny przykład pokaże jak wygenerować raport, który zostanie zaprezentowany w przeglądarce www. Jak już widzieliśmy w poprzednim przykładzie można definiować kilka zapytań dla takiego raportu, może on się składać z kilku elementów. Na potrzeby tej lekcji wyciągniemy sobie przykładowe dane z tabeli dokumentów. Raport prezentuje możliwość wykorzystania kilku technik:
- generowanie strony w formacie html
- korzystanie z parametrów dynamicznych - pobieranych w czasie tworzenia wydruku
- korzystanie z parametrów zdefiniowanych w CDN XL (np. pieczątka firmy)
- formatowanie wyglądu raportu w celu prezentacji na ekranie
- formatowanie wyglądu raportu w celu wydruku (tutaj zasymulujemy wygląd znany w CDN XL z raportów CrystalReports)
parametry
Zaczynamy od definicji parametrów zapytania
@PAR ?@D17|DataOd|&Od:{Today()}@? PAR@
@PAR ?@D17|DataDo|&Do:{Today()}@? @COND(??DataDo >= ??DataOd) @CONDMSG(nie wcześniejsza niż data Od) PAR@
@PAR ?@N-1|Sortuj|&Sortowana Kolumna:1@? PAR@
sql
Następnie definiujemy 2 zapytania sql:
- pierwsze z nich, pobiera listę dokumentów (zielonych) w buforze
- drugie przekształca parametry przekazane do wydruku z systemu
SELECT case trn_gidtyp when 2033 then 'FS' when 2049 then 'PA' end as dok, TrN_TrNSeria as seria, TrN_TrNNumer as numer, Ope_Ident as operator, trn_nettor as netto, convert( char(10), DATEADD(day,Trn_Data2,CONVERT(DATETIME,'1800-12-28 00:00:00.000',121)), 121 ) AS datawys, convert( char(10), DATEADD(day,Trn_Data3,CONVERT(DATETIME,'1800-12-28 00:00:00.000',121)), 121 ) AS dataope, Knt_Akronim as akronim FROM (CDN.TraNag INNER JOIN CDN.OpeKarty ON TrN_OpeNumerW = Ope_GIDNumer) INNER JOIN CDN.KntKarty ON TrN_KntNumer = Knt_GIDNumer where (trn_stan=1 or trn_stan=2) and (trn_gidtyp=2033 or trn_gidtyp=2049) and Trn_data2 >= ??DataOd and Trn_data2 <= ??DataDo order by ??Sortuj select convert(char(10),dateadd(day,??DataOd,convert(datetime,'1800-12-28',121)),121) as DataPoczatkowa, convert(char(10),dateadd(day,??DataDo,convert(datetime,'1800-12-28',121)),121) as DataKoncowa, ??Sortuj as SortowanaKolumna
szablon xsl
Następnie tworzymy szablon przekształcenia XSL, tym razem generujemy kod html. Tutaj pokażę tylko fragment, cała definicja XPT znajduje się w załączniku do artykułu.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" version="1.0" encoding="windows-1250" indent="yes" /> <xsl:template match="ROOT"> <html> <head> <meta><xsl:attribute name="http-equiv">Content-Type</xsl:attribute><xsl:attribute name="content">text/html; charset=windows-1250</xsl:attribute></meta> </head> <body> <div><xsl:attribute name="id">naglowek</xsl:attribute> <div><xsl:attribute name="id">pieczatka</xsl:attribute> <p>?@H100_N|CDN_Firma1:''@?</p> <p>?@H100_N|CDN_Firma2:''@?</p> <p>?@H100_N|CDN_Firma3:''@?</p> <p>?@H100_N|CDN_FMiasto:''@?</p> <p>?@H100_N|CDN_FUlica:''@?</p> <p>?@H100_N|CDN_FNip:''@?</p> </div> <div><xsl:attribute name="id">metka</xsl:attribute> <h3><xsl:attribute name="id">gora</xsl:attribute>Faktury w buforze</h3> <xsl:apply-templates select="RECORDSET2/RECORD"/> <h3><xsl:attribute name="id">dol</xsl:attribute>Operator: ?@H100_N|CDN_Operator:''@?</h3> </div> ...
wykonanie
Po uruchomieniu tak przygotowanego wydruku, program poprosi o wypełnienie danych, czyli podanie zakresu dat z jakich mają być prezentowane dokumenty, a także numer sortowanej kolumny.
Zaś po ustaleniu parametrów i wygenerowaniu pliku uzyskamy następujący wynik:
formatowanie wyglądu
Jak widać, prosta strona HTML nie jest jeszcze tym, co "tygryski" lubią najbardziej :). Dlatego w definicji przekształcenia HTML dodajemy dwie linijki, podłączające akrusze stylów css, w których to możemy dowolnie zmieniać wygląd raportu.
<link><xsl:attribute name="href">http://cdn.3lance.pl/astyl_xpt.css</xsl:attribute><xsl:attribute name="REL">StyleSheet</xsl:attribute><xsl:attribute name="media">screen</xsl:attribute></link> <link><xsl:attribute name="href">http://cdn.3lance.pl/astyl_crystal.css</xsl:attribute><xsl:attribute name="REL">StyleSheet</xsl:attribute><xsl:attribute name="media">print</xsl:attribute></link>
powyższe arkusze są linkowane z serwera forum, nic nie stoi na przeszkodzie by sobie je ściągnąć, zmodyfikować i załączać z lokalnego dysku.
Drugi arkusz stylu css, służy do tego by raport dedykować do wydruku (należy włączyć podgląd wydruku, lub wydrukować wygenerowany raport, aby uzyskał taką formę):
No i to w zasadzie wszystko w ramach tej lekcji, kolejne elementy o jakie można rozszerzyć taki raport, to zbudowanie go z kilku sekcji pokazujących np. 10 najlepszych transakcji, poniżej 10 najgorszych, listę nowo wprowadzonych produktów, czy takich, które wyszły z produkcji. Wszystko na jednej stronie ... czyli tzw. One Page Solution :) Zalecam też wykorzystanie funkcji <xls: ... > do formatowania warunkowego i podsumowywania wyników.
Attachments
-
Przyklad2_Parametry.png
(23.3 KB) - added by mikey
4 years ago.
zapytanie o parametry
-
Przyklad2_CzystyHtml.png
(56.0 KB) - added by mikey
4 years ago.
Raport bez formatowania
-
Przyklad2_MediaScreen.png
(64.3 KB) - added by mikey
4 years ago.
Wygląd raportu na ekranie
-
Przyklad2_MediaPrint.png
(41.8 KB) - added by mikey
4 years ago.
Wygląd podglądu wydruku
-
Przykład2.xpt
(4.7 KB) - added by mikey
4 years ago.
Pełna definicja wydruku tekstowego - faktury w buforze





