Simular pressionamento de F8

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Amigos,
preciso de mais uma dica por favor.
Tem algum jeito de simular o pressionamento de F8 para pesquisar um registro assim que entrar no Form ?
Em qual Trigger seria ?
e Como simular o pressionamento de F8 para trazer o registro existente ?

obrigado,

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

na trigger when-new-form-instance a nivel de form você da:

Selecionar tudo

 go_block('bloco'); 
execute_query;
se você precisar trazer apenas um registro específico você pode setar em tempo de execução o default_where do block

Selecionar tudo

set_block_property('bloco',default_where,'campo_chave1=xxxx and campo_chave2=xxxx'.....)

esta de trazer o proximo registro não entendi o que você precisa
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Ótimo.
É desta segunda opção que eu preciso.
E tem como por exemplo eu estar em um form onde eu gero um numero qualquer de uma sequence e passar este numero para um outro form onde eu faria a pesquisa automatica conforme o seu segundo exemplo ?

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

neste caso você pode passar como parametro para este segundo form na chamada

Selecionar tudo

DECLARE
  pl_id        PARAMLIST;
BEGIN

PL_ID := GET_PARAMETER_LIST(PL_NAME);
--
IF ID_NULL (PL_ID) THEN
  PL_ID := CREATE_PARAMETER_LIST(PL_NAME);
ELSE
   DESTROY_PARAMETER_LIST(PL_ID);
   PL_ID := CREATE_PARAMETER_LIST(PL_NAME);
END IF;

  ADD_PARAMETER(PL_ID, 'PCODIGO', TEXT_PARAMETER,  :CODIGO);
  
   CALL_FORM('NOME DO PROGRAMA', NO_HIDE, DO_REPLACE, NO_QUERY_ONLY, PL_ID);
  --
  DESTROY_PARAMETER_LIST(PL_ID);
END;
no form de destino:
- você criar em PARAMETERS um objeto chamado PCODIGO sem valor inicial;
-na propriedade default_where do bloco você coloca [coluna chave da sua tabela] = nvl(PCODIGO,[coluna chave da sua tabela])
- no when-new-form-instance você da um go_block('bloco'); execute_query;

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

hum...
e para open_form a logica é a mesma... só mudar call_form para open form...

da uma olhadinha no help do forms.
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Ólá,
Tentei colocar o exemplo, mas está ocorrendo o erro:
"Não é possivel criar uma lista de parâmetros.nome não pode ser nulo".

"Não é possivel adicionar parametro PCODIGO a lista de parametros. ID da lista invalido".

o que seria a variavel PL_NAME. Como defino ela ?

obrigado pela ajuda.

Marlon
Responder
  • Informação
  • Quem está online

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