Seleção de Valor para Query Automaticamente

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
lucasfaria88
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Qui, 07 Ago 2008 2:57 pm
Localização: SP
Analista/Programador PL/SQL Pleno

Boa tarde galera!

Estou com uma dúvida aqui.
Gostaria de saber se é possível abrir uma consulta de um Data Block já no modo Enter_Query com algum valor(restrição da consulta) no campo, assim sendo o usuário só precisaria aperta F8 para executar a consulta com o determinado valor no campo.

eu tentei fazer o seguinte:
no When-New-Block-Instance eu coloquei o seguinte
Enter-Query;
:tabela.campo := Valor;

Só que não funcionou, porque ele só joga o valor quando for inserir o registro.

alguém sabe algum modo de fazer isso?

Valeu!
rodfbar
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 241
Registrado em: Ter, 09 Out 2007 11:15 am
Localização: Batatais - SP

não sei se entendi muito bem...
mas você tentou colocar na trigger pre-query do bloco?
davidmeloboy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Sex, 05 Set 2008 1:53 pm
Localização: Parobé - RS
Contato:
David.

crie a trigger key-exeqry a nível de bloco e faça o sequinte
quando f8 for pressionado vai fazer o seguinte

limpa o bloco
clear_block;

testa se o campo não for nulo
IF (:bloco.campo IS NOT NULL)
THEN
variavel recebe restricao
v_where := v_where || ' AND bloco.campo = retricao';
END IF;


propriedade where_clause do bloco recebe a restricao
set_block_property('bloco', where_clause, v_where);

executa a query
do_key('EXECUTE_QUERY');

END;

obs: fazer a propriedade where_clause receber null quando entrar em modo de consulta.
Avatar do usuário
NightSpy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Ter, 09 Set 2008 4:18 pm
Localização: SP

Se entendi direito, acho que colocando a restrição no WHERE do bloco já resolveria não?!
davidmeloboy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 54
Registrado em: Sex, 05 Set 2008 1:53 pm
Localização: Parobé - RS
Contato:
David.

Sim, mais ficaria fixo na where do bloco!
Se é assim que você quer resolveria!
Mas se você não quer a where fixa o código acima resolveria
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

Uma forma é criar um CAMPO num outro bloco não-base-table.

Ali o usuário pode colocar alguma coisa que ele deseja filtrar.
Daí no WHERE do seu bloco, você testa se o campo está NULO, não faz nada... Se não estiver NULO, você usa esse valor no filtro...

é uma solução meio baca... Mas funciona
Avatar do usuário
NightSpy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Ter, 09 Set 2008 4:18 pm
Localização: SP

legal a idéia do dr_gori, faço muito disso, só não crio outro bloco, faço nele mesmo , tiro o campo do canvas e digo q apenas ele é não-base-table
lucasfaria88
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Qui, 07 Ago 2008 2:57 pm
Localização: SP
Analista/Programador PL/SQL Pleno

Valeu pelas dicas galera...
acho que vou usar a dica do dr_gori, pois o campo de outra tabela não ficaria nulo ao entrar no modo enter_query,,,
na dica do dm_oracle não entendi muito bem pois ao entrar no modo enter_query todos os campos da database ficam nulos...

valeu pelas dicas abraços!

:-o
Responder
  • Informação
  • Quem está online

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