none
Verificar ou "Forçar" o usuario a clicar no botão validar no caso é CPF ou CNPJ. RRS feed

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

    quarta-feira, 30 de julho de 2014 17:20

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 

    quarta-feira, 30 de julho de 2014 17:45

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 

    quarta-feira, 30 de julho de 2014 17:45
  • 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.


    domingo, 17 de agosto de 2014 01:52