определение разделителей в vba для доступа - PullRequest
1 голос
/ 03 июня 2009

У меня есть интерфейс доступа, который использует сканер штрих-кода для сбора информации. Я хотел бы иметь штрих-код, который содержит несколько информации в этом примере: штрих-код, который содержит стоимость заказа и определенный элемент в этом заказе.

У меня есть предметы, которые разделены на "лоты", эти предметы сгруппированы в эти лоты по конкретным предметам, 1 тип товара на лот. Но заказ может иметь несколько типов позиций, поэтому несколько лотов на заказ. Я хотел бы добавить заказ и номер лота в один штрих-код.

Это будет выглядеть как * O961LA1450 *

Звездочки начинаются и заканчиваются штрих-кодом. O запускает номер заказа 961. L запускает номер лота A1450.

Я бы хотел определить разделитель "L", чтобы отделить штрих-код для сравнения номера лота с номером лота формы, чтобы убедиться в его правильности, а затем заполнить номер заказа в форме правильным заказом число.

Может кто-нибудь объяснить, как определять разделители, или есть фрагменты кода, которые они могут предложить. Любая помощь будет оценена.

Ответы [ 2 ]

2 голосов
/ 03 июня 2009

Очень простой пример:

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 голос
/ 18 ноября 2009

Обычно для данных такого типа используются поля фиксированной длины, так что вы можете выделить, скажем, 4 символа для номера заказа и пять для номера лота, так что это:

  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 мест для вашего первого фрагмента данных, и все, что после этого будет вашим другим фрагментом, и это может быть любой длины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...