Dúvida sobre List_item no estilo Pop_list.

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Jeremias
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Seg, 15 Fev 2010 9:58 pm
Localização: São Paulo - SP

Prezados,

Estou com problemas com um list_item no estilo Pop_list.

Tenho um critério de classificação em outro campo, a qual toda vezes que faço uma alteração nele, um GO_ITEM me direciona para este list_item.

O problema é que tenho fazer com que o usuário ao cair nesse list_item, não saia dele enquanto preenche-lo. Ou seja, ao fazer um update em outro campo, este não poderá ser NULL.

Me aconselharam a fazer uma trigger POST-TEXT_ITEM.....mas para list_item não tenho ela para ser usada.

Alguéms sabe o que devo fazer, ou qual trigger devo usar ??? para tornar esse item_list obrigatório.

OBS.: Já coloquei SIM nas propriedades para tornar-lo obrigatório....porém pede que tenha um valor inicial ??????.....ou seja, talvez não seja esse o caminho.
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Utilize uma WHEN-VALIDATE-ITEM deve funcionar
Diego_Mello
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 229
Registrado em: Sex, 05 Set 2008 2:59 pm
Localização: Igrejinha - RS
Diego Mello
Igrejinha - RS
www.twitter.com/diegolmello

Faz assim...
Quando tu alterar aquele outro campo, tu obriga a execução da trigger WHEN-VALIDATE-ITEM do teu list_item.
Faz assim:

Selecionar tudo

set_item_property('teu_list_item', item_is_valid, property_false);
No WHEN-VALIDATE-ITEM do list_item, tu dá uma mensagem e tranca no campo. :D
Jeremias
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Seg, 15 Fev 2010 9:58 pm
Localização: São Paulo - SP

Diego,

Até peço desculpas pela pergunta de novato..rss, mas como faço para trancar o campo lá na trigger WHEN-VALIDATE-ITEM ???

Estou tentando mas não consigo.

Abs,
Diego_Mello
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 229
Registrado em: Sex, 05 Set 2008 2:59 pm
Localização: Igrejinha - RS
Diego Mello
Igrejinha - RS
www.twitter.com/diegolmello

Não peça desculpas, meu caro!
Todos fomos novatos um dia. Ou não. :P

Baseando-se pelo basicão, tu pode fazer algo assim:

Selecionar tudo

BEGIN
	IF :teu_campo IS NULL THEN
		message('Campo deve ser informado!');
		RAISE form_trigger_failure;
	END IF;
END;
Mas assim...
Nem sempre o teu list_item deverá ser informado, não é?
Então eu te sugiro criar um parâmetro (Nodo PARAMETER) e setá-lo em tempo de execução.

Criado o parâmetro, vamos ao código.
Lembra daquele set_item_property ali de baixo?
Adiciona esta linha ao código:

Selecionar tudo

:parameter.obriga_list_item := 1;
Na WHEN-VALIDATE-ITEM do list_item, faz assim:

Selecionar tudo

BEGIN
  IF :teu_campo IS NULL AND
     :parameter.obriga_list_item = 1
  THEN
    :parameter.obriga_list_item := 0;
    message('Campo deve ser informado!');
    RAISE form_trigger_failure;
  END IF;
END;
Mas isso é só se nem sempre ele será obrigatório.
Testa ai e me diz que deu certo hahaha! :D
Jeremias
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Seg, 15 Fev 2010 9:58 pm
Localização: São Paulo - SP

Funcionou Diego !!! :D

Eu altero o "primeiro" campo, depois caio no "segundo" e só posso sair de lá se não for NULL.

Agora me gerou outro problema....rss, se eu salvar.....fica gravado o item de list no "SEGUNDO" campo....porém eu posso alterar o primeiro campo quando quiser (que tb. é um item de lista)....e o segundo não poderei mais torná-lo NULL

Ou seja, terei que fazer com que o primeiro campo seja alterado somente 1 vez...é possível isso ????
Diego_Mello
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 229
Registrado em: Sex, 05 Set 2008 2:59 pm
Localização: Igrejinha - RS
Diego Mello
Igrejinha - RS
www.twitter.com/diegolmello

No teu primeiro item, seta o teu segundo pra REQUIRED caso se encaixe no teu "critério de classificação".
Assim:

Selecionar tudo

IF :primeiro_campo = <criterio> THEN
  set_item_property('segundo_campo', item_is_valid, property_false);
  set_item_property('segundo_campo', REQUIRED, property_true);
ELSE
  set_item_property('segundo_campo', REQUIRED, property_false);
END IF;
Agora vai :D
Jeremias
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Seg, 15 Fev 2010 9:58 pm
Localização: São Paulo - SP

Valeu Diego, era isso. :D

Deu certo !!!!!!
Responder
  • Informação
  • Quem está online

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