繁体   English   中英

在vba中定义分隔符以进行访问

[英]defining delimiters in vba for access

我有一个使用条形码扫描仪收集信息的访问界面。 我想在其中的示例中包含多个信息的条形码:保存订单值和该订单上特定物品的条形码。

我有一些物品被分为“很多”,这些物品按照特定的物品分组到这些批次中,每批次1种。 但是一个订单可以有多种商品类型,因此每个订单有多个批次。 我想在一个条形码中添加订单和批号。

看起来像* O961LA1450 *

星号开始和结束条形码。 O以订单号961开始。L以批号A1450开始。

我想定义一个定界符“ L”,以分隔条形码以将批号与表格的批号进行比较以检查其正确性,然后在表格上填充正确的订单号。

谁能解释如何定义定界符或提供其代码段。 任何帮助,将不胜感激。

很基本的例子:

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

通常,此类数据使用固定长度的字段,因此您要为订单号分配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个位置分配给了第一个数据,之后的所有内容将是您的其他数据,并且可以是任意长度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM