kennyharrill said:
We are converting our inventory over to Microsoft's Retail Management
System.
We will also be tracking certain items through a Microsoft Access
database.
Our company designs silk screen heat transfers for the imprinted apparel
market. We want to be able to utilize a barcode scanner in this work.
We want it to be able to be used for ,say, a way for an invoice to be
checked off at a certain process. For example, one of our CSR's barcodes
the
invoice using her own personal barcode after the order's credit card has
been
cleared and it flags the invoice's record field at "T" or something
similar.
and it would also tag her name as the person who scanned the invoice with
the
barcode scanner.
Just curious if anyone out there has a system in place utilizing Access
with
barcode scanning. If so, please let me know some particulars of what you
do., plus suggestions on ways our company can utilize both. We are eager
to
get started on this right away. I have already been able to track down an
Active X Control for displaying barcode labels in Access forms, so that's
a
start.
Hi Ken,
We have Symbol scanners (on their desktop stands) at nearly all our
computers
which use the keyboard wedge design. We work with books, the scanners are
always "scanning," and if we stick a books sticker under the scanner, the
code
is sent to the computer like it was typed in from the keyboard.
We use these scanners for several Access programs.
For one, we have a stack of textbooks that need to be shelved (what
classes use these books?).
We use a continuous form bound to tblList with only one textbox set
up for input ("txtBarCode"). In its Change event, we wait until we have
received 13 characters from the scanner which is enough to get the first
9 numbers of an ISBN from the Bookland barcode. We then try to fill in
the other locked-and-out-of-tab-loop textboxes for the record from
"tblAdoptions" using a domain function (could be DLookup instead of DMax).
Once they have scanned the stack of books, we print a report in
reverse order of the scan that gives the classes for each book scanned
(using a query that joins "tblList" with classes table)
Private Sub txtBarCode_Change()
On Error GoTo Err_txtBarCode_Change
Dim varBarCode As Variant, varFullISBN As Variant
varBarCode = Me!txtBarCode.Text
'ignore until have collected 13 chars from scan
If Len(Trim(varBarCode & "")) = 13 Then
'first 12 chars of barcode are same for new and used books
'and our table only has new barcodes
varFullISBN = DMax("ISBNHyph", "tblAdoptions", "[MISBN]='" &
Mid(varBarCode, 4, 9) & "'")
'MsgBox "varFullISBN:" & varFullISBN & "varBarCode:" & varBarCode &
"mid:" & Mid(varBarCode, 4, 9)
If Not IsNull(varFullISBN) Then
'complete other fields in tblList for this barcode
'by looking up in tblAdoptions
Me!txtISBN = varFullISBN
Me!txtAuthor = DMax("Author", "tblAdoptions", "[ISBNHyph]='" &
varFullISBN & "'")
Me!txtTitle = DMax("Title", "tblAdoptions", "[ISBNHyph]='" &
varFullISBN & "'")
Else
Me!txtISBN = "Not Found"
End If
DoCmd.GoToRecord , , acNewRec
Else
If Len(Trim(Me!txtBarCode.Text & "")) > 18 Then
MsgBox "This BarCode cannot be resolved -- please retry."
Me!txtBarCode = Null
End If
End If
Exit_txtBarCode_Change:
Exit Sub
Err_txtBarCode_Change:
MsgBox Err.Description
Resume Exit_txtBarCode_Change
End Sub
For none-book applications, we use 3of9 barcodes to print/scan
(with 3of9 you can put nearly anything you want between
2 asteriks, so it really is the simplest to use).
For example, our Special Orders program prints out
a "who/what/where/how/why" page with the special order
number printed out in 3of9 barcode. This page follows the
order through "its life."
If the book is picked up, the page is put in a "picked-up"
hanging folder; if the book is reshelved because they did
not pick up by set time, the page is put in the "reshelved"
hanging folder.
At any time during the day, someone will collect these pages
and use "frmScanAList" (similar to above).
Private Sub txtSpecOrderID_Change()
On Error GoTo Err_txtSpecOrderID_Change
Dim varBarCode As Variant, varFullISBN As Variant, lngOrderStatusID As
Long, lngCustID As Long
varBarCode = Me!txtSpecOrderID.Text
'ignore until have collected 6 chars from scan
'format of report barcode: "*" & Right("000000" & [SpecOrderID],6) & "*"
If Len(Trim(varBarCode & "")) = 6 Then
lngOrderStatusID = DMax("OrderStatusID", "SpecialOrders",
"[SpecOrderID]=" & CLng(varBarCode))
Me!txtPreChangeOrderStatusID = lngOrderStatusID
Me!txtOrderStatus = DMax("Status", "OrderStatus", "[OrderStatusID]="
& lngOrderStatusID)
lngCustID = DMax("CustID", "SpecialOrders", "[SpecOrderID]=" &
CLng(varBarCode))
Me!txtCustID = lngCustID
Me!txtCustName = DMax("[FirstName] & ' ' & [LastName]", "Customers",
"[CustID]=" & lngCustID)
Me!txtStore = DMax("Store", "SpecialOrders", "[SpecOrderID]=" &
CLng(varBarCode))
varFullISBN = DMax("ISBNNoHyph", "SpecialOrders", "[SpecOrderID]=" &
CLng(varBarCode))
If Not IsNull(varFullISBN) Then
'complete other fields in tblList for this barcode
'by looking up in SpecialOrders
Me!txtISBN = varFullISBN
Me!txtTermName = DMax("TermName", "SpecialOrders",
"[SpecOrderID]=" & CLng(varBarCode))
Me!txtAuthor = DMax("Author", "SpecialOrders", "[SpecOrderID]="
& CLng(varBarCode))
Me!txtTitle = DMax("Title", "SpecialOrders", "[SpecOrderID]=" &
CLng(varBarCode))
Else
Me!txtISBN = "Not Found"
End If
DoCmd.GoToRecord , , acNewRec
Else
If Len(Trim(Me!txtSpecOrderID.Text & "")) > 6 Then
MsgBox "This BarCode cannot be resolved -- please retry."
Me!txtSpecOrderID = Null
End If
End If
Exit_txtSpecOrderID_Change:
Exit Sub
Err_txtSpecOrderID_Change:
MsgBox Err.Description
Resume Exit_txtSpecOrderID_Change
End Sub
Once a set is scanned, they select a "change of status" combox
and click on command button that runs an update query changing
status of each order that was scanned.
This "scanning" routine will also work just as well with someone
simply typing in the special order, but using the scanners means
"for-sure" accuracy.
Those are just 2 cases where we use the scanners, but maybe
they will give you some ideas.
good luck,
gary