Pubblicato il 13 Luglio 2021 da Maurizio Matetich

Il barcode è molto utile per gestire in modo facile e veloce gli articoli aziendali.

Mi hanno fatto la seguente domanda: “utilizzo il codice a barre EAN13 e voglio inserire le prime 12 cifre e ottenere il tredicesimo carattere (il carattere di controllo o check digit) in automatico. Come fare?”

Vediamo insieme come fare utilizzando Access e VBA. A proposito lo sapevi che EAN significa European Article Number?

Premetto che i codici EAN adesso si chiamano codici GS1 e online ci sono vari siti che calcolano il carattere di controllo.

Ma noi vogliamo risolvere il problema da soli 😉

La procedura è abbastanza semplice e si compone di 4 passaggi.

1) scrivi le prime 12 cifre del codice EAN

2) leggendo il codice da destra verso sinistra, moltiplica per 1 le cifre che si trovano nelle posizioni pari e per 3 le cifre che si trovano nelle posizioni dispari

3) somma i valori dei prodotti ottenuti al punto 1

4) sottrai la somma ottenuta dal multiplo di 10 superiore: il risultato che ottieni è la cifra di controllo.

Ad esempio consideriamo il seguente codice a barre: vediamo le prime 12 cifre

Office online - calcolare carattere controllo barcode

In Access creiamo una maschera dove poter inserire le prime 12 cifre del barcode.

Office online - maschera per calcolare carattere controllo barcode

Ecco il codice che ho associato all’evento “Dopo aggiornamento” nel campo Codice EAN.

Private Sub CodiceEAN_AfterUpdate()
Dim CalcolaValore, MultiploSuperiore, CodiceControllo As Integer
Dim UltimaCifra As Integer

DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

MultiploSuperiore = 0

‘effettuo il calcolo
If Len(Me.CodiceEAN) = 12 Then
CalcolaValore = CInt(Mid(Me.CodiceEAN, 11, 1)) + CInt(Mid(Me.CodiceEAN, 9, 1)) + CInt(Mid(Me.CodiceEAN, 7, 1)) + CInt(Mid(Me.CodiceEAN, 5, 1)) + CInt(Mid(Me.CodiceEAN, 3, 1)) + CInt(Mid(Me.CodiceEAN, 1, 1))
CalcolaValore = CalcolaValore + (3 * CInt(Mid(Me.CodiceEAN, 12, 1)) + 3 * CInt(Mid(Me.CodiceEAN, 10, 1)) + 3 * CInt(Mid(Me.CodiceEAN, 8, 1)) + 3 * CInt(Mid(Me.CodiceEAN, 6, 1)) + 3 * CInt(Mid(Me.CodiceEAN, 4, 1)) + 3 * CInt(Mid(Me.CodiceEAN, 2, 1)))

‘trovo il multiplo di 10 superiore al calcolo appena effettuato
UltimaCifra = CInt(Right(CalcolaValore, 1))

Select Case UltimaCifra
Case 0
MultiploSuperiore = CalcolaValore
Case 1
MultiploSuperiore = CalcolaValore + 9
Case 2
MultiploSuperiore = CalcolaValore + 8
Case 3
MultiploSuperiore = CalcolaValore + 7
Case 4
MultiploSuperiore = CalcolaValore + 6
Case 5
MultiploSuperiore = CalcolaValore + 5
Case 6
MultiploSuperiore = CalcolaValore + 4
Case 7
MultiploSuperiore = CalcolaValore + 3
Case 8
MultiploSuperiore = CalcolaValore + 2
Case 9
MultiploSuperiore = CalcolaValore + 1

End Select

CodiceControllo = MultiploSuperiore – CalcolaValore
Me.CodiceEAN = Me.CodiceEAN + CStr(CodiceControllo)

Else
MsgBox “Attenzione: inserire 12 caratteri”
End If

End Sub

 

Mi sembra abbastanza semplice e chiaro.

Vuoi saperne di più? consulta il sito GS1 Italy

E’ l’unico ente italiano autorizzato a rilasciare i codici a barre EAN.