Problemas

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…

[code]
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("");	
				}}
			}
					);[/code]

segue aki tmb o validador de cpf para darem suas opinioes

[code]
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;  
            }  
        }  
    }  
}  

} [/code]

VLW!

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

[code]
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© imprime “INSERIDO COM SUCESSO!\n”;
else imprime “NAO INSERIDO!\n”;
}else{
imprime “O RG TA ERRADO\n”;
}
}else{
imprime “O CPF TA ERRADO\n”;
}[/code]

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

DADOS ta se referindo ao q??

vlw

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);  

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

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.

problema resolvido…vlw