Busy with small app to log serial numbers of TV sets received and despatched.
What I have:
Windows forms application
Wrapper class for data access
Function to write serial of unit received to DB (SQL: INSERT INTO .... )
Function to despatch a unit. Add a despatched date to the record (SQL: UPDATE... WHERE...)
All DB write functions are in Try Catch blocks -
The INSERT Function returns true if no exception occurred, or false if exception occurred, and updates an error variable string with the exception message...
The UPDATE function returns true if one record was updated, or false if more or less than one record was updated, as well as updating an error variable string.
What I need:
Scans must be fast (They can scan up to 2 TV's per second or as fast as the scanner can read)
Need to ensure duplicates are indicated to user and not written to DB
(Using a netbook,they normally scan a pallet at a time, but sometimes they miss a unit, so they scan the units on a pallet again to find the unit they missed - I've used sound before to indicate a good scan vs an error, and also have a count showing when a pallet is complete, so often they scan the pallet without looking at the netbook, and at the end of the pallet, have a look to see that the pallet is complete)
If app is closed by mistake, or netbook batteries die or something, what was scanned cannot be lost - so need to write each record to the database as it is scanned
The database may be stored on a network drive, so there is a possibility that access to the database may be dropped.
Units are scanned into production, assembled and tested and then despatched, so I only expect four types of error from a database write:
a) Database not accessible
b) Duplicate scanned when receiving units
c) Serial no of Unit for despatch has not been scanned in yet
d) Serial for despatch has already been despatched (I.e. record already has a despatch date)
Is somewhat broad, but I would appreciate any advise or tips on how to validate the data and handle any errors. Maybe you have done something similar and have some cool ideas on error handling?