Newsgroup: it.comp.appl.access
Titolo: controllo codice ean

salve
volevo fare un controllo sul codice ean
ho inserito questo codice sul clic di un pulsante (poi lo sposto dal
pulsante)
Private Sub TestChecksumEan13_Click()
If Not testean Like "#############" Then 'controlla che siano 13 cifre
      TestChecksumEan13 = False
   End If
   Dim i As Integer, Sum As Integer, Check As Integer
   Sum = 0
   'somma in posizione pari
   For i = 2 To 12 Step 2
      Sum = Sum + Val(Mid(testean, i, 1))
   Next i
   'moltiplica per 3 le cifre in posizione pari
   Sum = Sum * 3
   'somma in posizione dispari
   For i = 1 To 11 Step 2
      Sum = Sum + Val(Mid(testean, i, 1))
   Next i
   Sum = Sum Mod 10
   Check = (10 - Sum) Mod 10
   If Val(Right(testean, 1)) = Check Then
      TestChecksumEan13 = True 'codice corretto
   Else
      TestChecksumEan13 = False 'codice errato
   End If
End Sub
ora ho true o false ma come li utilizzo?
io vorrei che mi visualizzasse un errore quando il codice è sbagliato,
mentre se è giusto che mi lasci proseguire.
ciao


Sono sempre io
l'ho gia spostato dopo aggiornamento:
Private Sub CodiceEAN1_BeforeUpdate(Cancel As Integer)
If Not CodiceEAN Like "#############" Then 'controlla che siano 13 cifre
      TestChecksumEan13 = False
   End If
   Dim i As Integer, Sum As Integer, Check As Integer
   Sum = 0
   'somma in posizione pari
   For i = 2 To 12 Step 2
      Sum = Sum + Val(Mid(testean, i, 1))
   Next i
   'moltiplica per 3 le cifre in posizione pari
   Sum = Sum * 3
   'somma in posizione dispari
   For i = 1 To 11 Step 2
      Sum = Sum + Val(Mid(testean, i, 1))
   Next i
   Sum = Sum Mod 10
   Check = (10 - Sum) Mod 10
   If Val(Right(CodiceEAN, 1)) = Check Then
      CodiceEAN = True 'codice corretto
   Else
      CodiceEAN = False 'codice errato
   End If
End Sub
è possibile fargli controllare:
se ho 8 cifre esegui:
Dim i As Integer, Sum As Integer, Check As Integer
   Sum = 0
   'somma in posizione dispari
   For i = 1 To 7 Step 2
      Sum = Sum + Val(Mid(TestEan, i, 1))
   Next i
   'moltiplica per 3 le cifre in posizione dispari
   Sum = Sum * 3
   'somma in posizione pari
   For i = 2 To 6 Step 2
      Sum = Sum + Val(Mid(TestEan, i, 1))
   Next i
   Sum = Sum Mod 10
   Check = (10 - Sum) Mod 10
   If Val(Right(TestEan, 1)) = Check Then
      TestChecksumEan8 = True 'codice corretto
   Else
      TestChecksumEan8 = False 'codice errato
   End If
se ho 13 cifre esegui:
Dim i As Integer, Sum As Integer, Check As Integer
   Sum = 0
   'somma in posizione pari
   For i = 2 To 12 Step 2
      Sum = Sum + Val(Mid(TestEan, i, 1))
   Next i
   'moltiplica per 3 le cifre in posizione pari
   Sum = Sum * 3
   'somma in posizione dispari
   For i = 1 To 11 Step 2
      Sum = Sum + Val(Mid(TestEan, i, 1))
   Next i
   Sum = Sum Mod 10
   Check = (10 - Sum) Mod 10
   If Val(Right(TestEan, 1)) = Check Then
      TestChecksumEan13 = True 'codice corretto
   Else
      TestChecksumEan13 = False 'codice errato
   End If
se ho Zero cifre far scrivere nessun codice.
come faccio a farmi uscire l'errore quando ho false e proseguire quando ho
true?
il codice l'ho preso dal sito comune
ciao

 ha
scritto nel messaggio
news:hXfrc.65068$Qc.26...@twister1.libero.it...

Se vuoi sapere il numero delle cifre poni una
condizione con if o select dopo vare contato con
Len(tuocontrollo) la sua lunghezza.
Il sito e questo Ng sono un riferimento per te?
Bene, partecipa alla campagna lanciata da
Luciano(Doc)
MAssimilisno


il fatto è che non so usare molto bene vba anzi quasi nulla io volevo che il
codice riconosca se è un ean8 ean13 o vuoto e di conseguenza fare il
controllo...una volta fatto il controllo, se errato (false) darmi un errore,
se esatto farmi proseguire; ora in entrambi i casi mi da errore nel codice
evidenziandomi la riga TestChecksumEan13 = True 'codice corretto quando è
giusto o TestChecksumEan13 = False 'codice errato quando è errato, come se
non sapesse cosa deve fare in caso sia true o false.
ciao