Reports

4.27 Funzione per la stampa di un BarCode39
  Luiz Cláudio C. V. Rocha
In un modulo standard del vostro database inserire le seguenti funzioni:
 Function MD_Barcode39(Ctrl As Control, Rpt As Report)
 
     On Error GoTo ErrorTrap_BarCode39
 
     Dim Nbar As Single, Wbar As Single, Qbar As Single, NextBar As Single
     Dim CountX As Single, CountY As Single, CountR As Single
     Dim Parts As Single, Pix As Single, Color As Long, BarStamp As Variant
     Dim Stripes As String, OneStripe As String, Barcode As String
     Dim Mx As Single, my As Single, Sx As Single, Sy As Single
     Const White = 16777215: Const Black = 0
     Const Nratio = 20, Wratio = 55, Qratio = 35
     Sx = Ctrl.Left: Sy = Ctrl.Top: Mx = Ctrl.Width: my = Ctrl.Height
     Barcode = Ctrl
     Parts = (Len(Barcode) + 2) * ((6 * Nratio) + (3 * Wratio) + (1 * Qratio))
     Pix = (Mx / Parts):
     Nbar = (20 * Pix): Wbar = (55 * Pix): Qbar = (35 * Pix)
     NextBar = Sx
     Color = White
     BarStamp = "*" & UCase(Barcode) & "*"
     For CountX = 1 To Len(BarStamp)
         Stripes = MD_BC39(Mid$(BarStamp, CountX, 1))
         For CountY = 1 To 9
             OneStripe = Mid$(Stripes, CountY, 1)
             If Color = White Then Color = Black Else Color = White
             Select Case OneStripe
                 Case "1"
                     Rpt.Line (NextBar, Sy)-Step(Wbar, my), Color, BF
                     NextBar = NextBar + Wbar
                 Case "0"
                     Rpt.Line (NextBar, Sy)-Step(Nbar, my), Color, BF
                     NextBar = NextBar + Nbar
             End Select
         Next CountY
         If Color = White Then Color = Black Else Color = White
         Rpt.Line (NextBar, Sy)-Step(Qbar, my), Color, BF
         NextBar = NextBar + Qbar
     Next CountX
 
 Exit_BarCode39:
     Exit Function
 
 ErrorTrap_BarCode39:
     Resume Exit_BarCode39
 
 End Function
 
 Function MD_BC39(CharCode As String) As String
 
     On Error GoTo ErrorTrap_BC39
 
     ReDim BC39(90)
 
     BC39(32) = "011000100" ' space
     BC39(36) = "010101000" ' $
     BC39(37) = "000101010" ' %
     BC39(42) = "010010100" ' * Start/Stop
     BC39(43) = "010001010" ' +
     BC39(45) = "010000101" ' |
     BC39(46) = "110000100" ' .
     BC39(47) = "010100010" ' /
     BC39(48) = "000110100" ' 0
     BC39(49) = "100100001" ' 1
     BC39(50) = "001100001" ' 2
     BC39(51) = "101100000" ' 3
     BC39(52) = "000110001" ' 4
     BC39(53) = "100110000" ' 5
     BC39(54) = "001110000" ' 6
     BC39(55) = "000100101" ' 7
     BC39(56) = "100100100" ' 8
     BC39(57) = "001100100" ' 9
     BC39(65) = "100001001" ' A
     BC39(66) = "001001001" ' B
     BC39(67) = "101001000" ' C
     BC39(68) = "000011001" ' D
     BC39(69) = "100011000" ' E
     BC39(70) = "001011000" ' F
     BC39(71) = "000001101" ' G
     BC39(72) = "100001100" ' H
     BC39(73) = "001001100" ' I
     BC39(74) = "000011100" ' J
     BC39(75) = "100000011" ' K
     BC39(76) = "001000011" ' L
     BC39(77) = "101000010" ' M
     BC39(78) = "000010011" ' N
     BC39(79) = "100010010" ' O
     BC39(80) = "001010010" ' P
     BC39(81) = "000000111" ' Q
     BC39(82) = "100000110" ' R
     BC39(83) = "001000110" ' S
     BC39(84) = "000010110" ' T
     BC39(85) = "110000001" ' U
     BC39(86) = "011000001" ' V
     BC39(87) = "111000000" ' W
     BC39(88) = "010010001" ' X
     BC39(89) = "110010000" ' Y
     BC39(90) = "011010000" ' Z
 
     MD_BC39 = BC39(Asc(CharCode))
 
 Exit_BC39:
     Exit Function
 
 ErrorTrap_BC39:
     MD_BC39 = ""
     Resume Exit_BC39
 
 End Function

In un modulo di classe del report inserire il seguente codice VBA:
Private Sub Detail1_Print(Cancel As Integer, PrintCount As Integer)
Result = MD_Barcode39(Barcode, Me) 
End Sub

Inoltre inserire nella Sezione Corpo del report due caselle di testo: la prima delle due deve chiamarsi "BarCode" ed avere una altezza di 1,11cm, mentre l'altra (posta al si sotto della precedente) deve chiamarsi "BarcodeContent" e mostrerà i numeri leggibili all'occhio umano. Ambedue le caselle di testo debbono avere ProductCode come origine controllo.


Se pensate di avere del materiale freeware interessante e volete pubblicarlo, allora leggete qui.