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
In Access creiamo una maschera dove poter inserire le prime 12 cifre del 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.
Scrivi un commento