Usuário com melhor resposta
Verificar ou "Forçar" o usuario a clicar no botão validar no caso é CPF ou CNPJ.

Pergunta
-
OLa Pessoal, Estou desenvolvendo aplicação pra TCC em windows forms, tentei diversas soluções, para sanar meu problema que é o seguinte. "Ficarei agradecido se alguem indicar-me um solução."
OBJETIVO: Ao inserir informações sobre fornecedor, o usuario tem que validar o CPF ou CNPJ, para fazer a tal Validação, deve clicar sobre o botão validar, para isso ficaria melhor se quem for usar fosse obrigado a validar o CPF ou CNPJ a fim de evitar a inconsistencia dos dados no BD, e se enquanto não validasse a operação não pode continuar, isso que não estou conseguindo implementar.
PROBLEMA: Mesmo alertando e reconhecendo que o CPF ou CNPJ é falso, aplicação continua e insere os dados mesmo assim.
OBSERVAÇÂO: Em relação a validação o mesmo ja reconhece, se o CPF ou CNPJ é verdadeiro ou não esta tudo ok.
AS CLASSES UTILIZADAS PARA VALIDAR (abaixo) Primeira é CNPJ, segunda classe é CPF
public static class ValidaCNPJ //valida CNPJ
{
public static bool IsCnpj(string cnpj)
{
//variaveis declaradas
int[] multiplicador1 = new int[12] { 5,4,3,2,9,8,7,6,5,4,3,2};
int[] multiplicador2 = new int[13] { 6,5,4,3,2,9,8,7,6,5,4,3,2};
int soma;
int resto;
string digito;
string verfiCnpj;
cnpj = cnpj.Trim();
cnpj = cnpj.Replace(".", "").Replace("-", "").Replace("/", "");
if (cnpj.Length != 14)
return false;
verfiCnpj = cnpj.Substring(0, 12);
soma = 0;
for (int i = 0; i < 12; i++) //for encontra primeiro digito verificador
soma += int.Parse(verfiCnpj[i].ToString()) * multiplicador1[i];
resto = (soma % 11);
if (resto < 2)
resto = 0;
else
resto = 11 - resto;
digito = resto.ToString();
verfiCnpj = verfiCnpj + digito;
soma = 0;
for(int i = 0; i < 13; i++) // aqui ja tem o primeiro digito verificador ,agora encontra o segundo utilizando o primeiro ja encontrado <13;
soma += int.Parse(verfiCnpj[i].ToString()) * multiplicador2[i];
resto =(soma % 11);
if(resto < 2 )
resto = 0;
else
resto = 11 - resto;
digito = digito + resto.ToString();
return cnpj.EndsWith(digito);
}
}public class ValidaCPF //esta classe valida o CPF
{
public static bool IsCpf(string cpf)
{
//declaracao das variaveis
int[] multiplicador1 = new int[9] { 10, 9, 8, 7, 6, 5, 4, 3, 2};
int[] multiplicador2 = new int[10] { 11, 10, 9, 8, 7, 6, 5, 4, 3, 2};
string veriCpf; //tempCpf
string digito;
int soma;
int resto;
cpf = cpf.Trim();
cpf = cpf.Replace(".", "").Replace("-","");
if (cpf.Length != 11) //verifica quantdade de digitos
return false;
veriCpf = cpf.Substring(0,9);
soma = 0;
for (int i = 0; i < 9; i++) //encontra o primeiro digito verifacador
soma += int.Parse(veriCpf[i].ToString()) * multiplicador1[i];
resto = soma % 11;
if (resto < 2)
resto = 0;
else
resto = 11 - resto;
digito = resto.ToString();
veriCpf = veriCpf + digito;
soma = 0;
for (int i = 0; i < 10; i++) //encontra segundo digito verificador agora já utiliza o primeiro pra encontrar segundo digito sendo <10;
soma += int.Parse(veriCpf[i].ToString()) * multiplicador2[i];
resto = soma % 11;
if (resto < 2)
resto = 0;
else
resto = 11 - resto;
digito = digito + resto.ToString();
return cpf.EndsWith(digito);
}
}ABAIXO POSTAREI O CODIGO E PARA VALIDAR QUE FAZ REFERENCIA AS CLASSES ACIMA CITADAS:
//FUNCAO QUE VALIDA.
private void Validar()
{
string valor = mskCnpj.Text;
if (rdbCnpj.Checked)
{
if (Lacticinio.ValidaCNPJ.IsCnpj(valor))
{
mensagem = "O número de CNPJ é Válido:...";
}
else
mensagem = "O número de CNPJ é Invalido:.. ";
}
else if (rdbCpf.Checked)
{
if (Lacticinio.ValidaCPF.IsCpf(valor))
{
mensagem = "O número de CPF Válido !";
}
else
{
mensagem = "O número de CPF é Inválido !";
}
}
else
{
mensagem = "Informe os números e seu tipo para Validação !";
}
MessageBox.Show(mensagem, "Validação");
}//FUNCAO DO BOTAO GRAVAR (ABAIXO):
private void btnGravar_Click(object sender, EventArgs e)
{
if(frmFornecedorProdutos.)
Validar(); //Recebe a funcao validar.
Camadas.BLL.FornecedorProdutos bllFornecedorProdutos = new Camadas.BLL.FornecedorProdutos();
Camadas.Model.FornecedorProdutos oFornPro = new Camadas.Model.FornecedorProdutos();
oFornPro.codigo = Convert.ToInt32(txtcodFornecedor.Text);
oFornPro.nome = txtNome.Text;
oFornPro.cnpj = mskCnpj.Text;
oFornPro.telefone = mskTelefone.Text;
oFornPro.email = txtEmail.Text;
oFornPro.item = txtItem.Text;
DialogResult result;
string msg = "";
if (tipoOper == 'I')
msg = "Confirma Inserção dos Dados?";
else if (tipoOper == 'E')
msg = "Confirma Atualização dos Dados?";
result = MessageBox.Show(msg, "Gravar", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
if (result == DialogResult.Yes)
{
if (tipoOper == 'I')
bllFornecedorProdutos.Insert(oFornPro);
else if (tipoOper == 'E')
bllFornecedorProdutos.Update(oFornPro);
MessageBox.Show("Dados Gravados com sucesso", "Gravar", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
dgvFornecedor.DataSource = bllFornecedorProdutos.Select();
LimparControles();
HabilitarControles(false);
}
Respostas
-
Alison, boa tarde, deixa sua função Validar() retornando um bool...
dai declara uma variável global dentro da classe do form...
bool validado = false;
//clicou no botão validar
validado = ValidarCNPJ();
daí no método de gravar você poe um if
if(validado) { //Gravo no banco } else { //faço qualquer coisa menos gravar... }
Entendeu?
Diego de O. Neves |Analista Desenvolvedor .NET
Microsoft MCP | ITIL® V3 Foundation- Sugerido como Resposta Jean Carlos Galhardi quarta-feira, 30 de julho de 2014 17:50
- Marcado como Resposta Ricardo Barbosa Cortes quarta-feira, 30 de julho de 2014 19:23
Todas as Respostas
-
Alison, boa tarde, deixa sua função Validar() retornando um bool...
dai declara uma variável global dentro da classe do form...
bool validado = false;
//clicou no botão validar
validado = ValidarCNPJ();
daí no método de gravar você poe um if
if(validado) { //Gravo no banco } else { //faço qualquer coisa menos gravar... }
Entendeu?
Diego de O. Neves |Analista Desenvolvedor .NET
Microsoft MCP | ITIL® V3 Foundation- Sugerido como Resposta Jean Carlos Galhardi quarta-feira, 30 de julho de 2014 17:50
- Marcado como Resposta Ricardo Barbosa Cortes quarta-feira, 30 de julho de 2014 19:23
-
Muito Obrigado Diego consegui, fazer a validação como eu queria. Fiz como você sugeriu, variaveis recebendo verdadeiro ou falso deu tudo certo, em sguida na função gravar um " if " confirma a operação se vor vedadeiro continua se não solicita outro dado ao usuario .
Valeu.