Tworzenie raportów XML Publisher przy użyciu Data Templates



Podobne dokumenty
Pakiety podprogramów Dynamiczny SQL

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Oracle PL/SQL. Paweł Rajba.

PL/SQL. Zaawansowane tematy PL/SQL

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Język PL/SQL Pakiety podprogramów

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

PL/SQL. Zaawansowane tematy PL/SQL

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

PODSTAWY BAZ DANYCH 13. PL/SQL

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Bloki anonimowe w PL/SQL

15. Funkcje i procedury składowane PL/SQL

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

1 Wprowadzenie do bloków nazwanych 1. 2 Parametry 2. 3 Procedury i funkcje 3. 4 Pakiety 6. 5 Podsumowanie Źródła 10

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Procedury i funkcje składowane

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006

Język SQL, zajęcia nr 1

Indeksy. Indeks typu B drzewo

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Uruchomienie raportu w środowisku Oracle applications

Oracle Developer Suite. Budowa aplikacji użytkownika końcowego

Przykład połączenie z bazą danych

Model semistrukturalny

Język PL/SQL Procedury i funkcje składowane

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

DECLARE VARIABLE zmienna1 typ danych; BEGIN

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Oracle Report Builder Materiały szkoleniowe

Zaawansowane bazy danych i hurtownie danych semestr I

Wykład 9. Pakiety w języku PL/SQL

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Oracle PL/SQL. Paweł Rajba.

Generowanie raportów

Zarządzanie kontami użytkowników w i uprawnieniami

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

Oracle PL/SQL. Paweł Rajba.

SYSTEM INFORMATYCZNY KS-SEW

Bazy danych. dr inż. Arkadiusz Mirakowski

Relacyjne bazy danych. Podstawy SQL

APEX zaawansowany raport

Plan wykładu BAZY DANYCH II WYKŁAD 7. Pakiety. Zalety pakietów

Obowiązuje od wersji

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

BAZA DANYCH SIECI HOTELI

Modelowanie wymiarów

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Widok Connections po utworzeniu połączenia. Obszar roboczy

Wyzwalacze TWORZENIE WYZWALACZY

CREATE TABLE logika (p BOOLEAN); INSERT INTO logika VALUES(true); INSERT INTO logika VALUES(false); INSERT INTO logika VALUES(NULL);

Oracle PL/SQL. Paweł Rajba.

Intro. I.Wojnicki, ZTB:XML ZTB: XML. Igor Wojnicki. Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie.

XML Repository. Maciej Zakrzewicz.

Oracle PL/SQL. Paweł Rajba.

Tworzenie aplikacji bazodanowych w delphi dla dużych baz danych FRAMEWORK IMPET

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Hurtownia Świętego Mikołaja projekt bazy danych

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

1. Wyzwalacze BD (ang. triggers)

Plan wykładu BAZY DANYCH II WYKŁAD 2. Bloki. Struktura bloku

Relacyjne bazy danych. Podstawy SQL

Oracle Label Security

Post-relacyjne bazy danych

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Bazy Danych i Usługi Sieciowe

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL

Plan. Raport. Tworzenie raportu z kreatora (1/3)

mbank CompanyNet Struktura raportu Historia rachunku w formacie xml Bankowość elektroniczna dla klientów MSP i korporacji Wersja 1.00, r.

Możliwości - typy raportów. Ćwiczenie nr 1. (cd.) Prosty raport z kreatora. Ćwiczenie nr 1. Prosty raport z kreatora.

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

PODSTAWY BAZ DANYCH. 17. Obiektowość w Oracle. 2009/2010 Notatki do wykładu "Podstawy baz danych"

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL;

BAZY DANYCH Cz III. Transakcje, Triggery

Bazy danych i usługi sieciowe

Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne, perspektywy wbudowane.

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

Plan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

Obiektowe bazy danych

Oracle PL/SQL. Paweł Rajba.

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

CREATE TABLE autorzy ( id_autora SERIAL PRIMARY KEY, imie TEXT, nazwisko TEXT );

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

SQL> startup pfile=./admin/pfile/initdbx.ora. SQL> create spfile from pfile='$home/admin/pfile/initdbx.ora' create user bolek identified by bolek;

P o d s t a w y j ę z y k a S Q L

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Tworzenie u ytkownika. ORACLE (Wykład 6) Uwierzytelnianie u ytkowników. Przył czenie u ytkownika do bazy. Nadawanie uprawnie systemowych

Transkrypt:

Tworzenie raportów XML Publisher przy użyciu Data Templates Wykorzystanie Szablonów Danych (ang. Data templates) jest to jedna z metod tworzenia raportów w technologii XML Publisher bez użycia narzędzia Oracle Reports (.rdf) w aplikacji OeBS. Z przeprowadzonych przeze mnie testów funkcjonalności mogę stwierdzić że technika ta jest elastyczna i daje duże możliwości techniczne tworzenia raportów. W wielu przypadkach bezproblemowo może zastąpić tworzenie raportów przy użyciu Oracle Reports a w przyszłości prawdopodobnie całkowicie zastąpić to narzędzie. Poniżej opisałem prawie wszystkie możliwości tego narzędzia. Oraz rozwiązanie typowych problemów programistycznych. 1. Co to jest Szablon danych (Data template / XML template)? Szablon Danych jest to plik XML składający się z odpowiednich sekcji przy pomocy którego możemy wygenerować pełną strukturę drzewa XML-owego. Zastępuje on nam plik *.rdf (Oracle Reports). Poniżej Przykład Kompletnego Szablonu danych / DATA_TEMPLATE: Jaki utworzyłem na potrzeby testów. Do pracy na plikach XML użyłem darmowego narzędzia Notepad++

Możemy wyspecyfikować 5 głównych sekcji w szablonie danych: 1. Definicja parametrów <parameters> </parameters> 2. Lexicals (Funkcjonalność podobna do user exit w Oracle Reports) <lexicals></lexicals> 3. Definicja wyzwalaczy <datatrigger></datatrigger> 4. Definicja zapytań SQL <dataquery><sqlstatement></sqlstatement></dataquery> 5. Definicja struktury danych. <datastructure><group> </group> </datastructure> Do każdego Szablonu danych możemy opcjonalnie podpiąć Pakiet PL/SQL w którym możemy zrobić obsługę wyzwalaczy oraz napisać dodatkowe funkcje / procedury, wykorzystywane w szablonie danych. Opis poszczególnych sekcji: 1. Definicja Szablonu danych: XXPT_XMLXDO <datatemplate name="xxpt_xmlxdo" description="xx: XMLP wykorzystanie użycia XDODTEXE" version="1.0" defaultpackage="xxpt_xmlxdo"> Atrybut defaultpackage jest opcjonalny defaultpackage="xxpt_xmlxdo". Szablon danych może korzystać tylko z zapytań SQL. Dodanie pakietu znacznie zwiększa elestyczność narzędzia. Do szablonu danych jest podpięty pakiet bazodanowy XXPT_XMLXDO. Nazwa pakietu bazodanowego może być dowolna. 2. Wyzwalacze <datatrigger name="beforepform" source="xxpt_xmlxdo.beforepform"/> <datatrigger name="beforereport" source="xxpt_xmlxdo.beforereport(:p_data_od, :p_data_do)"/> <datatrigger name="beforereport_2" source="xxpt_xmlxdo.beforereport_2"/> <datatrigger name="afterreport" source="xxpt_xmlxdo.afterreport"/> <datatrigger name="afterreport_2" source="xxpt_xmlxdo.afterreport_2"/> Sekcje wyzwalaczy są opcjonalne. Aby zdefiniować wyzwalacze należy zdefiniować atrybut defaultpackage w sekcji <datatemplate>. Wyzwalacze są mapowane na funkcje w pakiecie bazodanowym. Funkcje mapowane na wyzwalacze muszą być typu Boolean zwracać true/false. Nazwy funkcji w pakiecie bazodanowym mogą być dowolne ale najlepiej zachować logiczne znaczenie. Możemy logicznie zdefiniować wyzwalacza o typie: przed formularzem parametrów, przed raportem, po raporcie. /*Przed formularzem parametrów*/ function BeforePForm return boolean; /*BeforeReport*/ function BeforeReport ( p_data_od varchar2,p_data_do date ) return boolean; function BeforeReport_2 return boolean;

/*AfterReport*/ function AfterReport return boolean; function AfterReport_2 return boolean; Sekcje z definicją wyzwalaczy możemy umieścić tylko między głównymi sekcjami. 1. Sekcją definicji parametrów lub lexicals <parameters> </parameters><lexicals></lexicals> 2. Sekcją definicji zapytań <dataquery> 3. Sekcją definicji struktur danych <datastructure> Przy pomocy wyzwalaczy możemy np: 1. Zasilać tabele tymczasowe 2. Tworzyć zapytania dynamiczne: &sql_statement, &where_statement 3. Uruchamiać kolejne zlecenia współbieżne. 3. Parametry <!--Parametry raportu --> <parameters> <parameter name="p_data_od" datatype="character"/> <parameter name="p_data_do" datatype="date"/> <parameter name="p_test" datatype="character"/> </parameters> Parametry zdefiniowane w szablonie danych muszą zachować 100% zgodność z parametrami z programem współbieżnego. Chodzi tutaj głównie nie tylko o nazwę i typ danych ale również wielkość liter. Jeśli korzystamy z pakietu bazodanowego. Parametry muszą być zdefiniowane w nagłówku pakietu jako zmienne z zachowaniem zgodności nazw/typów. create or replace package XXPT_XMLXDO as p_data_od p_data_do p_test varchar2(32); date; varchar2(255); Dla przykładu Datę o typie FND_STANDARD_DATE raz mapuję na character a raz na date, w celu pokazania mechanizmów jej przetwarzania w szablonie RTF.

4. Zapytania SQL (Statyczne i Dynamiczne) Pierwsze zapytanie stworzone do obsługi parametrów. Należy zwrócić uwagę na obsługę daty. Parametry p_data_od, p_data_do. Raz przetwarzane jako character a raz jako date. Zapytanie Q_SQL_1 korzysta z tabeli tymczasowej zasilonej w wyzwalaczu. function BeforeReport( p_data_od varchar2,p_data_do date ) return boolean is begin /*Test komunikatu */ fnd_file.put_line(fnd_file.log, 'start XXPT_XMLXDO.BeforeReport: Wyzwalacz przed raportem. '); fnd_file.put_line(fnd_file.log, 'Parametry:'); fnd_file.put_line(fnd_file.log, 'p_data_od: ' p_data_od); fnd_file.put_line(fnd_file.log, 'p_data_do: ' p_data_do); /*Logika - insert to global temporary table XXPT_XMLXDO_SQL2 on commit delete rows; */ fnd_file.put_line(fnd_file.log, 'start XXPT_XMLXDO.BeforeReport: Ładowanie tabeli tymczasowej. '); insert into XXPT_XMLXDO_SQL1 Select rownum,round(dbms_random.value, 4) * 100,round(dbms_random.value(1000, 5000),2),dbms_random.string('A', 10),'Zapytanie SQL1' as HEADER_ID_SQL1 as amount1 as amount2 as text1 as text2

,'Test polskiej czcionki: ąęćśółżź' as text3,sysdate as date1,to_date(trunc(dbms_random.value(2452641,2452641+364)),'j') as date2 From dual connect by level <= 2; insert into XXPT_XMLXDO_SQL2 Select rownum as id_sql_2,decode(rownum, 1,1,2,1,2) as link_to_sql_1,round(dbms_random.value, 4) * 100 as amount1,round(dbms_random.value(10, 100),2) as amount2,'zapytanie SQL2' as text1,sysdate as date1,to_date(trunc(dbms_random.value(2452641,2452641+364)),'j') as date2 From dual connect by level <= 3; return true; end BeforeReport; Możemy generować dynamicznie SQLa oraz zagnieżdżać dane między sobą, tworzyć linki między zapytaniami Należy zwrócić uwagę na dynamicznie generowaną część SQL a: &g_dynamic_sql_select as text1, &g_dynamic_sql_where <![CDATA[ &g_whole_sql_statement ]]> Budowanie zależności poprzez odwoływanie się do kolumn z innych zapytań SQL: xsql2.text1 ': header_id_sql1 => ' :HEADER_ID_SQL1 as text1 From XXPT_XMLXDO_SQL2 xsql2 Where xsql2.link_to_sql_1 = :HEADER_ID_SQL1

Obsługa w wyzwalaczu: create or replace package XXPT_XMLXDO as g_lp number:=0; g_dynamic_sql_where varchar2(1200); g_dynamic_sql_select varchar2(1200); g_whole_sql_statement varchar2(1200);... create or replace package body XXPT_XMLXDO as function BeforeReport_2 return boolean is Begin /*Test komunikatu*/ fnd_file.put_line(fnd_file.log, 'start XXPT_XMLXDO.BeforeReport_2: Drugi Wyzwalacz przed raportem.'); /*Logika*/ g_dynamic_sql_where := ' and xsql2.id_sql_2 in(1,3)'; g_dynamic_sql_select := '''Test parametru dynamicznego'''; fnd_file.put_line(fnd_file.log, 'start XXPT_XMLXDO.BeforeReport_2: ' g_dynamic_sql_where); fnd_file.put_line(fnd_file.log, 'start XXPT_XMLXDO.BeforeReport_2: ' g_dynamic_sql_select); g_whole_sql_statement := 'Select ''TEST'' as XTEST from dual'; fnd_file.put_line(fnd_file.log, 'start XXPT_XMLXDO.BeforeReport_2: ' g_whole_sql_statement); return true; End BeforeReport_2; Podgląd w logu zlecenia:

5. Struktura Danych Strukturę danych w pliku XML, modelujemy w następujący sposób. Uwagi: 1. Jedno zapytanie SQL możemy wykorzystać w wielu grupach. 2. Możemy dowolnie zagnieżdżać grupy. 3. Możemy tworzyć wolne elementy / formuły oparte o funkcje PL/SQL <element name="cf_lp" datatype="number" value="xxpt_xmlxdo.cf_get_lp()"/> <element name="cf_name" datatype="varchar2" value="xxpt_xmlxdo.cf_nameformula()"/> /*Pozostałe funkcje*/ function cf_get_lp return number is Begin g_lp := nvl(g_lp,0) + 1; fnd_file.put_line(fnd_file.log, ' GET_LP: ' g_lp); return g_lp; End cf_get_lp;

function cf_nameformula return varchar2 is Begin return 'do it in pl/sql'; end cf_nameformula; Wygenerowany plik XML

2. Jak zarejestrować raport w aplikacji OeBS Aplikacja Oracle: 12.1.3 Każdy program współbieżny rejestrujemy z plikiem wykonywalnym: XDODTEXE (Program współbieżny Java). Format wyjścia zawsze XML. Parametry raportu:

XML Publisher Ponieważ logika formatowania liczb i dat przenosi się na plik RTF umieszczam instrukcję jak przetwarzać liczby i daty, nakładać maski oraz sumować. Plik: XXPT_XMLXDO.rtf XXPT_XMLXDO.rtf Wygenerowany plik PDF Plik: XXPT_XMLXDO.pdf XXPT_XMLXDO.pdf Koniec.