Validar CNPJ

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
marthaeloiza
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Seg, 21 Jan 2008 2:07 pm
Localização: São Paulo
Att
Martha Eloiza Fuchida

Olá pessoal estou tentando executar uma validãção de cnpj no forms, mas não vai.
Estou usando forms6i e no When-Validate-Item, estou colocando esse código:
+++++++++++++++++++++++++++++++++++++++++++++++

Selecionar tudo

declare
dados number;
validar1 number;
validar2 number;
	
BEGIN

if :teste_m_cliente.cnpj <> null then
     dados:=rtrim(rtrim(:teste_m_cliente.cnpj));
            if length(dados)=14 then
                 validar1:= (((substr(dados,1,1))*5)+((substr(dados,2,1))*4)+((substr(dados,3,1))*3)+((substr(dados,4,1))*2)+
                         ((substr(dados,5,1))*9)+((substr(dados,6,1))*8)+((substr(dados,7,1))*7)+((substr(dados,8,1))*6)+
                         ((substr(dados,9,1))*5)+((substr(dados,10,1))*4)+((substr(dados,11,1))*3)+((substr(dados,12,1))*2));
                  validar1:=mod(validar1,11);
                       if validar1<2 then
                          validar1:=0;
                        else
                          validar1:=11-validar1;
                       end if;
             else
                 Message('CNPJ faltando número');
                 :teste_m_cliente.cnpj:= null;
                 Synchronize;
                 raise form_trigger_failure;
                                 
                              
             end if;

                      if to_char(validar1)<>substr(dados,13,1) then
                         Message('Número de CNPJ errado');
                          :teste_m_cliente.cnpj:= null;
                           Synchronize;
                           raise form_trigger_failure;    
                         else
                         Message('Primeiro digito correto');
                         :teste_m_cliente.cnpj:= null;
                           Synchronize;
                        
                        end if;

      
      
          if to_char(validar1)= substr(dados,13,1) then
             validar2:= (((substr(dados,1,1))*6)+((substr(dados,2,1))*5)+((substr(dados,3,1))*4)+((substr(dados,4,1))*3)+
                        ((substr(dados,5,1))*2)+((substr(dados,6,1))*9)+((substr(dados,7,1))*8)+((substr(dados,8,1))*7)+
                        ((substr(dados,9,1))*6)+((substr(dados,10,1))*5)+((substr(dados,11,1))*4)+((substr(dados,12,1))*3)+
                        ((substr(dados,13,1))*2));
             validar2:=mod(validar2,11);
                   if validar2<2 then
                          validar2:=0;
                        else
                          validar2:=11-validar2;
                   end if;
                       if to_char(validar2)<>substr(dados,14,1) then
                          Message('Número de CNPJ errado');
                           :teste_m_cliente.cnpj:= null;
                            Synchronize;
                           raise form_trigger_failure;    
                          else
                          Message('Segundo digito correto');
                          :teste_m_cliente.cnpj:= null;
                           Synchronize;
                          
                          end if;
           end if;
      
else
	Message('Dados não pode ser Nulo');
 :teste_m_cliente.cnpj:= null;
  Synchronize;
 raise form_trigger_failure;    
	
end if;
:teste_m_cliente.cnpj:= null;
Synchronize;
                          
      
      End;
+++++++++++++++++++++++++++++++++++++++++++++++
alguém pode me dar um help!
Obrigada.
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Olá Martha,

você poderia postar o erro que está aparecendo??

[]'s
marthaeloiza
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Seg, 21 Jan 2008 2:07 pm
Localização: São Paulo
Att
Martha Eloiza Fuchida

Não erro, simplesmente não valida.
Ele vai para o outro campo e não ocorre nada, mesmo saindo ele não vai, nenhuma mensagem de erro.
Grata

Martha Fuchida
marthaeloiza
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Seg, 21 Jan 2008 2:07 pm
Localização: São Paulo
Att
Martha Eloiza Fuchida

Olá pessoal,
Fiz umas alterações na trigger, agora o que acontece é o seguinte. O alerta está aparecendo quando eu saio do forms, quando eu dou para sair do forms ele aparece o alerta, não tem como isso acontecer quando eu mudo o foco, quando termino de digitar no campo cnpj ele valida e mostra a mensagem(alerta).
Ainda utilizando When-Validate-Item

Selecionar tudo

declare
	dados number;
	validar1 number;
	validar2 number;
	Alerta number;
	
BEGIN

dados:=rtrim(rtrim(:teste_m_cliente.cnpj));
     
     
            if length(dados)=14 then
                 validar1:= (((substr(dados,1,1))*5)+((substr(dados,2,1))*4)+((substr(dados,3,1))*3)+((substr(dados,4,1))*2)+
                         ((substr(dados,5,1))*9)+((substr(dados,6,1))*8)+((substr(dados,7,1))*7)+((substr(dados,8,1))*6)+
                         ((substr(dados,9,1))*5)+((substr(dados,10,1))*4)+((substr(dados,11,1))*3)+((substr(dados,12,1))*2));
                  validar1:=mod(validar1,11);
                       if validar1<2 then
                          validar1:=0;
                        else
                          validar1:=11-validar1;
                       end if;
             else
                 set_alert_property('ALERTA_ERRO',ALERT_MESSAGE_TEXT, 'CNPJ faltando número');
                 alerta:=SHOW_ALERT('ALERTA_ERRO');
                 SYNCHRONIZE; 
	               raise form_trigger_failure;
                                 
                              
             end if;

                      if to_char(validar1)<>substr(dados,13,1) then
                         set_alert_property('ALERTA_ERRO',ALERT_MESSAGE_TEXT, 'Número de CNPJ Errado');
                         alerta:=SHOW_ALERT('ALERTA_ERRO');
	                       raise form_trigger_failure;    
                         else
                         set_alert_property('ALERTA_ERRO',ALERT_MESSAGE_TEXT, 'Primeiro digito correto');
                         alerta:=SHOW_ALERT('ALERTA_ERRO');
	                       raise form_trigger_failure;     
                           
                        
                        end if;

      
      
          if to_char(validar1)= substr(dados,13,1) then
             validar2:= (((substr(dados,1,1))*6)+((substr(dados,2,1))*5)+((substr(dados,3,1))*4)+((substr(dados,4,1))*3)+
                        ((substr(dados,5,1))*2)+((substr(dados,6,1))*9)+((substr(dados,7,1))*8)+((substr(dados,8,1))*7)+
                        ((substr(dados,9,1))*6)+((substr(dados,10,1))*5)+((substr(dados,11,1))*4)+((substr(dados,12,1))*3)+
                        ((substr(dados,13,1))*2));
             validar2:=mod(validar2,11);
                   if validar2<2 then
                          validar2:=0;
                        else
                          validar2:=11-validar2;
                   end if;
                       if to_char(validar2)<>substr(dados,14,1) then
                          set_alert_property('ALERTA_ERRO',ALERT_MESSAGE_TEXT, 'Número de CNPJ Errado');
                         alerta:=SHOW_ALERT('ALERTA_ERRO');
	                       raise form_trigger_failure; 
                          else
                          set_alert_property('ALERTA_ERRO',ALERT_MESSAGE_TEXT,'Segundo digito correto');
                          alerta:=SHOW_ALERT('ALERTA_ERRO');
	                        raise form_trigger_failure;     
                           
                          
                          end if;
          end if;
End;
Obrigada.
Martha Fuchida
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Martha, não sei se era esta a dúvida, mas lá vai:

A trigger WHEN-VALIDATE-ITEM por padrão é disparada sempre que o usuário sair do campo atual. Uma exceção seria caso a properiedade "Validation Unit" do Form não estiver setado como "Item" ou "Default".

Nestes casos, as triggers WHEN-VALIDATE-ITEM são disparadas de uma vez, conforme definido nesta propriedade. Pode ser este o motivo da trigger só estar disparando ao sair do form.
marthaeloiza
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Seg, 21 Jan 2008 2:07 pm
Localização: São Paulo
Att
Martha Eloiza Fuchida

Olá Rafael,

meu você é um anjo que caiu do céu, era a propriedade mesmo que estava configurada errada, estava para Form, por isso que não executava minha validação. Obrigada de todo coração, eu não aguentava mais tentar descobrir o motivo de não funcionar....
francisco.angelo
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 78
Registrado em: Qua, 16 Jan 2008 5:06 pm
Localização: RJ

tenta ver nesse link abaixo...

fize da forma que esta lá e no valida certinho...lá tem
codigo para validar o CNPJ e o CPF

http://www.glufke.net/oracle/viewtopic. ... idar+o+cep



francisco Angelo
________________
francisco.angelo@gmail.com
Responder
  • Informação
  • Quem está online

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