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