Problemas

6 respostas
mymyself

ola.....

criei uma tabela chamada CadastraPaciente onde na hora de cadastrar tenho q validar algumas coisas....ai para mostrar onde tem q ser a validação fiz um encadeamento de 'else if' assim qndo der erro em algum lugar especificado ele mostra a msagem, assim o usuario sabe onde errou....ai consegui um validador de cpf e tava testando ele....porem de proposito deixo o campo CPF sem preencher ai acusa erro..mais se eu preencho acusa o erro novamente..ou seja...preenchendo ou não esta dando acusando erro no campo..alem disso esta gravando os dois cadastros no banco...queria que se desse erro nao grava-se no banco...so se desse a mensagem de 'cadastro efetuado' que grava-se no banco.....
alguem pode me flar algo q possa ser feito....

codigo...

JB0.addActionListener(
				new ActionListener(){
					public void actionPerformed(ActionEvent e){
						conexao BD0 = new conexao();
						BD0.conectar();
						String nome, logradouro, numero, complemento, bairro, municipio, uf, nacionalidade, naturalidade, rg,org-emissor, data_emissao,cpf, data_nasc, estado_civ, sexo, ddd_tel,tel , ddd_cel, cel;

						nome = JT1.getText();
						logradouro = JT2.getText();
                                                numero = JT3.getText();
						complemento = JT4.getText();
						bairro = JT5.getText();
						municipio = JT6.getText();
						uf = (String)JCB0.getSelectedItem();
						nacionalidade = JT8.getText();
						naturalidade = JT9.getText();
						rg = JT10.getText();
						org-emissor = JT11.getText();
						data_emissao = mascaradatae.getText();
						cpf = mascaracpf.getText();
						data_nasc = mascaradatan.getText();
						estado_civ = (String)JCB1.getSelectedItem();
						sexo = (String)JCB2.getSelectedItem();
						ddd_tel = mascaraddd.getText();
						tel = mascaratel5.getText();
						ddd_cel = mascaradddc.getText();
						cel = mascaracel.getText();
						
						uf.getSelectedItem().toString();
						estado_civ.getSelectedItem().toString();
						sexo.getSelectedItem().toString();
						//Verificando_Insercao
						boolean insere = pa.novopaciente(nome, logradouro, numero, complemento, bairro, municipio, uf, nacionalidade, naturalidade, rg,org-emissor, data_emissao,cpf, data_nasc, estado_civ, sexo, ddd_tel,tel , ddd_cel, cel);
						
					    boolean cpf=pa.valida_cpf(cpf);
					    boolean rg=pa.validarrg(rg);
					    boolean data1=pa.verificaData(data_emissao);
					    boolean data2=pa.verificaData(data_nasc);
			    							
						
					if(!insere){
JOptionPane.showMessageDialog(null,"Cadastro não realizado","Mensagem do programa",JOptionPane.ERROR_MESSAGE);
					}else if(!cpf){
JOptionPane.showMessageDialog(null,"Campo CPF Inválido ou não preenchido","Mensagem do programa",JOptionPane.ERROR_MESSAGE);
					}else if(!rg){
JOptionPane.showMessageDialog(null,"Campo RG Inválido ou não preenchido","Mensagem do programa",JOptionPane.ERROR_MESSAGE);	
					}else if(!data1){
JOptionPane.showMessageDialog(null,"Data Inválida","Mensagem do programa",JOptionPane.ERROR_MESSAGE);	
					}else if(!data2){
JOptionPane.showMessageDialog(null,"Data Inválida","Mensagem do programa",JOptionPane.ERROR_MESSAGE);	
					}else{
JOptionPane.showMessageDialog(null,"Cadastro Realizado com sucesso.","Mensagem do programa.",JOptionPane.INFORMATION_MESSAGE);

					nome.setText("");
					logradouro.setText("");
				        numero.setText("");
					complemento.setText("");
					bairro.setText("");
					municipio.setText("");
					 uf.setSelectedItem(null);
					nacionalidade.setText("");
					naturalidade.setText("");
					rg.setText("");
					org-emissor.setText("");
					mascaradatae.setText("");
					mascaracpf.setText("");   
					mascaradatan.setText("");
					estado_civ.setSelectedItem(null);
					sexo.setSelectedItem(null);
					mascaraddd.setText("");
					mascaratel.setText("");
					mascaradddc.setText("");
					mascaracel.setText("");	
					}}
				}
						);

segue aki tmb o validador de cpf para darem suas opinioes

public static boolean valida_cpf(String num_cpf) {  
    num_cpf = num_cpf.replace(".","");  
    num_cpf = num_cpf.replace(",","");  
    num_cpf = num_cpf.replace("/","");  
    num_cpf = num_cpf.replace("-","");  

    if(num_cpf.length() < 11) {  
        return false;  
    } else {  
        Pattern pat = Pattern.compile("\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d\\d");  
        Matcher mtc = pat.matcher(num_cpf);  

        if(!mtc.find()) {  
            return false;  
        } else {  
            int[] validador = new int[] {11,10,9,8,7,6,5,4,3,2}; // Sequencia de validacao  
            int primeiro = 0, segundo = 0; // Digitos validadores  

            // Separa os digitos do cpf, multiplica esses digitos  
            // pelo validador e soma os multiplicados  
            int soma = 0;  
            int[] cpf = new int[num_cpf.length()];  
            for(int i = 0; i < cpf.length; i++) {  
                cpf[i] = Integer.parseInt(String.valueOf(num_cpf.charAt(i)));  

                if(i < (cpf.length-2)) {  
                    soma += (cpf[i] * validador[i+1]);  
                }  
            }  

            // Pega o resto da divisao da soma por 11   
            // Se for menor que dois o primeiro digito eh zero  
            // Se for maior que dois o primeiro digito eh igual a (11 - resto)  
            if((soma % 11) < 2 ) {  
                primeiro = 0;  
            } else {  
                primeiro = (11 - (soma % 11));  
            }  

            if(primeiro != cpf[9]) {  
                return false;  
            } else {  
                // Multiplica os digitos do cpf + o primeiro validador pelo validador e soma os multiplicados  
                soma = 0;  
                for(int i = 0; i < cpf.length-1; i++) {  
                    soma += (cpf[i] * validador[i]);  
                }  

                // Pega o resto da divisao da soma por 11   
                // Se for menor que dois o segundo digito eh zero  
                // Se for maior que dois o segundo digito eh igual a (11 - resto)  
                if((soma % 11) < 2 ) {  
                    segundo = 0;  
                } else {  
                    segundo = (11 - (soma % 11));  
                }  

               if(segundo != cpf[10]) {  
                    return false;  
                } else {  
                    return true;  
                }  
            }  
        }  
    }  
}

VLW!

6 Respostas

francislon

Sua lógica está errada. Eu faria assim:

boolean a = validarCpf(CPF);
boolean b = validarRG(RG);

if(a){ // se o CPF eh valido
  if(b){ // se o RH eh valido
      boolean c = tentaInserir(DADOS);
      if(c) imprime "INSERIDO COM SUCESSO!\n";
      else imprime "NAO INSERIDO!\n";
  }else{
      imprime "O RG TA ERRADO\n";
  }
}else{
    imprime "O CPF TA ERRADO\n";
}
mymyself

entao francislon…
no caso boolean c = tentaInserir(DADOS);

DADOS ta se referindo ao q??

vlw

francislon

DADOS seriam os dados que você está tentando inserir. Seria algo análogo à sua linha:

boolean insere = pa.novopaciente(nome, logradouro, numero, complemento, bairro, municipio, uf, nacionalidade, naturalidade, rg,org-emissor, data_emissao,cpf, data_nasc, estado_civ, sexo, ddd_tel,tel , ddd_cel, cel);
mymyself

entao o encadeamento ta blza…porem ainda esta gravando no banco qndo da erro…

francislon

Você já testou suas funções e viu se elas estão retornando true quando o valor passado está OK e false quando não é válido?

Se sim poste o código para vermos se a lógica está compatível, senão dê uma olhada nas funções separadas e verifique se elas estão funcionando.

mymyself

problema resolvido…vlw

Criado 4 de novembro de 2010
Ultima resposta 5 de nov. de 2010
Respostas 6
Participantes 2