Witam
Niedawno miałem proste zadanie stworzenia linku do raportu interaktywnego, który ma być poddany filtrowaniu. Zazwyczaj zadanie takie wykonuje się poprzez utworzenie nowego Items'a na stronie raportu i następnie podpięcie Items'a do źródła raportu interaktywnego. Powstało by zatem coś takiego:
Select name, addres, street
from customers
where name like :P1_NAME
Wszystko fajnie ale co kiedy nasz użytkownik będzie chciał wrócić do podstawowego działania raportu - bez filtrowania ? Należałoby stworzyć przycisk kasujący cache lub wartości sesji dla Items'a P1_NAME. Zakładając, że mamy już całe środowisko raportu interaktywnego to dodawanie kolejnych przycisków wydaje się być mało eleganckie. Dlatego lepiej jest zastosować wbudowaną możliwość linkowania do Raportu interaktywnego z zadaniem filtrowania.
Jak to działa ?
Zacznijmy od przypomnienia składnia adresu URL w APEX:
f?p=APP:PAGE:SESSION:REQUEST:DEBUG:ClearCache:itemNames:itemValues
Aby przekazać wartości filtra do raportu interaktywnego na stronie wystarczy w miejscu itemNames podać odpowiednią nazwę "zmiennej", która będzie odpowiadała za wprowadzenia filtra.
W moim przypadku adres będzie wyglądał następująco:
f?p=2000:1:&SESSION.:::CIR:IRLIKE_NAME:dbe
Jako Items'a użyłem specjalnego ciągu, który składa się z trzech członów:
1. IR
2. LIKE
3. NAME
IR to skrót od interactive Report. LIKE to typ filtrowania natomiast NAME to alias kolumny, która ma być filtrowana.
W polu itemValues umieszczono wartość dla filtra (w tym przypadku dbe).
Dodatkowo możecie zauważyć ze w miejscu ClearCache gdzie zazwyczaj umieszcza się strony, dla których wartości sesji mają być wyczyszczone wpisałem CIR. Wpis ten informuje silnik APEX, że ma wyczyścić wszelkie ustawienia na raporcie interaktywnym - wyczyścić jego stan sesji.
Dodatkowe informacje o filtrach dla Interaktywnych raportów znajdziecie w dokumentacji Oracle tutaj.
0 komentarze:
Prześlij komentarz