Redirecionar ou ocultar itens na falta de dados

Oracle Application Express - web application development tool (antigamente conhecido como Oracle HTML-DB)
Responder
carlynhos77
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 172
Registrado em: Seg, 24 Out 2016 7:20 pm

Ola, boa tarde...

Tenho uma validação que é utilizada para retorna determinado dados no carregamento da pagina, conforme o critério, porém, ocorre d as vezes não ser retornado nenhum dados. tem alguma forma de, senão retornar dados, via código, seja redirecionado para outra pagina? ou ocultar itens da pagina que esta sendo carregada?

O que ocorre, a tela é para lance de pregão presencial, senão há lances, não há rodadas, então queria q não havendo lance já fosse direcionado para outra pagina, ou então, a pagina até poderia ser carregada, mas que via código eu ocultasse alguns itens o botões...
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Hoje em dia tem o REDIRECT URL:
https://docs.oracle.com/database/apex-5 ... #AEAPI2324

Antigamente eles faziam assim no PLSQL:

Selecionar tudo

Declare
  category varchar2(10);
BEGIN
  select emp_dep into category from emp where empid = :P101_USERNAME;
exception when NO_DATA_FOUND then 
    htp.init;
    owa_util.redirect_url('f?p=&APP_ID.:1:&APP_SESSION.:::P1_USERID:&USER_ID.');
    apex_application.stop_apex_engine;
END IF;
carlynhos77
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 172
Registrado em: Seg, 24 Out 2016 7:20 pm

ola, tentei assim:

Selecionar tudo

Declare
  p_url varchar2(150);
BEGIN
  select CODIGO_PROPONENTE 
      INTO :P27_COD_PROPONENTE
      from LIC_LICITACAO_ITENS_PREGAO
      where VALOR_LANCE = (SELECT MAX(VALOR_LANCE) FROM LIC_LICITACAO_ITENS_PREGAO
                          where 
                          CODIGO_LICITACAO = :G_NR_LICITACAO and
                          ID_CIDADE = :G_ID_CIDADE and
                          LOTE = :P27_GUARDA_LOTE and
                          CODIGO_ITEM = :P27_GUARDA_CODIGO_ITEM and
                          MOSTRAR_TELA_LANCE = '1'
                          ) AND 
                          CODIGO_LICITACAO = :G_NR_LICITACAO and
                          ID_CIDADE = :G_ID_CIDADE and
                          LOTE = :P27_GUARDA_LOTE and
                          CODIGO_ITEM = :P27_GUARDA_CODIGO_ITEM and
                          MOSTRAR_TELA_LANCE = '1';
exception when NO_DATA_FOUND then 
    apex_util.redirect_url (p_url => 'http://www.oracle.com/');

end;

mas verifiquei, não esta retornando os dados, porém, não redirecionou pra lugar nenhum... o q ta d errado?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Devia funcionar.
Tenta adicionar na sua cláusula where algo: Veja este exemplo:
https://jaris.tilaa.cloud/apex/f?p=BLOG ... 0346018314
Here is how you can redirect user to another page using PL/SQL if APEX classic report not return rows. You can do same whit e.g. JavaScript, but sometimes it is just better use PL/SQL. JavaScript runs client side and users might avoid redirect with different methods.

I did get idea for this blog post from OTN forum post.

In example I did create classic report from query:

Selecionar tudo

SELECT empno
    ,ename
    ,job
    ,mgr
    ,hiredate
    ,sal
    ,comm
    ,dname
    ,loc
    ,(SELECT APEX_UTIL.SAVEKEY_VC2('Y') FROM DUAL) AS DUMMY -- Save value if query return rows
FROM (
SELECT e1.empno
    ,e1.ename
    ,e1.job
    ,e2.ename AS mgr
    ,e1.hiredate
    ,e1.sal
    ,e1.comm
    ,d.dname
    ,d.loc
FROM emp e1
LEFT JOIN emp e2
    ON e1.mgr = e2.empno
JOIN dept d ON e1.deptno = d.deptno)
WHERE (
 instr(upper("ENAME"),upper(nvl(:P33_REPORT_SEARCH,"ENAME"))) > 0  or
 instr(upper("JOB"),upper(nvl(:P33_REPORT_SEARCH,"JOB"))) > 0  or
 instr(upper("MGR"),upper(nvl(:P33_REPORT_SEARCH,"MGR"))) > 0  or
 instr(upper("DNAME"),upper(nvl(:P33_REPORT_SEARCH,"DNAME"))) > 0  or
 instr(upper("LOC"),upper(nvl(:P33_REPORT_SEARCH,"LOC"))) > 0 
)
In report query function APEX_UTIL.SAVEKEY_VC2 saves value to APEX package global variable, if query returns rows.

We can check that variable value in After Regions process using function APEX_UTIL.KEYVAL_VC2, and redirect user if value is null.

Example code for After Regions process:

Selecionar tudo

IF APEX_UTIL.KEYVAL_VC2 IS NULL THEN
  APEX_UTIL.REDIRECT_URL('f?p=&APP_ID.:34:&APP_SESSION.');
END IF;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes