2009-06-03 13 views
1

J'ai une interface dans l'accès qui utilise un scanner de codes à barres pour recueillir des informations. Je voudrais avoir un code à barres qui contient plusieurs informations dans cet exemple: un code à barres qui contient la valeur d'une commande et un article spécifique sur cet ordre.définir des délimiteurs dans vba pour l'accès

Je ai des articles qui sont divisés en "lot", ces articles sont regroupés dans ces lots par l'article spécifique, il est, 1 type d'article par lot. Mais une commande peut avoir plusieurs types d'articles, donc plusieurs lots par commande. Je voudrais ajouter l'ordre et le numéro de lot dans un code à barres.

Il ressemblerait * O961LA1450 *

Les astérisques commencent et se terminent le code à barres. Le O commence le numéro de commande 961. Le L commence le numéro de lot A1450.

Je voudrais définir un délimiteur, "L", pour séparer le code à barres afin de comparer le numéro de lot au numéro de lot du formulaire pour vérifier qu'il est correct, puis remplir le numéro de commande sur le formulaire avec le bon numéro de commande. Est-ce que quelqu'un peut expliquer comment définir des délimiteurs ou avoir des extraits de code qu'ils peuvent offrir? Toute aide serait appréciée.

Répondre

2

exemple très basique:

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 

Résultats dans:

Order: 961 Lot: A1450 
+0

Merci beaucoup, c'était exactement ce dont j'avais besoin! –

1

Il est d'usage pour ce genre de données à utiliser des champs de longueur fixe, de sorte que vous souhaitez affecter, par exemple, 4 caractères à le numéro de commande et cinq pour le numéro de lot, de sorte que celle-ci:

0961A1450 

Est-ce être analysé:

Order Number: Left("0961A1450", 4) 
    Lot Number: Mid("0961A1450", 5, 5) 

La seule raison de gaspiller de l'espace sur les délimiteurs est lorsque les données ont une longueur variable. J'attribuerais probablement 5 caractères au numéro de commande et 6 au numéro de lot pour l'épreuvage futur (et le tampon de façon appropriée). Par exemple, l'exemple serait codé comme:

00961A01450 

... et vous voudrez probablement analyser cette façon afin de dépouiller les zéros à gauche:

Order Number: Val(Left("00961A01450", 5)) 
    Lot Number: Mid("00961A01450", 6, 1) & CStr(Val(Mid("00961A01450", 7, 5))) 

Après tout ce , il semble que les délimiteurs seraient plus faciles, mais je n'ai jamais rencontré de données de codes à barres qui les utilisaient. Si vous ne faites que coder deux données, cela pourrait être beaucoup plus facile, car vous alloueriez les N premières places à votre première donnée, et tout ce qui suit serait votre autre morceau, et il pourrait être de n'importe quelle longueur.

Questions connexes