USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Função para Validar Código de Barras EAN13
ZeuzZ
QUEDAS DO IGUAÇU
PR - BRASIL
Postada em 25/07/2009 10:44 hs            
Pessoal depois de me bater achei está função na web que verifica certinho, então resolvi compartilhar com todos pois foi difícil de achar.

'Função para cálculo de dígito verificador na impressão de etiquetas com código de barra padrão EAN13
'Recebe:- Código cujo dígito precisa ser calculado
'Fornece:- Código completo já com o dígito calculado
'Autor:- Mauro Possatto (Fórum Access)
'Data:- 28/10/97
'Alterações:-
'
Function DVEAN(strCod As Variant) As String

Dim intPar As Integer
Dim intImpar As Integer
Dim intSomaPar As Integer
Dim intSomaImpar As Integer
Dim intTotalSoma As Integer
Dim intDv As Integer
Dim I As Integer

If Len(strCod) <> 12 Or Not IsNumeric(strCod) Or IsEmpty(strCod) Or IsNull(strCod) Then
MsgBox "O Código para cálculo do dígito verificado está errado. Favor corrigir.", vbCritical, "Erro"
Exit Function
End If

intSomaPar = 0
intSomaImpar = 0
intTotalSoma = 0
intDv = 0
For I = 2 To 12 Step 2
intPar = CInt(Mid(strCod, I, 1))
intSomaPar = intSomaPar + intPar
Next

For I = 1 To 11 Step 2
intImpar = CInt(Mid(strCod, I, 1))
intSomaImpar = intSomaImpar + intImpar
Next

intSomaPar = intSomaPar * 3
intTotalSoma = intSomaPar + intSomaImpar

Do While intTotalSoma Mod 10 <> 0
intDv = intDv + 1
intTotalSoma = intTotalSoma + 1
Loop

DVEAN = strCod & CStr(intDv)

End Function

Function SepCaracter(strcampo As String) As String

Dim strTemp As String, I As Integer

strTemp = " "
For I = 1 To Len(strcampo)
strTemp = strTemp & Mid(strcampo, I, 1) & " "
Next
SepCaracter = strTemp

End Function
     
Álvaro
Pontos: 2843
GUARULHOS
SP - BRASIL
ENUNCIADA !
Postada em 27/07/2009 09:27 hs            
Realmente boa dica, bem que vc poderia colocar na parte de dicas do site, más como infelizmente o site está meio que abandonado, o envio ainda deve estar com problemas.
Eu ja tentei enviar várioas coisas e todas deram erros, já coloquei tópicos e aki e nada foi feito, realmente é uma pena

abraço
   
Joptus
não registrado
ENUNCIADA !
Postada em 21/01/2010 11:27 hs   
--sql-server

CREATE FUNCTION dbo.fn_ValidaEAN
    (
    @CodeEAN BIGINT
    )
RETURNS INT
AS
    BEGIN
        DECLARE @dig1           INT,
                @dig2           INT,
                @dig3           INT,
                @dig4           INT,
                @dig5           INT,
                @dig6           INT,
                @dig7           INT,
                @dig8           INT,
                @dig9           INT,
                @dig10          INT,
                @dig11          INT,
                @dig12          INT,
                @CodeEANc       VARCHAR(20),
                @soma_dig_par   INT,
                @soma_dig_impar INT,
                @soma_dig       INT,
                @resultado      INT,
                @digito_ean     INT

        SELECT  @CodeEANc = CAST(@CodeEAN AS VARCHAR)
        SELECT  @dig1  = ( SUBSTRING(@CodeEANc,  1, 1) ),
                @dig2  = ( SUBSTRING(@CodeEANc,  2, 1) ),
                @dig3  = ( SUBSTRING(@CodeEANc,  3, 1) ),
                @dig4  = ( SUBSTRING(@CodeEANc,  4, 1) ),
                @dig5  = ( SUBSTRING(@CodeEANc,  5, 1) ),
                @dig6  = ( SUBSTRING(@CodeEANc,  6, 1) ),
                @dig7  = ( SUBSTRING(@CodeEANc,  7, 1) ),
                @dig8  = ( SUBSTRING(@CodeEANc,  8, 1) ),
                @dig9  = ( SUBSTRING(@CodeEANc,  9, 1) ),
                @dig10 = ( SUBSTRING(@CodeEANc, 10, 1) ),
                @dig11 = ( SUBSTRING(@CodeEANc, 11, 1) ),
                @dig12 = ( SUBSTRING(@CodeEANc, 12, 1) )

        SELECT  @soma_dig_par = 3 * ( @dig2 + @dig4 + @dig6 + @dig8 + @dig10 + @dig12 ),
                @soma_dig_impar = @dig1 + @dig3 + @dig5 + @dig7 + @dig9 + @dig11
        SELECT  @soma_dig = @soma_dig_par + @soma_dig_impar
        SELECT  @resultado = ( ( 1 + Cast(@soma_dig / 10 AS INT) ) * 10 ) - @soma_dig

        IF ( @resultado = 10 )
            RETURN 0
        ELSE
            RETURN @resultado
        RETURN 0
    END
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página