MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Função conferir Chave da Nota fiscal eletrônica de entrada

    Compartilhe

    Junior Meireles
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 56
    Registrado : 13/08/2010

    Função conferir Chave da Nota fiscal eletrônica de entrada

    Mensagem  Junior Meireles em Qua 8 Abr - 18:46

    Boa noite,

    Estou desenvolvendo para meu escritório de contabilidade um sistema simples para registro de entradas de notas fiscais eletronica, mas estou me deparando com uma dificuldade de encontrar um função que me confira se a ao inserir o numero chave de acesso da NF, esta chave esta correta. Alguém teria esta função para me disponibilizar que conferisse se a chave digitada esta correta?. Procurei em alguns lugares mas não consegui adpatar
    Desde já agradeço a quem possa me ajudar

    ACCESS 2003
    Windows XP

    Junior Meireles
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 56
    Registrado : 13/08/2010

    Re: Função conferir Chave da Nota fiscal eletrônica de entrada

    Mensagem  Junior Meireles em Sab 11 Abr - 23:11

    Vou tentar explicar melhor o que preciso:
    Toda NFe tem uma Chave de Acesso composto com 44 numeros
    e tenho um campo em meu formulario onde digito esta chave.
    Exemplo de uma chave valida: 31141017155342001155550010000035041910810952
    O que eu preciso é de uma função que verifique se esta chave digitada
    no no campo txtCheveAcesso em meu formulario é valida ou não
    Achei essa função neste
    site "http://programscomputer.blogspot.com.br/2011/05/validacao-da-chave-nf-e-vbnet.html"
    e como não sou muito bom em VB
    não estou conseguindo adpatara função abaixo:

    Private Function validachavenfe(ByVal chave As String)

    'Pausa para explicação
    'Dim Vetor(4) As Integer Define um array com 5 elementos iniciados com zero
    'Dim Vetor As Integer = new Integer(4) {} Define um array com 5 elementos iniciados com zero
    'Dim Vetor() As Integer = {1, 2, 3, 4, 5} Define um array com 5 elementos e atribui valores a cada elemento
    'Dim Vetor As Integer = new Integer(4) { 0, 1, 2, 3, 4} Define um array com 5 elementos e atribui valores a cada elemento
    'Redim Vetor(10) Redimensiona o array Vetor para 11 elementos
    'ReDim Preserve Vetor(10) Redimensiona o array Vetor para 11 elementos


    Vetor que irá receber os dígitos da chave
    Dim Numero(42) As Integer

    Vetor com o peso de cada um dos dígitos
    Dim pesos() As Integer = {4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2}

    Dim soma As Integer = 0

    Dim i As Integer

    Dim resultado1 As Integer

    Atribuindo ao vetor cada valor da chave até o indice 43.

    For i = 0 To Numero.Length - 1
    Numero(i) = CInt(chave.Substring(i, 1))
    Next

    Multiplica os valors da chave pelo seu peso e soma o resultado.

    For i = 0 To Numero.Length - 1
    soma = soma + (Numero(i) * pesos(i))
    Next

    Efetua o resto da divisão

    soma = soma - (11 * (Int(soma / 11)))

    Como regra da validação se o resultado for 0 ou 1 o digito verificador tem que ser igual a 0

    If soma = 0 Or soma = 1 Then

    resultado1 = 0
    Else
    Se for maior que 1 tem que diminuir de 11;
    resultado1 = 11 - soma
    End If


    Verifica se o resultado é igual ao ultimo digito e retorna true ou false

    If resultado1 = CInt(chave.Substring(43, 1)) Then
    'aqui poderia me dar uma mensagem tipo chave valida
    Return True
    Else
    'aqui poderia me dar uma mensagem tipo chave invalida
    Return False
    End If

    'Fim da Função
    End Function



    Agradeço a quem puder me ajudar a definir esta função

      Data/hora atual: Qua 7 Dez - 14:14