tranthanhan1962 > 19-09-24, 12:16 AM
Code 39=*code* (Đầu: *, cuối: *)
Code 128 = ÌCodeWÎ (Đầu: Ì, cuối: WÎ)
Code EAN-13 = 00Code? (code 10 ký tự; đầu: 00, cuối: ? => tổng 13 ký tự)
Code EAN-8 = Code? (code 7 ký tự, cuối: ? => tổng 8 ký tự)
Code UPC-A = 0 Code? (code 10 ký tự, đầu:0, cuối: ? => tổng 12 ký tự)
Code UPC-E short input = xCode? (code 6 ký tự, đầu:0, cuối ? => tổng 8 ký tự)
Function Code128(Data As String) As String
Dim i As Integer
Dim checksum As Integer
Dim result As String
Dim charValue As Integer
' Ký tự bắt đầu cho Code 128
result = Chr(204)
checksum = 104 ' Giá trị bắt đầu cho Code 128
' Mã hóa dữ liệu
For i = 1 To Len(Data)
charValue = Asc(Mid(Data, i, 1))
result = result & Mid(Data, i, 1)
checksum = checksum + (charValue - 32) * i
Next i
' Tính toán ký tự kiểm tra
checksum = checksum Mod 103
result = result & Chr(checksum + 32)
' Ký tự kết thúc cho Code 128
result = result & Chr(206)
Code128 = result
End Function
ongke0711 > 29-09-24, 05:49 PM
Control Source: = EAN13([MaHang])
Control Source: = Code128([MaHang])
tranthanhan1962 > 30-10-24, 09:21 AM
(29-09-24, 05:49 PM)ongke0711 Đã viết: * Tổng hợp 4 loại barcode (phổ biến) dùng font barcode *
Code 128, Code 39, EAN 8, EAN 13
----------------------------------------------------------------------------------
Từ bài chia sẽ hàm dùng font barcode của anh @tranthanhan1962 ở trên, tôi tổng hợp lại và đưa vào file mẫu Access để các bạn có thể tham khảo nhanh cách làm.
Bổ sung hàm EAN13() tự tự tạo số Checksum cho barcode này. (Tương tự cho EAN 8)
Ví dụ: chỉ cần nhập mã hàng 12 ký tự, hàm sẽ tự tạo ký tự thứ 13
893851778372 (mã hàng) + 2 (checksum) ==> 8938517783722 (Barcode EAN13)
Tôi đã in test thử trên máy in nhiệt XPrinter 350BM, với kích thước 10 x 25mm, máy quét cầm tay (170k) đọc cực nhanh nhé .
Lưu ý:
+ Phải cài bộ font barcode đi kèm trên các máy nào sử dụng. (Nhấp đôi vào từng font (.ttf) để cài đặt). Font barocde cùng loại nhưng khác nhau (ví dụ: Font 128 của IDAutomation...) có thể sẽ cho ra kết quả không đúng với code trong bài này do kỹ thuật mã hóa chuỗi của họ dùng bảng mã ASCII khác bảng chuẩn 126 ký tự.
+ Bộ code để tạo chuỗi mã hóa EAN 13 (8) dùng với font barcode lấy từ tác giả Grandzebu.
+ Các mã hàng qua code xử lý ra chuỗi tương thích với các font barcode tương ứng thì máy quét mới đọc được.
(Code 39 xử lý đơn giản nhất, như anh @tranthanhan1962 đã đề cập ở trên)
Cách sử dụng: dùng hàm trực tiếp trong Textbox (vd: txtBarocde)
Mã PHP:Control Source: = EAN13([MaHang])
Mã PHP:Control Source: = Code128([MaHang])
Link file (có kèm font): https://www.mediafire.com/file/zjg5x3e56...o.zip/file
(PS: @tranthanhan1962: hàm Code128() của anh Ân vài trường hợp nó tổng hợp ra số checknum không nằm trong bảng dò ASCII nên ra chuỗi barcode không đọc được. Vô tình em phát hiện khi thử nghiệm. Ví dụ: mã "885874730071"; "(10) 89385177837-+%")
ongke0711 > 30-10-24, 09:27 PM
(30-10-24, 09:21 AM)tranthanhan1962 Đã viết: Mình chưa có thời gian để test hết ứng dụng của ongke0711 nhưng khi test EAN-13 với mã : 893532401499 khi quét sẽ ra 8935324014995, 893851778372 khi quét sẽ ra 8938517783722 có nghĩa nó sẽ thừa 1 ký tự