Madmax,
Não sei se esta seria a forma mais racional de se criar um relatorio parametrizado, mas é a que eu sei fazer no momento.
Como demonstração, vamos criar um relatorio parametrizado para a tabela EMP, que é fornecida com o aplicativo de exemplo do APEX.
Passos:
01 - Crie uma pagina em sua aplicacao do tipo REPORT -> REPORT SQL, com a opção SEARCH BAR ativada;
02 - Neste relatorio SQL, informe a seguinte querie:
Selecionar tudo
SELECT EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO
FROM (SELECT EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO
from EMP
)
WHERE HIREDATE
BETWEEN NVL(:p3_data_ini,SYSDATE-29000) AND NVL(:P3_data_fim,SYSDATE+1)
03 - Observacao: ao criar o relatorio, onde se le ":P3_DATA .." substitua o número "3" pelo número de sua página
04 - Criado o relatorio SQL, remova os seguintes ITEMS da região SEARCH de sua página (PAGE RENDERING):
P3_REPORT_SEARCH
P3_ROWS
05 - Adicionar os seguintes ITEMS à sua pagina, posicionando-os na regiao SEARCH (PAGE RENDERING):
P3_DATA_INI -> Tipo DATE PICKER DD/MM/YYYY / New Line -> NO
P3_DATA_FIM -> Tipo DATE PICKER DD/MM/YYYY / New Line -> NO
Obs: Informe numeros baixo de SEQUENCE para estes dois itens, para que sejam os primeiros a aparecer na regiao de SEARCH. Lembre-se que em "P3_.." o numero "3" deve ser substituido pelo número de pagina criada por você
06 - Neste ponto você deve ter a região SEARCH com os seguintes ITEMS, nesta ordem, em uma única linha:
P3_DATA_INI (campo data)
P3_DATA_FIM (campo data)
P3_GO (botao GO)
P3_RESET (botao RESET)
07 - Entre na região do relatorio SQL criado por você (ex: REPORT). Entre em REGION DEFINITION->SOURCE (PAGE RENDERING).
08 - Substitua novamente a querie existente nesta pagina (REGION SOURCE) pela querie descrita no passo 02;
09 - Edite o processo RESET REPORT SEARCH em PROCESSES (PAGE PROCESSING). Rescreva a area SOURCE->PROCESS, colocando "P3_DATA_INI,P3_DATA_FIM" neste campo (lembrando que "3" deve ser substituido pelo numero da página criada por você.
10 - Pronto, você terá um relatório parametrizado. Se os campos de DATA INICIO e DATA FIM ficarem em branco o relatorio apresentará todos os empregados. Se você informar datas e pressionar GO, o relatório mostrará somente os registros que atendam ao critério de data. Se você pressionar RESET, os campos de data serãolimpos e você visualizará todos os funcionários novamente.
Espero que este pequeno exemplo ajude você na construção de relatórios parametrizados.
Boa sorte,
Sergio Coutinho