Caros,
Tenho um form de cadastro com três blocos e não quero repertir os valores da lov de cada um dos blocos, ficaria simples ao fazer um validate_item onde recupero da base se o valor já existe, mas quero fazer isso em tempo de execução antes de inserir na base.
Como faço para recuper esse registro anterior sem que o usuário tenha efetivado a inserção? Ou seja se estou no campo BLOCO.ITEM (2) como recupero o valor anterior BLOCO.ITEM (1).
Desde já agradeço a ajuda.
Abs, Myrella
Recuperar valor anterior do item do bloco em tempo execuçao
- dr_gori
- Moderador
- Mensagens: 5013
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Não entendi direito o que você quer fazer 
Você tem 3 blocos. OK.
Tem 3 campos que REPETEM nos 3 blocos ?
Daí você quer popular o primeiro bloco com a LOV e o valor vai popular os outros 2 blocos automático ?

Você tem 3 blocos. OK.
Tem 3 campos que REPETEM nos 3 blocos ?
Daí você quer popular o primeiro bloco com a LOV e o valor vai popular os outros 2 blocos automático ?
-
- Rank: Programador Pleno
- Mensagens: 39
- Registrado em: Sex, 31 Ago 2007 10:42 pm
- Localização: são paulo
Na verdade eu citei os meus tres blocos, por fazer parte de todo o form.
Mas para facilitar a explicação, vamos pensar que eu só tenha um bloco.
O campo que é populado por LOV não pode permitir escolher valores iguais, ou seja se no item 1 escolhi o valor A da LOV, no item 2 não posso escolher de novo o mesmo item.
Obrigada
Mas para facilitar a explicação, vamos pensar que eu só tenha um bloco.
O campo que é populado por LOV não pode permitir escolher valores iguais, ou seja se no item 1 escolhi o valor A da LOV, no item 2 não posso escolher de novo o mesmo item.
Obrigada

- dr_gori
- Moderador
- Mensagens: 5013
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Mas pra isso, basta você colocar na WHEN-VALIDATE-ITEM o teste!
NO BLOCO3
NO BLOCO2
etc
era isso ?
NO BLOCO3
IF bloco3.campo = bloco1.campo
OR bloco3.campo = bloco2.campo
THEN --MENSAGEM --> não pode repetir
.
.
.
END IF;
IF bloco2.campo = bloco1.campo
OR bloco2.campo = bloco3.campo
THEN --MENSAGEM --> não pode repetir
.
.
.
END IF;
era isso ?
-
- Rank: Programador Pleno
- Mensagens: 39
- Registrado em: Sex, 31 Ago 2007 10:42 pm
- Localização: são paulo
Olá thomas,
Ainda não é isso.
Acredito que me expressei errado.
Estou mandando um print da tela.
A idéia é não deixar o usuario colocar duas bases iguais da lov, exemplo dado não posso deixar que ele insira novamente 'TRECHO DESTINO' ou 'OUTRAS BASES'.
O meu problema é que devo fazer isso antes de apertar o botão inserir.
No caso de atualização é fácil pois posso recuperar o valor da base, mas no caso da primeira inserção não estou sabendo como faz pois o valor ainda está em memória ainda não foi fisicalizado.
Desde já obrigada a todos os colegas que se dispõe a ajudar.
My

Ainda não é isso.
Acredito que me expressei errado.
Estou mandando um print da tela.
A idéia é não deixar o usuario colocar duas bases iguais da lov, exemplo dado não posso deixar que ele insira novamente 'TRECHO DESTINO' ou 'OUTRAS BASES'.
O meu problema é que devo fazer isso antes de apertar o botão inserir.
No caso de atualização é fácil pois posso recuperar o valor da base, mas no caso da primeira inserção não estou sabendo como faz pois o valor ainda está em memória ainda não foi fisicalizado.
Desde já obrigada a todos os colegas que se dispõe a ajudar.
My

-
- Rank: Programador Sênior
- Mensagens: 53
- Registrado em: Sex, 18 Mai 2007 11:52 am
- Localização: Descalvado
Olá, caro!
Não sei se entendi direito, mas se forem 2 campos de uma mesmo registro, você pode restringir no grupo de registros da LOV. Algo assim:
Abraço!
Não sei se entendi direito, mas se forem 2 campos de uma mesmo registro, você pode restringir no grupo de registros da LOV. Algo assim:
Select campo
from tabela
where campo <> :bloco.campo1;
- dr_gori
- Moderador
- Mensagens: 5013
- 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
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
OK, entendi.
* Cada vez que você coloca algo num bloco, a informação NÃO VAI instantaneamente pro banco. Fica apenas dentro do FORMS. Por isso, se você fizer assim na LOV:
Isso nunca vai funcionar, pois as informações estão apenas no FORMS.
Uma forma de fazer IR PRO BANCO é colocar o comando POST após sair de cada linha. Esse comando envia pro ORACLE todas alterações feitas no forms. Ou seja, ele literalmente faz "por baixo dos panos" os comandos INSERT INTO tabela OU UPDATE..., etc... de cada alteração feita.
MAS esse comando não faz COMMIT. Ele apenas insere sem comitar.
Dessa forma, você consegue fazer a LOV da forma acima. Dai caso o usuário insira o código 10 na primeira linha, quando for na segunda linha e rodar a LOV, esse código 10 nem vai aparecer na listagem.
* Cada vez que você coloca algo num bloco, a informação NÃO VAI instantaneamente pro banco. Fica apenas dentro do FORMS. Por isso, se você fizer assim na LOV:
select * from tabela
where chave not in (select chave from tabela_do_bloco... )
Uma forma de fazer IR PRO BANCO é colocar o comando POST após sair de cada linha. Esse comando envia pro ORACLE todas alterações feitas no forms. Ou seja, ele literalmente faz "por baixo dos panos" os comandos INSERT INTO tabela OU UPDATE..., etc... de cada alteração feita.
MAS esse comando não faz COMMIT. Ele apenas insere sem comitar.
Dessa forma, você consegue fazer a LOV da forma acima. Dai caso o usuário insira o código 10 na primeira linha, quando for na segunda linha e rodar a LOV, esse código 10 nem vai aparecer na listagem.
-
- Rank: Estagiário Sênior
- Mensagens: 9
- Registrado em: Ter, 11 Nov 2008 6:44 pm
- Localização: São Paulo
Já usei essa do Dr. Gori. Funciona bem!!!
No caso eu usei o BLOCK_STATUS obrigando o usuário a salvar cada alteração antes de inserir outra linha.
Mas em caso de muitos registros não ficaria legal.
Acho que dá pra commitar usando o FORMS_DDL...
Vale a pena tentar!!
Abs.
No caso eu usei o BLOCK_STATUS obrigando o usuário a salvar cada alteração antes de inserir outra linha.
Mas em caso de muitos registros não ficaria legal.
Acho que dá pra commitar usando o FORMS_DDL...
Vale a pena tentar!!
Abs.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 35 visitantes