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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Digito veirificador codigo barras EAN-13
ATS
OURINHOS
SP - BRASIL
Postada em 23/05/2007 12:22 hs            
Tenho um banco de dados com um campo onde estão gravados os código de barra dos produtos no padrão EAN-13 que é composto por 13 números. O problema é que foram gravados apenas os 12 primeiros números do código de barras faltando o ultimo número que é o digito verificador. Este último número é obtido através de um calculo feito com os 12 primeiros números. Alguém teria uma rotina que faça o culculo e gere este último número? Eu queria gerar este último número para gravar junto com os outros no banco de dados.
     
Roßerto
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 23/05/2007 17:03 hs            
olá eu achei a função escrita em DELPHI
 
var
  Temp1, Temp2: Integer;
  Temp3: String;
begin
  Temp2:=0;
  Temp3:='';

  for Temp1:=Length(VEAN)-1 downto 1 do //Inverte, retirando o dígito
    Temp3:=Temp3+VEAN[Temp1];

  for Temp1:=1 to Length(Temp3) do       //Multiplica as posições impares por 3,
fazendo o somatório
    if Temp1 mod 2 = 0 then
      Temp2:=Temp2+StrToInt(Temp3[Temp1])
    else
      Temp2:=Temp2+StrToInt(Temp3[Temp1])*3;

  Temp2:=10-Round(Frac(Temp2/10)*10);    //10 menos o resto da divisão

  Result:=Temp2=StrToInt(Copy(VEAN,Length(VEAN),1));
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
  if not Valida_EAN(Edit1.Text) then Application.MessageBox(PChar('EAN
inválido!'),'Sigma...',64);
end;
 
Se precisar de ajuda para escrever em Visual
me avise.
 
boa sorte
 

Roberto
roberto@vbweb.com.br
   
EWERTON
DIVINÓPOLIS
MG - BRASIL
ENUNCIADA !
Postada em 14/06/2007 16:16 hs            
será que vc não tem como me passar esta codigo gerando o digito verificar em VB não ..
obrigado ...
 
   
ArtSoft
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 14/06/2007 19:46 hs         
Fala companheiro, achei alguma coisa www.vbcode.com e outras coisas em outros lugares outro site que tem uma materia legal é acho que vai interessar a vcs é esse http://www.microsoft.com/brasil/msdn/Tecnologias/vsnet/CodigoBarras.mspx , segue abaixo a mascara e o codigo :

0  0  0  0  0  0  0  0  0  3  5  8
*  *  *  *  *  *  *  *  *  *  *  *
1  3  1  3  1  3  1  3  1  3  1  3     Soma
-- -- -- -- -- -- -- -- -- -- -- --     ----
0  0  0  0  0  0  0  0  0  9  5 24  =    38
Digito = 10 - (Soma mod 10)
Digito = 10 - (38 mod 10)
Digito = 10 - 8
Digito = 2
'*** INICIO DO CODIGO ****

'Attribute VB_Name = "ISBNtoEAN"
Public Function TurnISBNToBarcode(ByVal strISBN As String) As String
'''''''''''''''''''''''''''''''''
'
'  Written by A P Woods
'  Using VB5 Enterprise
'  System:  General Function
'  Dated : 25 04 01
'
'  Purpose
'
'   Turn an ISBN into a EAN-13 Barcode
'
'  Background
'
'  A standard ISBN is allocated by ISO (or similar).  EAN-13 is a standard barcode format for describing
'  a whole raft of barcode groups.  In the case of ISBN's the barcode prefix, or leading three digits is 978
'  for EAN group "Bookland"
'
'  This function checks the entered ISBN string and carries out EAN-13 check sum arithmetic to produce a final
'  bar code string
'
'  Supporting functions:
'
'   GetLeastSignificantDigit (in this module)
'
'  Values passed into this function
'
'  strISBN passed as a nine digit string, if digits more than nine are passed into the function only the Min nin will be used
'
'  Values Returned
'
'  If code executes without error: Standard EAN 13 barcode in the form of a string
'  If code errors                :  "Not Valid Bar Code"
'
'
'  Possible Modifications
'
'  Include function to carry out ISBN checksum validation
'
'
'  Revisions
'
'  25 05 01  After checking, substituint "X" for "0" is check sum returns 10.
'
'
'''''''''''''''''''''''''''''''''''''''''''
On Error GoTo errhandler
Dim boolIsValid As Boolean
Dim intOneThreeArray(0 To 12) As Integer
Dim intISBNIntegers(0 To 12) As Integer
Dim intBarCodeResult(0 To 12) As Integer
Dim intCheckSum As Integer
Dim intResult As Integer
Dim intLoopCounter As Integer
boolIsValid = True
''''''''''''''''''''''
'
'  if passed strISBN value is more than nine characters, strip out the excess to get rid of the ISBN checksum
'
'''''''''''''''''''''
If Len(Trim(strISBN)) > 9 Then
    strISBN = Left(Trim(strISBN), 9)
End If
''''''
'
'  Fill in the onethreearray array
'
'''''
intOneThreeArray(0) = 1
intOneThreeArray(1) = 3
intOneThreeArray(2) = 1
intOneThreeArray(3) = 3
intOneThreeArray(4) = 1
intOneThreeArray(5) = 3
intOneThreeArray(6) = 1
intOneThreeArray(7) = 3
intOneThreeArray(8) = 1
intOneThreeArray(9) = 3
intOneThreeArray(10) = 1
intOneThreeArray(11) = 3
''''
'
'  pad out the passed ISBN to ten characters
'
''''
If boolIsValid = True Then
    If Len(Trim(strISBN)) < 9 Then
        Do While Len(Trim(strISBN)) < 9
   
            strISBN = strISBN + "0"
        Loop
    End If
'''''''''''''''''''''''''''''''
'
'  Now add the BOOKLAND EAN Prefix "978" to strISBN
'
''''''''''''''''''''''''''''''''
    strISBN = "978" + strISBN
''''''''''''''''''''''''''''''''
'
'  Now do the EAN-13 check sum
'
''''''''''''''''''''''''''''''''
    For intLoopCounter = 0 To 11
   
        On Error Resume Next
   
        intISBNIntegers(intLoopCounter) = CInt(Mid(strISBN, intLoopCounter + 1, 1))
   
        intBarCodeResult(intLoopCounter) = intISBNIntegers(intLoopCounter) * intOneThreeArray(intLoopCounter)
   
        intResult = intResult + intBarCodeResult(intLoopCounter)
   
    Next intLoopCounter
''''''''''''''''''''''''''''''
'
'  Get the checksum least significant digit
'
'''''''''''''''''''''''''''''
    intCheckSum = GetLeastSignificantDigit(intResult)
    intCheckSum = 10 - intCheckSum
       
''''''''''''
'
'  barcode result is strISBN plus the checksum converted to a string
'  Note, the rules state that if the result of the checksum is 10 then the check digit appended to the bar code is an uppercase "X"
'
'
'
''''''''''''
       
    If intCheckSum = 10 Then
   
        TurnISBNToBarcode = strISBN + "0"
   
    Else
   
        TurnISBNToBarcode = strISBN + Trim(CStr(intCheckSum))
   
    End If

Else
    TurnISBNToBarcode = "Invalid ISBN Code"
End If
Exit Function
errhandler:
On Error GoTo 0
TurnISBNToBarcode = "Invalid ISBN Code"
End Function
Public Function GetLeastSignificantDigit(ByVal lgResult As Long) As Integer
On Error GoTo errhandler
Dim strResult As String
strResult = Trim(CStr(lgResult))
If Len(Trim(strResult)) > 1 Then
    GetLeastSignificantDigit = CInt(Trim(Right(strResult, 1)))
Else
    GetLeastSignificantDigit = CInt(Trim(strResult))
End If
Exit Function
errhandler:
GetLeastSignificantDigit = -1
End Function

agora é só testar !

Alexandre Costa
ArtSoftSystems

Skype:artsoftsystems
MSN:alexandre.artsoft@hotmail.com
artsoftsystems@uol.com.br

   
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