Crear Codigo De Barras En Visual Basic A mi me sucedio lo mismo y por mucho que lei nada me complacia, por ello me dedique a implementar el codigo de barras en VBA sobre access 2007.
No es nada complejo, solo seguir el proceder en cuanto al calculo del digito de control y ya con ello representarlo en un informe. Luego simplemente con una impresora de etiquetas imprimirlo.
Creas un formulario en el cual defines cuatro cuadros de textos llamados pais, empresa, producto y control.
Al salir del ultimo cuadro, Producto, implementas el sigiente codigo para calcular el digito.
Private Sub Producto_Exit(Cancel As Integer)
Dim Digito As Byte
If (Not IsNull(Me.Pais) And Me.Pais > 0) And (Not IsNull(Me.Empresa) And Me.Empresa > 0) And (Not IsNull(Me.Producto) And Me.Producto > 0) Then
Me.Control = Null
Digito = (CByte(Mid(Me.Empresa, 1, 1)) + CByte(Mid(Me.Empresa, 3, 1)) + CByte(Mid(Me.Empresa, 5, 1)) + CByte(Mid(Me.Producto, 1, 1)) + CByte(Mid(Me.Producto, 3, 1)) + CByte(Mid(Me.Producto, 5, 1))) * 3 + (CByte(Mid(Me.Empresa, 2, 1)) + CByte(Mid(Me.Empresa, 4, 1)) + CByte(Mid(Me.Empresa, 6, 1)) + CByte(Mid(Me.Producto, 2, 1)) + CByte(Mid(Me.Producto, 4, 1)) + CByte(Me.Pais))
Me.Control = (10 - (Digito Mod 10)) Mod 10
Me.Control.Requery
Me.Codigo = CStr(Me.Pais) + CStr(Me.Empresa) + CStr(Me.Producto) + CStr(Control)
Me.C_Barra = Me.Codigo
End If
End Sub
Esto lo concatenas, todos los digitos y lo escribes en un cuadro de texto llamado, Codigo.
Por ultimo en un reporte en Al paginar escribes el siguiente codigo, el cual te dibujara las barras asociadas al numero en cuestion. y ya
Private Sub Report_Page()
Dim lngColor As Long
Dim Incremento, Variacion As Double
Dim I, Largo, Numero, Lugar, Contador As Byte
Dim Valor, Posicion As String
Variacion = 1.2
Lugar = 2
Numero = Mid(Me.Codigo, Lugar, 1)
Report.ScaleMode = 6
lngColor = RGB(0, 0, 0)
Incremento = 0.25
Arreglo = Array("A", "A", "A", "A", "A", "A", "A", "A", "B", "A", "B", "B", "A", "A", "B", "B", "A", "B", "A", "A", "B", "B", "B", "A", "A", "B", "A", "A", "B", "B", "A", "B", "B", "A", "A", "B", "A", "B", "B", "B", "A", "A", "A", "B", "A", "B", "A", "B", "A", "B", "A", "B", "B", "A", "A", "B", "B", "A", "B", "A")
ValorA = Array(0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1)
ValorB = Array(0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1)
ValorC = Array(1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0)
Contador = 0
For I = 5 To 99
If (I = 5 Or I = 7 Or I = 99 Or I = 97 Or I = 53 Or I = 51) Then
Largo = 8
Report.Line ((I * Incremento) + 1 - Incremento - Variacion, 0)-((I * Incremento) + 1 - Variacion, Largo), lngColor, BF
Else:
Largo = 6
'---------------------------------Primera Seccion----------------------------------------
If I > 7 And I < 50 Then
If I = 8 Then
Contador = 0
Valor = 0
End If
If (I - 1) Mod 7 = 0 Then
Posicion = Arreglo(Mid(Me.Codigo, 1, 1) * 6 + Valor)
Valor = Valor + 1
End If
If Contador = 7 Then
Lugar = Lugar + 1
Numero = Mid(Me.Codigo, Lugar, 1)
Contador = 0
End If
If Posicion = "A" Then
If ValorA(Numero * 7 + Contador) = 1 Then
Report.Line ((I * Incremento) + 1 - Incremento - Variacion, 0)-((I * Incremento) + 1 - Variacion, Largo), lngColor, BF
End If
Else
If ValorB(Numero * 7 + Contador) = 1 Then
Report.Line ((I * Incremento) + 1 - Incremento - Variacion, 0)-((I * Incremento) + 1 - Variacion, Largo), lngColor, BF
End If
End If
Contador = Contador + 1
End If
'---------------------------------Fin de Primera Seccion----------------------------------
'---------------------------------Segunda Seccion----------------------------------------
If I > 54 And I < 97 Then
If I = 55 Then
Contador = 0
Lugar = Lugar + 1
Numero = Mid(Me.Codigo, Lugar, 1)
End If
If Contador = 7 Then
Lugar = Lugar + 1
Numero = Mid(Me.Codigo, Lugar, 1)
Contador = 0
End If
If ValorC(Numero * 7 + Contador) = 1 Then
Report.Line ((I * Incremento) + 1 - Incremento - Variacion, 0)-((I * Incremento) + 1 - Variacion, Largo), lngColor, BF
End If
Contador = Contador + 1
End If
'---------------------------------Fin de Segunda Seccion---------------------------------
End If
Next
End Sub
Es todo, espero te ayude. |