Just over twelve years ago after I'd gotten hired into Toyota's R&D facility in Ann Arbor the inventory system in the equipment checkout room went on the fritz. Something was decidedly wrong with it and I was asked to take a look to see what I could do.
What I found was a mess. The "database" was, in fact, an Excel spreadsheet loaded with macros. A pen-style barcode reader was dragged across a barcode, with the value being dropped into a cell in the spreadsheet. This was then manipulated by the macros to show the equipment as being either checked in or checked out and by which employee. The spreadsheet had a column containing possible shelf locations, another containing checkout locations, another with a personnel listing, etc. As the "system"'s contents grew, the spreadsheet became more than just unwieldly. And as it was, it was growing too fast for the developer who had to constantly go into the spreadsheet and add or remove information to keep it current.
That was my first experience with macros in an Excel spreadsheet. I've tried since to stay away from them.
People have a tendency to use spreadsheets as databases. In some instances, I've also seen databases that use information so sparingly that a spreadsheet would be more appropriate. The importance of using the right tool for the job cannot be understated, even where software is concerned.
The redevelopment of that inventory database at Toyota began with a version I'd written completely in Access 2.0. When the database was opened the initial form went to full-screen, which users found a lot simpler than trying to make sure the right field was on the screen as in the spreadsheet version. We also started using a handheld scanner, which prevented the barcode labels themselves from being damaged with the scraping of the barcode wand.
A subsequent version of this inventory system was developed using "real" software, Microsoft Visual Basic 5. A front end was developed which used information residing in an Access 97 database. This turned out to be highly flexible and very popular, and was distributed to three other Toyota facilities for their use.
A smaller version of this database showed up as a Case Study in Peter Wright's "Beginning Visual Basic 6" from Wrox Press. For this version, I developed a Library Transaction Wizard which illustrated the underlying code and workflow concepts in the Toyota system. While the content of the case study ended up being a little odd (thanks to an overzealous and quite-new junior editor), the information turned out to be quite useful to a number of beginning programmers.
At
Tuppas Software, our Inventory software is far more advanced and certainly far more flexible than any version of inventory software I'd developed earlier. Thin-client software running in browsers on multiple stations is something I had never thought to develop previously but it would have been a Godsend in a couple of those situations where a station ended up being shared. Tuppas' easily updateable software systems are also very much like was I was attempting to do all those years in developing and redeveloping the same type of software over-and-over as the development software and operating systems were updated. And custom-tailored software was exactly what I was doing when I redeveloped the Toyota inventory system as a library system for the Case Study for the VB6 book.
Even later, when I ended up buying a boxed system for a client who insisted that was the best thing to do ... well, I knew better. Boxed systems put the workers in that same box. Custom tailoring for culture and workflow is really the best fit solution.
Because really, who wants to work in a box?
Dave Liske
Tuppas Support Team