Newsgroup: it.comp.lang.visual-basic
Titolo: Stampa codice a barre (EAN13)  personalizzato

Salve a tutti.
Vorrei proporre un problema a voi del NG, in quanto io non sono riuscito a
risolverlo da solo.
Il problema è quello in oggetto: ho bisogno di stampare, dal mio
applicativo, un codice a barre in formato EAN13.
Ho provato a scaricare del materiale dal sito comune, ho provato l'
ESP0BARC di lupo, ottimo davvero, ma ciò che viene stampato non è
riconoscibile dal mio lettore di codici a barre.
Altro materiale sul sito, inserito nel mio progetto, mi fornisce una
miriade di errori che senza conoscere l'algoritmo ed il significato delle
variabili mi è impossibile risolvere.
Pertanto vi chiedo: qualcuno ha già risolto il problema? se sì, come?
Grazie mille a tutti coloro che risponderanno ;)

 Grazie mille a tutti coloro che risponderanno ;)
Secondo me vi possono essere 2 errori:
1-La stampante che usi stampa in modo troppo "grossolano" e il lettore non
riesce a riconoscere il bacode
2-Il barcode generato non è corretto.
Nel primo caso prova a usare una stampante laser o stampi con una grandezza
del font più grande.
Nel secondo caso verifichi che il codice sia corretto con:
'|==================================================================
'|  Ean13Ok       | Controlla la validità di un codice EAN13, veri
'|                | ficando la correttezza della cifra di controllo
'|                | (la 13ma); Se gli viene fornito un codice di 12
'|                | (UPC), aggiunge '0' e controlla se è corretto
'|==================================================================
Function Ean13Ok(ByVal cd As String) As Boolean
    Dim Cifra(13) As Integer
    Dim k As Integer
    Dim s As String
    Dim Controllo As Integer
    rt = False
    cd = Trim(cd)
    If Len(cd) = 12 Then
        cd = "0" + cd
    ElseIf Len(cd) < 13 Then
        cd = cd + Space(13 - Len(cd))
    ElseIf Len(cd) > 13 Then
        cd = Mid(cd, 1, 13)
    End If
    If cd = Space(13) Then
        Ean13Ok = False
        Exit Function
    End If
    For k = 1 To 13
        s = Mid(cd, k, 1)
        If Val(s) = 0 And s <> "0" Then
            Ean13Ok = False
            Exit Function
        End If
        Cifra(k) = Val(s)
    Next
    For k = 2 To 12 Step 2
        Cifra(k) = Cifra(k) * 3
    Next
    For k = 1 To 12
        Controllo = Controllo + Cifra(k)
    Next
    Controllo = Controllo Mod 10
    If Controllo > 0 Then
        Controllo = 10 - Controllo
    End If
    If Controllo = Cifra(13) Then
        Ean13Ok = True
    Else
        Ean13Ok = False
    End If
End Function
bye
-- 
Gestione Ottica - Gestionale per Ottici e Programmi Gratuiti su:
http://www.nicolaottomano.it
Sinapsi Antispam. Antispam Gratuito.
http://www.sinapsi-antispam.tk
http://www.nicolaottomano.it/sinapsi.htm
Ingrosso Orologi.
http://www.supertop.it
email spamtrap: 
spam...@nicolaottomano.it

Ho provato con qualsiasi tipo di stampante.
Ho provato il tuo codice per controllare se quello generato č corretto, e
non lo č.
Allora ho trovato un altro OCX che mi stampa il codice a barre.
Ora il mio problema č generare automaticamente dei codici a barre corretti
per degli articoli del mio magazzino che non ne hanno...
Sapreste aiutarmi?

EDIT:
Andrebbe anche bene il solo codice per generare il checkdigit finale ;)

 ;) 
Beh dal codice che ti ho postato ti ricavi facilmente il checkdigit.
E' proprio sul checkdigit che viene fatto il controllo


 bye
L'avevo pensato... ;) ma non sono capace di trovare la parte che mi
interessa, poichè non conosco il significato delle variabili, e soprattutto
non conosco il metodo per creare un EAN13 :D
Perciò, il mio problema è etichettare un articolo del magazzino che non ha
di per sè un codice a barre: quindi sto cercando una procedura che me ne
generi uno casuale e che sia corretto... E' per questo che la mia penna non
riconosce il codice da me stampato: non è corretto :D
Sarei grato se potessi postarmi una procedura già fatta o qualche software
freeware, ho cercato so google, ma non ho trovato qualche software che
faccia al caso mio...
Grazie mille per l'aiuto!

 soprattutto non conosco il metodo per creare un EAN13 :D
Senti. Facciamo cosě.
Ti compri un bel libro su VB e fra un annetto ci sentiamo.
Mi stai dicendo ch vuoi lavorare con i barcode e non sai trovare il
significato di una stupidissima procedura?
Il programma mica posso scrivertelo io! E che cacchio... :(


 ha scritto nel messaggio
news:189hfhjqud1ml$.pbzabt1smeb8.dlg@40tude.net...

Scarica il progetto BarCode13 di Dr. Roberto Finesi.
Non ricordo ma mi pare sia su
http://www.visual-basic.it/areadownload.asp?key=barcode&cSearch=++Cerca++
Funziona sicuro perchč lo uso io.
Poi devi modificarlo secondo le tue esigenze.
Ciao Carmelo

 Il programma mica posso scrivertelo io! E che cacchio... :(
Beh, non credo che chiunque sia in grado di trovare il significato di una
procedura se non sa nemmeno qual'è l'obiettivo che quella procedura deve
raggiungere.
Tu mi stai dicendo che il solo studiare quella procedura mi avrebbe dovuto
far capire che per calcolare il checksum devo sommare le cifre di posizione
pari, moltiplicarle per 3 e a questo valore aggiungere la somma delle cifre
di posizione dispari, e il checksum è il numero più piccolo che sommato al
valore ottenuto genera un multiplo di 10???
Comunque sia, mi sono studiato COME si genera un codice EAN13, e
soprattutto il suo checksum, non certo dalla procedura che mi hai
consigliato, e ho scritto la seguente procedura, che posto a beneficio di
tutti gli utenti:
Public Sub CalCod(cod As String)
 
 Dim i As Integer
 Dim Code(12) As Integer
 Dim somma As Integer
'calcolo checksum
 For i = 1 To 11 Step 2
  somma = somma + Code(i)
 Next i
 somma = somma * 3
 For i = 0 To 10 Step 2
  somma = somma + Code(i)
 Next i
 Code(12) = (10 - somma Mod 10) Mod 10
 
 cod = ""
 For i = 0 To 12
  cod = cod + CStr(Code(i))
 Next i
 
end sub 



Ovviamente, per la procedura che ho postato, prima di calcolare il
checksum, bisogna provvedere a riempire l'array con il codice di cui
interessa calcolarlo, che dev'essere lungo 12 cifre per il codice EAN13
;)
ciao a tutti

 
C'e' stata una fuga di etilene nella tua zona?
	maxx

> C'e' stata una fuga di etilene nella tua zona?
LOL
