Session D-BOSS
The BOSS and FoxExpress 2.6
Mike Feltman
Neon Software
The BOSS! - An Example of Developing an Application Using FoxExpress 2.6
Overview
The BOSS is an application that was created using FoxExpress 2.6. It also happens to be the in-house application that Neon Software uses to perform day-to-day operations. The beauty of The BOSS is that, while it is a fairly complex application, it was developed completely using FoxExpress 2.6. The purpose of this document is to take a look at how The BOSS was created.
In creating The BOSS we had needs that were specific to how we run the business. For example, there are times when we need to do mass mailings based on categories of customers. Another example is our need to track when we ship a software product, such as FoxExpress, to our users. Because of some of these needs, we added additional features to the application that could not be generated with FoxExpress. Lets take a look at how we addressed these specific needs using FoxExpress.
Customer Information
Before a screen could be created for Customer Information, the table(s) associated with the customers were created and added to the data dictionary. Through the data dictionary many options were selected. All of the fields were given descriptive screen prompts, format codes were specified and various lookup validation was selected.
Once the data dictionary setup of the customer table was complete, the was created as a main screen through FoxExpress. Other than moving some objects around and incorporating some boxes, the screen was ready to go.
After working with the Customer screen for a while, we ran into a problem with duplicate customers and the need to store additional information about customers, such as customer e-mail addresses and sales territory . FoxExpress supplies a built in method to check for duplicate entries into a single field, but not to check for duplicate entries based on the combination of multiple fields. In addition, in order to accurately check for duplicate customers, variances in how the individual operator entered the customers information needed to be accounted for as much as possible
In addition, we needed to categorize customers in some situation and that a particular customer could belong to more than one category. Neither of these items could be automatically generated through FoxExpress.
Duplicate Customers
Creating a custom duplicate checking method for customers was actually quite easy from within FoxExpress and several features in FoxExpress made it easier to do than it would be without FoxExpress. We did the following:
Customer Categories
In order to categorize customers, a table of categories needed to be created. We called this table Groups. The relationship between Customers and Groups is many-to-many since each customer can belong to more than one group and each group can contain more than one customer.
A third table, Customer Groups was established to store what groups each customer is a member of. Finally, we needed a data entry screen. Although we could have created a screen that allowed the user to simply enter the group name for each group they wanted to add a customer to, we knew there would be a relatively small number of groups and it would be easier for the user to select all the groups they wanted to add the customer to from a list of available groups. FoxExpress does not support a screen wizard for creating a screen of this type. This is how we did it:
Conclusion
Most of our users tell us that FoxExpress generates approximately 80% of an application, large or small, without changing a single line of code. Unfortunately, the other 20% are the items that are very specific to an application and are most likely more difficult to write. You must remember that FoxExpress generated applications are 100% FoxPro code and with a little creativity and liberal borrowing from other portions of your application, you can customize many of the pieces of your application and take advantage of the customization features in FoxExpress to meet your needs.