我在访问界面中使用条形码扫描仪来收集信息。我希望有一个条形码,其中包含多个信息示例:条形码,其中包含订单的价值和该订单上的特定商品。
我有分为“批次”的项目,这些项目按特定项目分组到这些批次中,每批次1项目类型。但订单可以有多种商品类型,因此每个订单可以有多个商品。我想在一个条形码中添加订单和批号。
看起来像* O961LA1450 *
星号开始和结束条形码。 O开始订货号961.L开始批号A1450。
我想定义一个分隔符“L”,用于分隔条形码以将批号与表单的批号进行比较,以检查它是否正确,然后使用正确的顺序填写表单上的订单号数。
任何人都可以解释如何定义分隔符或具有可提供的代码片段。任何帮助,将不胜感激。
答案 0 :(得分:2)
非常基本的例子:
Sub Main()
Dim barcode As String
barcode = "O961LA1450"
ProcessBarcode (barcode)
End Sub
Function ProcessBarcode(barcode As String)
Dim order As Long
Dim lot As String
Dim codes As Variant
codes = Split(barcode, "L")
order = CLng(Right(codes(0), Len(codes(0)) - 1))
lot = codes(1)
'for testing purposes:
Debug.Print "Order: " & order & " Lot: " & lot
'do comparing against other values here
End Function
结果:
Order: 961 Lot: A1450
答案 1 :(得分:1)
这种数据习惯使用固定长度的字段,因此您可以为订单号分配4个字符,为批号分配5个字符,这样就可以了:
0961A1450
将被解析:
Order Number: Left("0961A1450", 4)
Lot Number: Mid("0961A1450", 5, 5)
在分隔符上浪费空间的唯一原因是数据长度可变。我可能会为订单号分配5个字符,为批次编号分配6个字符以便将来进行校对(并适当填充)。例如,该示例将编码为:
00961A01450
...你可能想以这种方式解析它以消除前导零:
Order Number: Val(Left("00961A01450", 5))
Lot Number: Mid("00961A01450", 6, 1) & CStr(Val(Mid("00961A01450", 7, 5)))
毕竟,看起来分隔符似乎更容易,但我从未遇到过使用它们的条形码数据。如果您只编码两个数据,那么可能会更容易,因为您将前N个位置分配给您的第一个数据,之后的所有内容将是您的另一个数据,并且可以是任意长度。