簡體   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