# Shopping List application

Disclaimer

Location

Intro

General Info

Basic usage info

Technical stuff

Future Plans

Sample

Contact info & Closing

Database Structure

Revision History

### Disclaimer:

THIS APPLICATION IS PROVIDED FREE OF CHARGE AND IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. USE AT YOUR OWN RISK.

### Location:

Latest version can be obtained on my download web page

### Intro:

That disclaimer out of the way I want to thank you for using my shopping list application for the PocketPC. If you have any questions or comments for me feel free to contact me at siggi@icecomputing.com. Also I would be honored if you could sign my guest book.

### General Info:

This application will track your shopping list, allow you to define stores you shop at and associate each item with one or more stores. You can then filter your list based on store, or show a complete list. The application will remember all items you've ever entered; they can be viewed on the All Item tab of the application. Stores are defined on the Store tab. The List tab will show you the items currently marked as needed.

### Basic usage info:

This application has three tabs. One titled List is where your currently needed items are. The next one is titled All Items, which lists all items ever added to the list. The third tab is titled Stores, which lists all defined stores. Before you can associate an item with a store you need to have defined both the item and the store. What I recommend is using the Stores tab to define some of the stores you wish to be able to associate items with. To create a new item in any tab simply press the new button in the lower left hand corner of the screen, type the name of the item or store and press save followed by Close.

To add items to the list tab either find the item on the All Items tab (search function is available to help with that) and check the check box or add a new item from either the List tab or the All Items Tab. To use the search function simply type a word into the search field and press Go, and the grid will be reloaded with items that contain the word you entered. If you are viewing the List tab filtered to a particular store when you add a new item, that item will automatically be marked as needed. The store that’s selected will be pre-selected for you to associate with the item. You can also associate any item with any store, and as many stores as you choose. To associate an item with a store just select a store from the Associate with Store drop down and click Associate button. If you want to un-associate a store, select it and the Associate button will change to Un-Associate. Once a store has been select you can enter price and/or isle information.

To edit an item or store name simply click on the Edit button next to the item or the store name and you can edit everything about that item.

To delete an item or a store, first edit it then press the Delete button.

This application supports multiple databases, although only one can be opened at any given time. Upon exit, the application will put the name of the database in use and any store filtering selection into a .ini file that is used upon startup. If the database last used cannot be found it will offer to create a new one, or search or browse for existing databases. Also if the .ini file cannot be read, you will be prompted for a database to use and filtering defaults set to none.

### Technical stuff:

The structure of the underlying database is fairly simple. There are three tables: Items, Stores and ItemStores. The Items and Stores tables I think are self-explanatory, the ItemStores link the two together via many-to-many relationship. For those that are interested I've included the definition of the database in the form of SQL statements that will recreate the database if executed. The application itself was written in Microsoft eMbedded Visual Basic for PocketPC. I have only tested this on my Jornada 548, other PocketPC's should work though as I've included cabs for all the different processors. This may not work on older platforms, as they may not support all the features used. This has only been tested on PocketPC 2000, and compatibility with the new PocketPC 2002 is unknown at this time.

### Future Plans:

Currently I have no plans to add any new features, although if you have ideas for additional functionality send them over and I might decide to implement them. If you have UI improvements ideas I'd love to hear them, I might even implement them. If you find a bug please send me details on how to reproduce the bug and I'll see what I can do about it. I would be happy to share the source for this if you'd like to build on it or adapt it for different platform and or use. All I ask is that you give credit where credit is due and that you do not charge for the resulting product without my approval.

### Sample:

There is a sample database included in the distribution that is not copied to your device by default. I didn't want to automatically put stuff on your device that aren't needed, as I know space on these devices is limited. This sample file is just a simple Microsoft Access 2000 database that you can edit. However you should limit your editing to the Stores and Item tables data, any other modification could have unforeseen effects. It is best if you just use the form interface provided. You can edit it to include the items and stores you'd like. Then you would just copy it to your device and then simply use the open database function of the program to use it.

### Contact info & Closing:

Again if you have any questions and/or comments feel free drop me email at siggi@icecomputing.com. I'd love to know what you think about this application.

Sincerely,

Siggi Bjarnason

http://www.icecomputing.com/siggi

### Database Structure:

CREATE TABLE [ItemIDs] ([ItemID] INT)

CREATE TABLE [Items] ([ItemID] INT, [Description] TEXT, [Needed] BIT, [Qty] SMALLINT, [Coupon] BIT)

CREATE TABLE [ItemStores] ([StoreID] INT, [ItemID] INT, [pkID] INT, [Price] FLOAT, [Aisle] INT)

CREATE TABLE [PKIDs] ([PKID] INT)

CREATE TABLE [StoreIDs] ([StoreID] INT)

CREATE TABLE [Stores] ([StoreID] INT, [StoreName] TEXT, [Comment] TEXT)

CREATE INDEX [PrimaryKey] ON [ItemIDs] ([ItemID])

CREATE INDEX [PrimaryKey] ON [ItemStores] ([pkID])

CREATE INDEX [PrimaryKey] ON [Items] ([ItemID])

CREATE INDEX [PrimaryKey] ON [PKIDs] ([PKID])

CREATE INDEX [PrimaryKey] ON [StoreIDs] ([StoreID])

CREATE INDEX [PrimaryKey] ON [Stores] ([StoreID])

### Revision History:

Version 1.0: Initial Release

Version 1.1: Bug fixes

Version 1.2: Minor UI tweaks

Version 1.3: UI Enhancements

Version 1.4: Added capability to track file usage

Version 1.45: UI tweaks. Put in cleanup code that gets executed when terminated by OS.

Version 2.0: Revamped UI and added capability to track item price per store.

Version 2.1: Added capability to track item location in a store via Aisle field.

Version 2.2: Improved performance of Search feature, added duplication check and added a feature to total up price entered per store