FORMS, REGISTRO não APARECE DEPOIS DE SALVO;

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
dante
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Qui, 24 Jan 2008 1:58 pm
Localização: são paulo sp
Danilo Maranini
Aprendendo e Compartilhando

tenho dois blocos
PARTICIPANTES
ENDERECO_ADICIONAL

QUANDO SALVO 1 participante seu endereco é salvo na tabela endereco adicional.

Ambos estao relacionados...

Está salvando ok

consigo salvar N endereços para 1 participante.


porem

quando eu carrego o participante X e salvo 2 ou mais endereços para, ele some do forms.

Exemplo.

Carrego o participante 50 que possui um endereço.

Crio mais um endereço para ele. na hora eu ate consigo navegar entre os registros de endereço adicional.
porem quando eu vejo este forms e abro, carrego todos os registros e aquele que eu acabei de inserir novos endereços não aparece.

porem nas tabelas endereco_adicional e participantes eu visualizo esses enderecos e participante normalmente

alguém sabe o porque disso???

vlw

:(
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Estes blocos são master/detail?

Chegou à verificar se não está dando nenhuma mensagem de erro no rodapé?
dante
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Qui, 24 Jan 2008 1:58 pm
Localização: são paulo sp
Danilo Maranini
Aprendendo e Compartilhando

O que acontece na verdade é que ele ignora os registros anteriores.

quando eu mando filtra pela lov.
ele carrega todos.

se eu cadastro endereço adicional, fecho e depois abro

fazendo o mesmo procedimento com a lov

ele não carrega este registro que carrego anteriormente

porem na tabela esta OK.

registros insertados e relacionados.

Realmente não sei o que fazer.

se puder me ajuda fico muito agradecido


:(
gokden
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 264
Registrado em: Dom, 19 Ago 2007 8:18 pm
Localização: Ribeirão Preto - SP
Lucas de Souza

OCA Developer
Analista de sistemas

verifica se não existe nenhuma PRE-QUERY no bloco....

e checa também se a relação entre as duas está certa mesmo....

porque se você consegue ver o registros inseridos, só pode ser alguma dessas 2 coisas atrapalhando....

tenta comentar todas as triggers do bloco e veja se vai trazer os registros normais.....
ai depois você vai descomentando uma a uma para ver se é isso mesmo...

:wink:
dante
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Qui, 24 Jan 2008 1:58 pm
Localização: são paulo sp
Danilo Maranini
Aprendendo e Compartilhando

Fiz isso.


Anulei (null;) todas triggers...

mas não resolveu, muitos dos filtro são feito nela.

voltando item a item. o problema procegue com ow sei as triggers habilitadas.

esotu usando

bloco participante
pre-insert

Selecionar tudo

codigo
BEGIN	 	
SELECT NVL(MAX(COD_PARTICIPANTE),0)+1
  INTO :PARTICIPANTES.COD_PARTICIPANTE
  FROM PARTICIPANTES;
  :PARTICIPANTES.DTULTIMAATUALIZACAO := TO_DATE(SYSDATE,'DD-MM-YY');
END;


IF :PARTICIPANTES.EMAIL_COM IS NOT NULL AND :PARTICIPANTES.E_MAIL_PART IS NOT NULL THEN
	:PARTICIPANTES.RECEBE_EMAIL := 'N';
END IF;

pre-update

Selecionar tudo

BEGIN
	:PARTICIPANTES.DTULTIMAATUALIZACAO := TO_DATE(SYSDATE,'DD-MM-YY');
END;

begin
update endereco_adicional
set REGIAO_CIDADE = :ENDERECO_ADICIONAL.REGIAO_CIDADE,
		CDPAIS = :ENDERECO_ADICIONAL.CDPAIS,
		CDESTADOR 	= :ENDERECO_ADICIONAL.CDESTADOR,
		BAIRRO = :ENDERECO_ADICIONAL.BAIRRO,
		LC_COD_CIDADE = :ENDERECO_ADICIONAL.LC_COD_CIDADE,
		CEP = :ENDERECO_ADICIONAL.CEP,
		ENDERECO = :ENDERECO_ADICIONAL.ENDERECO,
		COD_TIPO_END = :endereco_adicional.COD_TIPO_END,
		COD = :PARTICIPANTES.COD_PARTICIPANTE
WHERE 
COD_TIPO_END = :endereco_adicional.COD_TIPO_END and 
COD = :PARTICIPANTES.COD_PARTICIPANTE;
		
exception when others then 
	msg_alert('Erro Oracle: ' || SQLERRM, 'F', TRUE);
end;
post query

Selecionar tudo

begin

:endereco_adicional.cod := :participantes.cod_participante;


select cod, regiao_cidade, cdpais, cdestador, bairro, lc_cod_cidade, cep, endereco, cod_tipo_pessoa,
				tel_comercial, ddd_comercial, ddi_comercial, ramal_comercial, tel_fax, ddd_fax, ddi_fax,
					ramal_fax, cod_pais_fax, cod_tipo_end
			into    
				:endereco_adicional.cod, :endereco_adicional.regiao_cidade, :endereco_adicional.cdpais ,:endereco_adicional.cdestador,
					:endereco_adicional.bairro, :endereco_adicional.lc_cod_cidade, :endereco_adicional.cep,
						:endereco_adicional.endereco, :endereco_adicional.TIPO_PESSOA, :endereco_adicional.tel_comercial,
							:endereco_adicional.ddd_comercial, :endereco_adicional.ddi_comercial, :endereco_adicional.ramal_comercial,
						:endereco_adicional.tel_fax, :endereco_adicional.ddd_fax, :endereco_adicional.ddi_fax, :endereco_adicional.ramal_fax,
					:endereco_adicional.cod_pais_fax, :endereco_adicional.cod_tipo_end
From endereco_adicional
where cod = :participantes.cod_participante;


exception when others then
	msg_alert('Erro Oracle: ' || SQLERRM , 'f', true);

end;




no bloco endereco adicional

Selecionar tudo

begin
  
  select descricao
    		into :endereco_adicional.cod_end
    	from tipo_endereco
    		where cod_tipo_end = :endereco_adicional.cod_tipo_end;
    
         
 select cdescricao
 			into :ENDERECO_ADICIONAL.v_nome_cidade
 	from cidade
 		where cdCidade = :ENDERECO_ADICIONAL.lc_cod_cidade;
    

         
select cdescricao 
     into :ENDERECO_ADICIONAL.desc_estado
  from estado
		where cdestado = :ENDERECO_ADICIONAL.cdestador;
		
select cdescricao 
			into :ENDERECO_ADICIONAL.desc_pais
from pais
	where cdpais = :ENDERECO_ADICIONAL.cdpais; 
		
		
exception when others then
	msg_alert('Erro Oracle: ' || SQLERRM, 'F', TRUE);

end;

campo
COD_ITEM_END
que esta no bloco ENDERECO_ADICIONAL



post-text-item

Selecionar tudo

BEGIN


 
IF :endereco_adicional.COD = :PARTICIPANTES.COD_PARTICIPANTE THEN
	

		 	
begin		
    select DESCRICAO
    		into :endereco_adicional.cod_end
    	from tipo_endereco
    		where cod_tipo_end = :endereco_adicional.cod_tipo_end;
		exception when no_data_found then
	 msg_alert('em branco: tipo_endereco', 'F', true);
end;
		
		begin
				select cdescricao
 					into :ENDERECO_ADICIONAL.v_nome_cidade
 				from cidade
 					where cdCidade = :ENDERECO_ADICIONAL.lc_cod_cidade;
		exception when no_data_found then
	 msg_alert('Em branco: Cidade', 'F', true);
	 end;
		
				begin
				select 	cdescricao 
    	 		into :ENDERECO_ADICIONAL.desc_estado
  			from estado
					where cdestado = :ENDERECO_ADICIONAL.cdestadoR;
		exception when no_data_found then
	 msg_alert('em branco: estado', 'F', true);
end;


begin
				select cdescricao 
						into :ENDERECO_ADICIONAL.desc_pais
				from pais
					where cdpais = :ENDERECO_ADICIONAL.cdpais; 
		exception when no_data_found then
	 msg_alert('Em Branco: pais', 'F', true);
		end;
		
		ELSE
			NULL;

END IF;


exception 
when others then
	msg_alert('Erro Oracle: ' || SQLERRM, 'F', TRUE);

end;
só!!
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Por via das dúvidas, dá uma verificada, no Relation, na Opção:
Prevent Masterless Operation

Outra vez, um amigo me deu a dica, esqueceu de marcar e, os filhos ficaram meio que "perdidos".
dante
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Qui, 24 Jan 2008 1:58 pm
Localização: são paulo sp
Danilo Maranini
Aprendendo e Compartilhando

esta referencia que você falo esta habilitada com NO
coloquei YES e mesmo assim deu o erro.

Estava olhando um lov que criei apenas para ver o que me trás

e os registtros que não aparecem estao na lov normalmente.

não pode ser possivel que eles não carregam..

por é como se eles não existise

o meu select faz * from tabela

não filtra ... ele só vai no pre-query e liga cod_par = cod

e referencia em um select quais campos tem que ser carregado da tabela endereço.
gokden
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 264
Registrado em: Dom, 19 Ago 2007 8:18 pm
Localização: Ribeirão Preto - SP
Lucas de Souza

OCA Developer
Analista de sistemas

hmmm cara, acho qui sei o seu problema....
uma vez aconteceu isso comigo também =D

mais no meu caso não tinha relatio nenhum...
então não sei se vai ser o mesmo com você...

as vezes, tem algum campo no seu bloco, que está como REQUIRED = YES
más no banco esse campo está como NULL....

e nesse campo, tem alguma validação nele... na post-query, ai o forms não encontra o registro =D

verifica se é isso mesmo...

=D
dante
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Qui, 24 Jan 2008 1:58 pm
Localização: são paulo sp
Danilo Maranini
Aprendendo e Compartilhando

era isso mesmo que você disse!!

vlw cara!!

te devo uma
Responder
  • Informação
  • Quem está online

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