| |
Subject: Re: Codici a barre
From: RoDAgo <rodagonospam@tiscalinet.it>
Newsgroup:it.comp.appl.access
GIORGIO scrisse...
> E' possibile stampare su un report di access dei codici a barre ??
Ceeerrrrto che si pò fa!
Donque creati un report di nome "Stampa codici a barre", inserisci una casella
di testo (io l'ho chiamata NomeProdotto) con OrigineControllo impostata al codice che deve
esser ricreato.
Appioppa nell'evento Su stampa del Corpo il seguente codicillo riferito al codice a barre
Interleaved 2x5 (è un vecchio codice che lavora con codici di otto cifre numeriche, puoi
sfruttare la Sub per ricrearti gli altri
standard, ti basta cercare su internet e trovi le regole di creazione barre per gli altri
codici)
Private Sub Corpo_Print(Cancel As Integer, PrintCount As Integer)
Dim CODICE As String 'Codice a barre Interleaved 2x5 by RoDAgo
Dim CODE, N, R, X, AC, I, C1, C2, K, J, H, DISTANZADASINISTRA, DISTANZADAALTO,
ALTEZZACODICE As Integer
Dim rpt As Report
Dim s As Integer
Set rpt = Reports![stampa codici a barre]
DISTANZADAALTO = 4
ALTEZZACODICE = 12
DISTANZADASINISTRA = 5
CODE = Array(6, 17, 9, 24, 5, 20, 12, 3, 18, 10)
CODICE = [NomeProdotto]
If Val(CODICE) = 0 Then
MsgBox ("Codice
errato")
Else
If Len(CODICE) / 2 <> Int(Len(CODICE) /
2) Then CODICE = "0" + CODICE
N = Len(CODICE)
R = 2
X = 0.5 'Distanza tra
una barra e la Prossima
rpt.ScaleMode = 6
rpt.Line
(DISTANZADASINISTRA, DISTANZADAALTO)-(DISTANZADASINISTRA + X,
DISTANZADAALTO
+ ALTEZZACODICE), , BF
rpt.Line
(DISTANZADASINISTRA + X * 2,
DISTANZADAALTO)-(DISTANZADASINISTRA
+ X * 3, DISTANZADAALTO +
ALTEZZACODICE),
, BF
AC = DISTANZADASINISTRA
+ X * 4
For I = 1 To N / 2
C1 =
CODE(Val(Mid(CODICE, I * 2 - 1, 1)))
C2 =
CODE(Val(Mid(CODICE, I * 2, 1)))
K = 16
For J = 1 To 5
If
(C1 And K) > 0 Then H = R Else H = 1
rpt.Line
(AC, DISTANZADAALTO)-(AC + H * X, DISTANZADAALTO +
ALTEZZACODICE),
, BF
AC
= AC + X * H
If
(C2 And K) > 0 Then H = R Else H = 1
AC
= AC + X * H
K
= K / 2
Next J
Next I
rpt.Line
(AC, DISTANZADAALTO)-(AC + R * X, DISTANZADAALTO +
ALTEZZACODICE),
, BF
AC
= AC + (R + 1) * X
rpt.Line
(AC, DISTANZADAALTO)-(AC + X, DISTANZADAALTO + ALTEZZACODICE),
,
BF
End If
End Sub
Ciao
RoDAgo
|