ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Applications Generator System º º Main Documentation º º With Appendixes º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ by: RL Coppedge, CDP CIS #: 72117,165 446 Richmond Pk E 402A Genie: XTH43280 Richmond Hts, Ohio Cleve Free-Net: AE069 44143 Copyright 1988, RL Coppedge CDP March 25, 1988 V2.0 Section # Topic Page # Section 1.0 Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 What is an Applications Generator System? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 How to Use this Document. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Who Should Use it. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.4 What should you know beforehand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.5 What to do if you have Questions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.6 What is a Database? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Section 2.0 Starting the System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1 Standard Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Turning the Machine on. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3 Starting your Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3.1 Your Application Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3.2 Get Going! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Section 3.0 Main Menu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3.1 Inquiry/Entry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2 Reports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.3 File Transfer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.4 WP Conversion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.5 Search. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.6 Housekeeping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.7 Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.8 Filter Maintenance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Section # Topic Page # Section 4.0 Inquiry/Entry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.1 Choosing a Sort Order. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 4.2 Entering the Key Field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.3 Edit the Record. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.3.1 Special Keys and their Uses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.3.2 Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.4 Update/Release Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.5 How to Enter Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.6 How to Add a Lot of New Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.7 How to Change Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.8 How to Delete Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.9 How to Print Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.10 A Sample Entry Session. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Section 5.0 Reports. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Section 6.0 File Transfer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Section 7.0 Wp Conversion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 7.1 What is this for? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 7.2 Output Format. . . . . . . . . . . . . . . . . . . 20 7.3 How to Choose Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 7.4 Choosing a Filter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 7.5 Choosing a Sort Order. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 7.6 What to do on the WP end. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Section # Topic Page # Section 8.0 Search. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 8.1 What does Search do? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 8.2 What does Search not do? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 8.3 Entering Additional Field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 8.4 Choosing a Filter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 8.5 Totals Only? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 8.6 Printed Out? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 8.7 Choosing a Sort Order. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 8.8 New Page? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Section 9.0 Housekeeping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 9.1 Data Backups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 9.2 Reindex Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 9.3 Data Verification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 9.4 Control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 9.4.1 Confirm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 9.4.2 Delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 9.4.3 Bell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 9.4.4 Exact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 9.5 Delete Blank Records. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 9.6 Packing Your Database. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Section 10.0 Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 10.1 Database Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 10.2 Command Line Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Section # Topic Page # Section 11.0 Filter Maintenance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 11.1 What is a Filter? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 11.2 Simple Filters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 11.3 Complex Filters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 11.4 Maintaining a Filter Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 11.5 Choosing a Filter. . . . . . . . . . . . . . . . . 40 11.51 Enter a Manual Filter. . . . . . . . . . 41 11.52 Access the Filter Library. . . . . . . . 42 11.53 Use the Filter Guide . . . . . . . . . . 42 11.6 Filter Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Section 12.0 Additional Notes and Capabilities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 12.1 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 12.2 Training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Section 13.0 Suggested Ways of Learning More. . . . . . . 46 Figure Page: Figure 3-1 The Main Menu 5 Figure 4-1 A Sample Database Structure 8 Figure 4-2 A sample Sort Order Menu 9 Figure 4-3 Entering The Key Field. 9 Figure 4-4 A Sample Data Entry Screen. 10 Figure 4-5 List of Keys and their Functions. 11 Figure 4-6 Data Types 12 Figure 4-7 Update/Release Command Line 13 Figure 4-8 Update/Release Decision Table 14 Figure 4-9 A Sample Record Awaiting Entry 16 Figure 4-10 A Sample Data Entry Session 17 Figure 7-1 WP Options 20 Figure 7-2 Output File Name 21 Figure 7-3 A Sample Letter 22 Figure 7-4 A WP Conversion Selection Screen 23 Figure 8-1 Search Options 25 Figure 9-1 Sample Housekeeping Menu 27 Figure 9-2 Backup Menu 28 Figure 9-3 Backup Message 29 Figure 9-4 Control Menu 30 Figure 10-1 Help Menu 33 Figure 10-2 Sample Database Help Screen 33 Figure 10-3 Sample Command Line Help Screen 34 Figure 11-1 A List of Filter Operatives 36 Figure 11-2 Some Simple Filters 37 Figure 11-3 A List of Linking Conditionals 39 Figure 11-4 Filter Maintenance Menu 40 Figure 11-6 Filter Entry Screen 41 Figure 11-7 Sample Filter Library 42 Figure 11-8 Boolean Conditions 43 Appendix: A: System Flowchart 47 B: Technical Documentation 48 C: Create! 49 D: Index 50 Note: Only Appendix C is included in the Non-Registered Version. Appendix D is included in the Registered version, and A and B is included with the actual Code. Section 1.0 Introduction. 1.1 What is an Applications Generator System? Well Billy, an Applications Generator System, or AGS is used to allow development of computer software in a much faster and more efficient manner than before. By merely entering into the system certain qualities and capabilities you need along with a specific database format, the system automatically generates over 90% of the computer code necessary to begin entry, modifica- tion and retrieval of information...that's like taking an eighty hour programming job and finishing it before you leave for lunch... Throughout this document you'll not see a specific database, field or application mentioned (except for examples). That's because the manner in which one application works is the same way all of the others do as well. Which means that this document can serve as documentation for everyone, with minor additions and modifications. 1.2 How to Use this Document. This document is intended to introduce people to the way that information is entered, modified and used with the Applica- tions Generator System (AGS). This is not intended to be an introduction to computers, nor is it intended to show people everything there is to know about Dbase III+. Far from it. There are far better documents, training tools and the like for that task. This document is to be used simply to understand how to use the AGS. This document is also not intended to be used to create an application through the AGS. This document assumes that all of this has already been done by someone familiar with the system. If there has been no creation done yet, than this document is really useless. However, it is recommended reading prior to running the Create mode so that the Creator will understand better how to define the database (as well as the Create.Dbf file, which is better defined in the Create Documentation, Appendix G). 1.3 Who Should Use it. This document should be used by anyone who is interested in entering, modifying, reporting or just plain looking at informa- tion that is contained in your particular application. It can also be used for someone who on a more limited basis may want to look at the information once in awhile. 1.4 What should you know beforehand. The person who is going to try to use this system really should be familiar with some of the jargon associated with computers, but certainly does not need to be anything near an expert. However, without a doubt it helps to be comfortable with the machine at hand. Take advantage of some of the tutorials, books and other learning tools that are available. Learn how to use the machine, and what most of the keys mean. 1.5 What to do if you have Questions. Everyone is going to have a question, or is going to be stuck at one point or another. However, don't let it bother you. We have done everything we can to ensure that the informa- tion is protected against accidental damage. Also, since you are doing backups on a routine basis, even if there is some catastro- phic damage, the time to bring you up to date should be minimal. So go ahead and call for support...or try to solve it yourself. Again, you really can't mess things up too badly...as long as you're doing backups!! (See Section 9.1, Backups). As the author of the AGS, I will make myself available to some degree, but don't expect too much. (Especially if you're not a registered user) 1.6 What is a Database? Knowing the technical information about a database is really unimportant here. What you need to know in order to use it is simply that a: Database: is a collection of specific information that can be used or retrieved in an organized fashion and method. Record: is an individual member (or transaction) of that database that refers to one specific instance or case contained in the database. Again, PLEASE! Don't take my definitions. Learn from other sources much better than this. Section 2.0 Starting the System. 2.1 Standard Configuration. Unless different for a particular application, the following is a list of requirements for the AGS to work on a system. An IBM XT, AT, 286, 386, PS/2 or 100% compatible 640 KB RAM 1 360 or 1.2Mb floppy disk drive 1 10 MB hard drive 1 Printer Monitor + keyboard (rather obvious) Dbase III+ (From Ashton-Tate) or lookalike And the following directories (which are set up by the Create function): C: (is the Drive): C:\DBASE is where the Dbase III+ program is stored C:\DBASE\DBUTIL is where the Dbase III+ utilities are C:\DBDATA\HELP is where the HELP DBF files are stored C:\DBDATA\(Appname) is where the application programs and data are stored. Note that there can be several applications on this disk... Although the monitor type (monochrome, CGA, EGA) really won't make a difference, make sure your file CONFIG.DB is properly set up (see you Dbase III+ documentation for details on that). On some monitors the Help screen may work a tad flakey (not going away when you hit any key). We're working on that. As far as printers go, there are no special print characters used in this system (to ensure smooth transportation from one machine to another). Maybe in a later release. 2.2 Turning the Machine on. Of course, like any great adventure, this one begins with a single step. Turn the machine on. Usually you can do this without worrying about where a floppy disk is, just flick the switch. Make sure that the monitor (TV screen) is turned on, and that the printer (if you plan to use it) is both on and on-line. 2.3 Starting your Application. Ok, so you've gotten this far...you've turned on the machine, and you've read the menu on the screen. Now you're ready to begin your database application. 2.3.1 Your Application Name Each Dbase application has a name associated with it. This name serves several functions. In our sample menu previously discussed, the Application Name was "test". It: Is the name of the subdirectory on Dbase (ie, path = C:\DBASE\TEST) Is the name of the Database File (ie, TEST.DBF). Is used for creating several program files for various purposes throughout the system (ie, ETEST.PRG, W1TEST.PRG, etc.) You should know your application name, and always keep it in mind! 2.3.2 Get Going! Enough! To start your system, you would move to the Dbase directory and start Dbase with the command stated in such a way so it would also immediately execute your application's menu. For example, in our sample, we were using "Test" as our applica- tion name. So, we type in the following: DBASE Test Upper case, lower case, it doesn't matter. The system should then bring up the Dbase III+ main screen, and then clear again and display the Applications Main Menu. You are now in! (yea!) Section 3.0 Main Menu. The main menu is a list of tasks that you can perform. All tasks are related to the same database (or to hidden databases that support it). All programs supported by the AGS can be accessed through the main menu. The only exceptions to this rule would be a special need created by a particular application. Only by entering the system through the main menu are you assured of initializing all variables to their proper values. If you were to try to access the programs from outside of the menu, even if the screens seem to work, they probably are doing something unwanted in the background. So please, access the system through the main menu only, and be careful when you don't. When the Main Menu appears, you will be given a list of tasks. There may be some tasks which appear on your screen that are not in the documentation here. This is due to the fact that there are certain capabilities on these systems that are in addition to the main functions, which are listed below. More information on these tasks can be found in Appendix D, Specific Database Information. On most systems, the main menu looks something like this: |-----------------------------------------------------------| |Test Database System | |Choose from the following: | | | | | |1> Inquiry/Entry 7> Help | | | |2> Reports 8> Filter maint | | | |3> File Transfer | | | |4> WP Conversion | | | |5> Search | | | |6> Housekeeping | | | |For help on any one of these, press -# | |Which one do you want (Q to quit) | | | |___________________________________________________________| Figure 3-1 The Main Menu (Valid Responses:1,2,3,4,5,6,7,8,Q,q,!,@,#,$,%,^,&,*) Note that in place of Test Database will be the title (which is more descriptive and longer than the application name) of the database/application. 3.1 Inquiry/Entry. Inquiry/Entry is the function that allows you to inquire (look at), add, change, delete and print information contained in the database. Access to the information is on a record-by-record basis, and can be accessed according to several parameters(see Section 4.1 Choosing a Sort Order). See Section 4.0, Inquiry/Entry. 3.2 Reports. Reports will list and give access to the various reports that have been developed specifically for your particular database. Note that originally this menu is a dummy menu program. See Section 5.0, Reports. 3.3 File Transfer. This task will allow and control communications with other computers (for those systems with these capabilities). Note that originally this menu is a dummy menu program. See Section 6.0, File Transfer. 3.4 WP Conversion. This task will set up a file for you to use your database information to produce special form letters, labels, etc. using your Word Processing Mail Merge (also known as "List Processing") capabilities. It works currently with: WordStar 2000 WordPerfect WPS PC+ DisplayWrite Dbase III+ See Section 7.0, WP Conversion. 3.5 Search. This tasks allows the user to inquire information under specific conditions existing in the database. See Section 8.0, Search. 3.6 Housekeeping. This menu controls several support functions (backup, etc.) available to the user. See Section 9.0, Housekeeping. 3.7 Help. This task gives the user on-line help concerning the database and its fields. See Section 10.0, Help. 3.8 Filter Maintenance. This task allows the user to set up and maintain filters which would be commonly used. See Section 11.0, Filter Maintenance. Section 4.0 Inquiry/Entry. Inquiry/Entry (or, just "Inquiry") is probably the most important task in the system to understand. Through this function data is added, changed, deleted or just looked at. Let's create a sample database that we can work with. This database will be given the task to analyze the various types of property we have in a particular area. With that in mind, we might come up with the following structure(this is a slightly modified "DISP STRUC" Dbase command): ____________________________________________________________ | | |Structure for database: C:test.dbf | |Number of data records: 4 | |Date of last update : 07/01/87 | |Field Field Name Type Width Desc | | 1 E_DATE Date 8 Date of Entry | | 2 ST_NUM Character 8 Street Number | | 3 ST_NAME Character 20 Street Name | | 4 PARCEL Character 10 Perm. Parcel # | | 5 CEN_TRACT Character 5 Census Tract | | 6 CEN_BLOCK Character 3 Census Block | | 7 SCHOOL_D Character 4 School District | | 8 UNITS Numeric 3 # of Units | | 9 PROP_TYPE Character 2 Property Type | | 10 OWN_NAME Character 20 Owners Name | | 11 O_ADDR1 Character 30 Owners Add #1 | | 12 O_ADDR2 Character 30 Owners Add #2 | | | |** Total ** 143 Bytes per Record | |___________________________________________________________| Figure 4-1 A Sample Database Structure When we want to look at, add or change this database, we would perform the following steps: a> Choosing a Sort Order. b> Enter the Key Field. c> Edit the Record. d> Update/Release Record. 4.1 Choosing a Sort Order. This is the first option that shows up after the main menu. In order to access the information, you must tell the computer which way you want to access it. This is called the sort order. A sort order can be based on any single variable, as long as it is contained in the database as an individual variable them- selves. Once the sort order has been determined, then you must indicate what specific value for that sort order you want to see. Now, what kind of sorting would we want? The real question to ask is, "What are the various ways I would want to recall information to the screen?" In this case, the answer could be: 1> By Street Name. (I want to look at an area) 2> By Property Type. (I want to look only at commercial properties) 3> Add new ones. (I don't want to see any, I just want to add more) 4> Browse. (I want to look at special conditions) For something with these options, the Sort Order screen would look like this: ___________________________________________________________ | | | Enter one of the following methods to access the | | Test Database: | | | | 1> By Street | | 2> By Property Type | | 3> Add New Records | | 4> Browse | | | | Enter your choice here (or "H" for help, "Q" to quit) | | Well, what'll it be? | | | |___________________________________________________________| Figure 4-2 A sample Sort Order Menu (Valid Responses:1,2,3,4,H,h,Q,q) 4.2 Entering the Key Field. Let's assume that you wish to identify the record that you want to change by using the Street Name. That is the key field you wish to enter (you would choose this option by entering a "2" at the above screen). Since you have identified the sort order as the Street Name, the system is now going to state: ____________________________________________________________ | | | Enter Street Name you wish to modify: | |___________________________________________________________| Figure 4-3 Entering The Key Field. If, for example, you wanted to find a property that is on "ANYSTREET", you would type in: ANYSTREET 4.3 Edit the Record. The system will then look through its database to find any occurrence of a Street Name of "ANYSTREET". If it cannot find one, it will flash the message "NOT FOUND-- ADDING NEW RECORD". But in either case, the database screen will appear. If it is a new record, the values of the data will be at their initial values. But if there was an "ANYSTREET", the information will appear on the screen. A sample screen appears below: _____________________________________________________________ | | | Del_flg:NOT | | NOT FOUND-- ADDING NEW RECORD | | Entry Date: / / | | | | Street Number: Street Name: ANYSTREET | | Permanent Parcel #: | | Census Tract:Census Block: | | School District:# units for property: 1 | | Property Type: | | Owners Name: | | Owners Address #1: | | Owners Address #2: | |___________________________________________________________| Figure 4-4 A Sample Data Entry Screen. In the example above, this is a new record being added (notice the "NOT FOUND..." message). As you can see, there is some information already included on the screen, even though there has been no entry. For example, the computer has already filled in the Street Name field with "ANYSTREET" (since that was what you had requested). Also, the Entry Date was assumed to be today's date (in this case 24 Jul 87) and the number of units was a default of "1". The cursor is placed at the top left of the screen at the beginning of the block reserved for "Entry Date". The system has placed the blank date in that field. If you want to change it, simply type in a new date (It must be a valid date. Also, don't put the '/'s in. The computer handles that). 4.3.1 Special Keys and their Uses When you are finished with the date, either the key or the key will move you to the next field. Figure 4-5 shows the various keys used during data entry. These are standard keys for use is Dbase III+ entry. See the Dbase III+ documentation for more information. _____________________________________________________________ | Key Function | | | | Denotes end of a field, moves to | | next one | | Moves one character to the left | | within field | | Moves one character to the right | | within field | | Moves to previous field | | Moves to next field or ends entry (for | | last field) | | Moves to next field or ends entry (for | | last field) | | Erases character immediately to the | | left of cursor | | Erases character cursor is resting on | | Toggles Insert On/Off | | Moves cursor to first field on screen | | | | Ends input | | Ends Input | |___________________________________________________________| Figure 4-5 List of Keys and their Functions. 4.3.2 Data Types Keep in mind at all times the limits to the various types of data. Each type of data has their own limitations. Referring back to Figure 4-1 shows the four types of data used by the AGS. They are Character, Numeric, Logical and Date. Some of their characteristics are outlined in Figure 4-6. At this point in time, AGS does not support Memo fields. Perhaps in a future release. Character fields are most common, and are used to contain "alphanumeric" (containing both alphabetical and numeric charac- ters) information. However, they cannot be used as numbers, nor as dates, and therefor have extremely limited computational value. A numeric field, as its name implies, contains numeric information that is to be used computationally. For example, the field units in our test (back in Figure 4-1) would have possibly a 2 contained within (representing that the property has two units within it). The zip code (not used here) may be "44118", but it is not a number. It's important to keep the distinction in mind. A date field contains a valid date, using the format "MM/DD/YY". Yes, it keeps track of leap years. Finally a Logical Field is a simple Yes/No field. In our test, we have a field called Del_flg. It is either Yes or No, and cannot have any other value (Yes/No is also called True/False, 1/0, On/Off, but the idea is the same). _____________________________________________________________ | | |Type Valid Invalid Comments | | | |Character "Waldo!" True Character is the | | "413" 413 most common type. | | "January 5" 01/05/87 | | | |Numeric 413 "413" Numeric follows | | 41.3 41 3/10 standard math | | -5.234 rules. | | | |Date 12/23/87 "12/23/87" Must be in | | 12/33/87 valid mm/dd/yy | | Jan.6 format | | | |Logical .T. T These are the | | .F. F only valid | | .Y. Yes values for | | .N. nope Logicals | | | |___________________________________________________________| Figure 4-6 Data Types Each data type fills a vital role and is critical in some way or another. When entering data, the system will automat- ically check whether your input is valid to the field you are currently on; if it is not, an buzzer will sound, and the cursor will not show your attempt on the screen, nor will it let you move on until the data is good for that field. 4.4 Update/Release Information. When you are finished entering the information, the system will flash on the second last line of the screen a particular command line (see Fig 4-7). This command line lists the six things that you can do with the record you have just edited. _________________________________________________________________ | | |#-Hlp 1-Sve/Ex 2-Save/Nxt 3-Print 4-Del 5-Qt/Ex 6-Qt/Nxt| | | |_______________________________________________________________| Figure 4-7 Update/Release Command Line Of the six options you have listed, #'s 1,2,5,6 are rather interrelated in how you dispose of the information you have just entered. # 3 and 4 are independent. #3 Print. This option will print out the record onto your printer (with no particular print controls or anything). It will then return you to Figure 4-7's command line. #4 Delete/Undelete. This option will mark the record for future deletion. It will not actually remove the record from the file. To do that, see Section 9.6, Packing Your Database. This leaves #'s 1,2,5,6. There are two questions that are asked after you have entered your record. They are: 1> Do I want to save what I just did? 2> What do I want to do next? Each question has two possible responses. The first one is a simple Yes/No Question. It deals with the possibility that you do not want to save what you just did (you were just looking, or you changed your mind). If you want to save it, the computer will update the file contained on the disk. If you do not, the system will simply ignore the information as if it never hap- pened. As to the second question. There are also only two answers, but they are not Yes and No. They are: 2a> Return to Main Menu. 2b> Go to the next record. The first one is simple enough. It simply refers to the idea of returning to the Main Menu (shown in Figure 3-1), basically saying you're done with Inquiry/Entry. The second one will simply look for the next record after this one. The next record is defined by the choice you made concerning the Sort Order (see Section 4.1, Choosing a Sort Order). If we continue with the idea that we chose Sort Order # 2 (by Street, according to Figure 4-2) and our key field we entered was "ANYSTREET", the system will look for the next occurrence of "ANYSTREET". If the system cannot find one, it will act as if it was adding a new record. So, those are the two questions. And since there are two possible answers each, there are a total of four possible combinations of the two (see where we're going?) Figure 4-8 shows a decision table of the four questions. By cross-referencing the two answers, you will find a number. That is the number that you would enter in response to the Update/Release Command Line. ____________________________________________________________ | | | | Return to Menu? Y | N | | -------------------------+-------+--------| | | Update Disk? Y | 1 | 2 | | | |-------|--------| | | N | 5 | 6 | | | |----------------| | | | |___________________________________________________________| Figure 4-8 Update/Release Decision Table 4.5 How to Enter Information. There are a few tips to entering information. They are: Stay consistent with your cases on entering Character information (small letters vs. CAPITAL letters). Although the system can be set up to ignore the differences, you should strive to maintain consistancy. Watch out against adding blank records to the system. (But if you do, there's a way to get rid of the in Housekeeping) As a rule, only use option #'s 1 + 2 when you really are updating information. Careful with deleting records... Be true to your school. If you are ever unsure of what's happening, your first step should be to reindex your files (see Section 9.2, Reindexing Data). And never let them see you sweat. 4.6 How to Add a Lot of New Information. Adding new information is rather simple. Choose Sort Order #5, Add New Records (See Section 4.1, "Choosing a Sort Order" and Figure 4-2). The system will not ask you for a key field, and will simply initialize a new record. However, you have to watch out because the system will not tell you if a duplicate record exists. 4.7 How to Change Information. If you want to change information about a particular record, simply call up the record, (using Sort Order 1,2 or 3. It's up to you) and then change it all you want, using the keys as described in Figure 4-5. By entering information over or in addition to what was there previously, you are replacing that data on the screen only. Once you are finished changing the information and you hit get the Update/Release Command Line (see Figure 4-7), you should then review the changes you have made. If you want to retain the changes, choose either option # 1 or 2 from the Update/Release Command Line (See Section 4.4 Update/Re- lease Information, and Figure 4-8). If you choose either #1 or 2, the information is then written permanently (until you change it again) to the disk drive of the computer. Choosing option #5 or 6 will cause the changes you have made to be erased, and the record will revert to its original form (which contained what was there when it first came up on the screen). 4.8 How to Delete Information. Real simple. Call up the record, then the Update/Release Command Line and select option #4 (Delete). If you would call the record up again, you would see that in the upper right-hand corner, the display would say Del_flg: DELETED. This means that the record is marked for deletion. IF you have a change of heart and decide not to delete it, simply select option #4 (delete) again. But once you perform the Pack function (see Section 9.6, Packing Your Database) , that record is gone forever. 4.9 How to Print Information. Also easy. Call up the Record, and select Option #3 (Print). Assuming you have a printer on-line and ready, it should begin instantly printing out a hardcopy. wow! 4.10 A Sample Entry Session. Assuming that we have one new record to enter. Let's start from the beginning, with the system turned off. Before we turn the machine on, we have to understand what it is we're going to enter. The information should be organized in such a way that you can easily tell what should be in each field. Let's assume you've done that, and the data you're going to enter is in Figure 4-9. _____________________________________________________________ | | |Field Field Name Desc | | 1 E_DATE Date of Entry Today's Date | | 2 ST_NUM Street Number 1436 | | 3 ST_NAME Street Name Anystreet | | 4 PARCEL Perm. Parcel #53-233-43 | | 5 CEN_TRACT Census Tract 1406 | | 6 CEN_BLOCK Census Block 22 | | 7 SCHOOL_D School District (don't know) | | 8 UNITS # of Units 1 | | 9 PROP_TYPE Property Type I | | 10 OWN_NAME Owners Name Waldo | | 11 O_ADDR1 Owners Add #1 64 Main St. | | 12 O_ADDR2 Owners Add #2 Ny,Ny 12345 | | | | 1st Value: Computer's Field Name | | 2nd Value: Description as on Screen | | 3rd Value: Data to be Entered for Record | |___________________________________________________________| Figure 4-9 A Sample Record Awaiting Entry Now you will notice that for one field, School District, we don't know the value for that field. Perhaps we'll learn it later, perhaps not. But we want to enter the record now. Figure 4-10 shows a step-by-step procedure for entering the record. _____________________________________________________________ | | | Step Fig Desc Action | | # | | 1 Turn Machine on. Flip switch on. | | | | 2 2-1 Start Application. "Dbase AppName" (See| | Sec. 2.4 | | | | 3 3-1 Begin Inquiry/Entry "1" | | | | 4 4-2 Choose Sort Order "4" | | | | 5 4-4 Begin Entering Data Enter information | | given in Fig 4-9 | | according to Sec. | | 4.3 | | | | 6 4-7 Update/Release Line If Data good, | | choose #1, else | | choose #5. | | | | 7 3-1 Exit from System "Q" | | | | 8 Turn Machine off. Flip switch off | | | | Notice that there are quotations (") around the var- | | ious Actions. Do not enter these. | |___________________________________________________________| Figure 4-10 A Sample Data Entry Session Section 5.0 Reports. Reports are critical in that they are the main method other than inquiry we use to process the information to others and it is the only way in which we can organize the data and produce it in a form that is more usable. Whereas the inquiry function outlined in Section 4.0 is useful for looking at individual records, reports are needed to look at all records, and how they relate. Reports are produced and designed with specific the applica- tion in mind. You should refer to the documentation of your application for more information. (See Appendix D, Specific Database Information) Section 6.0 File Transfer. File Transfer is an activity that takes place when the system used is going to engage in any communication activity connected through network, data switch, direct wire or modem to another computer (or group of computers), or simply importing from another application. File Transfer controls the preparation of data to be sent from one point to another. At this point it is a dummy menu, but open for enhancement. An example which has been used in the past is to have this option drive updates to the database received from a minicomputer system. Section 7.0 WP Conversion. 7.1 What is this for? WP conversion provides (although not for every application) an important side benefit for your data. It allows you to prepare List Processing (aka MailMerge) files directly from your database. This function should be used by people familiar with the various Word Processing capabilities associated with List Processing. There are currently five packages supported by AGS, and more can be introduced in the future. Let's use our test database as an example. Suppose that a school in the school district "Wise" was giving an open house on a particular date. Now, it's easy for Word Processing to generate a letter telling people about this. We could then make a lot of copies, and everyone would get a form letter. But wouldn't it be better to send a personalized letter to everyone in the school district? Of course it would! WPC allows you to prepare files that would allow us to send a letter to everyone that owns property in the Wise school district (as long as they're contained in the database). The letter would be add- ressed to the owner personally, and would go out only to those in the Wise District. 7.2 Output Format. The first item of information asked for by AGS here is which WP package you want to convert to. This is done through the menu you see in Figure 7-1. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ The following translation types are available: ³ ³ 1> Dbase ---> Word Perfect ³ ³ 2> Dbase ---> Word Star 2000 ³ ³ 3> Dbase ---> WPS PC+ ³ ³ 4> Dbase ---> Display Write IV ³ ³ 5> Dbase ---> Dbase (setup a new database) ³ ³ Which type do you want to do (H help, Q to quit)? ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Figure 7-1 WP Options By choosing #1-5, you will determine the format of your output file. In some cases, other WP packages would also work here without modification. 7.3 Output File Name. The first thing that we are asked in WP Conversion is the name of our output file. This is where all of the prepared information is going to go. It is a temporary file (you should delete it soon after producing the letters) and for the most part should be relatively small. The name cannot be more than seven letters long. (See Figure 7-2) It will be produced in the \DBDATA\'Application Name' subdirectory. The extension of the file will be: Package Name: Extension: WordStar .WS WordPerfect .WP WPC PC+ .WPS DisplayWrite .DSP Dbase .DBF (Notice the the dbase option will actually create a new database. This is for situations where you want to 'play' with data without upsetting your main system) _____________________________________________________________ | | |What is the Output File name(H help, Q to quit)? | |___________________________________________________________| Figure 7-2 Output File Name Make sure that you write down the file name you use so that you don't forget it later. 7.3 How to Choose Fields. There are a total of 13 fields in the test database we've been using. Out of them, however, we really only need 5 of them to send this letter to the property owners. Prior to running this function, we should have the letter written out. We've done so, and the results are seen in Figure 7-3. Keep in mind that we do not need to actually enter the letter into the Word Processor prior to our running the WP Conversion function, but it doesn't hurt to do so. _____________________________________________________________ | | | | | | | | | | | Dear ; | | | | As owners of the property at , | | we thought that you might want to take a look at | | our wondrous Wise school system here. It's really | | a thrill to think that people like you would ever | | think to give their children's minds up to us! | | | | We're having an open house on Thursday, August | | 10, at 7:00. Hope you can attend! | | | | Sincerely, | | | | Waldo Muckenfloss | | School Muckraker | |___________________________________________________________| Figure 7-3 A Sample Letter (Hey, I write programs, not open house letters!) You will notice that I have bolded where we will need data from the computer put in for each individual letter. So, the fields we need are: Own_name O_addr1 O_addr2 St_num St_name At first glance you might also think that we need the school district itself (School_D). But we don't that in the letter, we need it to select which records we are going to produce. That comes later, in section 7.4, Choosing a Filter. Now, since we know which fields we're going to need, we're ready to proceed to the next screen. Immediately after choosing a file name, the system will display a screen with all of the possible fields displayed (See Figure 7-4). _____________________________________________________________ | | | WP List Processing Selection Screen For Test Database | | | | 1>Entry Date: | | 2> Street Number: 3> Street Name: | | 4> Permanent Parcel #: | | 5> Census Tract: 6> Census Block: | | 7> School District: 8> # units for property: | | 9>Property Type: 10> Owners Name: | | 11> Owners Address #1: 12> Owners Address #2: | | 13> Deleted Flag: | | | | Which one do you want to change (H for help, Q to quit)| |___________________________________________________________| Figure 7-4 A WP Conversion Selection Screen You'll notice that this looks strangely like the entry screen (see Figure 4-4), except that there is nowhere to actually enter information. That's because the only information needed is whether or not you a particular field to be included in your output file. Also each field description has a number immed- iately to its left. To choose a field, simply enter the number. Once chosen, that field will flash in inverted colour. If you've chosen one mistakenly, simply choose it again, and the field will revert to its normal colour. Keep doing this until you have chosen all fields you wish to be included in the file (in the case above, you would enter: 2,3,10,11,12). After you have all of the fields you want, enter a "Q" to signify that you are done. 7.4 Choosing a Filter. The next question asked by the system is concerning your filter. (See Section 11.0, "Filter Maintenance") 7.5 Choosing a Sort Order. Usually for List Processing type of applications this is rather unimportant. If there is a particular order you want, then you should select accordingly; otherwise, any order will do. One thought here is if you do this enough, you should make the Zip code of the address a Sort Order, possibly saving some costs on postage. At this point the system will begin its search and will display an appropriate message of "Do Not Touch Me!!", encour- aging people to leave it alone while it's working. For larger files, the system will generally take approximately 1.5 seconds for each selected record (dependant on so many things that I wouldn't even come close to guaranteeing that rate). 7.6 What to do on the WP end. Once that is completed, you should copy your file (using an appropriate DOS command) to your Word Processing Sub-Directory. Once that is completed, you should refer to your Word Processing documentation on how to proceed. Some packages will require you to build file layouts corresponding to the layout you requested. The fields are sent to the file in numeric order, as opposed to the order in which they were chosen. Section 8.0 Search. 8.1 What does Search do? Search gives a non-technical person with little or no computer experience the ability to ask simple "how many" ques- tions, like "how many people have moved into the Wise school system since January?" without having to struggle with either the computer or more knowledgeable computer people. 8.2 What does Search not do? Search is not a report writer. It is not meant to take the place of standardized reports. It is meant as a simple free-form function that can make those unplanned research questions a little easier and faster to answer. The output of Search is not intended to presentation-ready, not should they be distributed without proper explanations (any data can be misleading if not presented properly). The output that Search provides is limited to two or three particular fields (defined by the specific database), and one user defined field. If this field is numeric, than the totals and average values are automatically given at each break (a break is where the value in the sort order chan- ges). Figure 8-1 shows a list of all options given in Search. As you can see there are several items that go into a search. Most of them have to do with paging or the output format. _____________________________________________________________ | | |1> Enter the Field name you wish to see (H/Help, Q/Quit)? | |2> Enter the filter you're looking for | | (H/Help, Q/Quit, =,>, etc.) | |3> Do you want only totals? (Y/N H/Help Q/Quit) | |4> Do you want this to be printed out | | (Y/N, H/Help, Q/Quit)? | |5> Choose a Sort Order (See Figure 4-2) | |6> Do you want new page on each group (H/Help Q/Quit)? | | (#6 only if print is chosen and the Sort Order is | | a sortable one) | |___________________________________________________________| Figure 8-1 Search Options 8.3 Entering Additional Field. This is the first question from Figure 8-1. Here you would enter the name of a field that is in your database (see Figure 4-1) structure. Usually this is the value or information that is most pertinent to your immediate question. If, for example, you were asking the question: "What types of properties are being sold in the Wise school district?", you would want to see Prop_type be the output. (School_d wouldn't be a good choice. That would work well for the filter [see Section 11.0, Filter Maintenance].) 8.4 Choosing a Filter. Question #2 from Figure 8-1. Through the use of a filter, you can specify the type of information that you want to be included in the Search. See Section 11.0, Filter Maintenance for more detailed explanation. 8.5 Totals Only? Question #3 from Figure 8-1. Answering "Yes" to this option will result in only totals being given (basically how many records fit the condition laid out in the filter). 8.6 Printed Out? Question #4 from Figure 8-1. As this would seem to indi- cate, a "Yes" response would result in the Search result to be sent to LPT1 (line printer #1). 8.7 Choosing a Sort Order. Question #5 from Figure 8-1. This is very similar to choosing a Sort Order for either Inquiry/Entry, or Word Process- ing Conversion (see Sections 4.1 and 7.4, Choosing a Sort Order). The sort order that you choose defines the order and grouping of information that you seek. 8.8 New Page? Question #6 from Figure 8-1. If you Choose "Y" to this option, every time that the sort order chosen in Section 8.7 changes, the printer will issue a Top of Form command, and a new page will be printed. Again, this will only be displayed if the output was going to the printer. Section 9.0 Housekeeping. There are several tasks that must be performed that have no direct bearing on the gathering or manipulating of information; yet they are critical to the smooth functioning of any infor- mation-based system. These tasks are contained under the Housekeeping menu. Figure 9-1 shows the sample Housekeeping Menu. _____________________________________________________________ | | | Test Database System | | Housekeeping Menu | | Choose from the following: | | | | 1> Data Backup | | | | 2> Reindex Data | | | | 3> Data Verification | | | | 4> Control | | | | 5> Delete Blank Records | | | | 6> Pack Database | | | | -# to get help on any of the above | | Which one do you want (Q to quit) | |___________________________________________________________| Figure 9-1 Sample Housekeeping Menu 9.1 Data Backups. People who do not back up their data are simply not playing smart. There are countless examples of large amounts of irrep- laceable data being lost forever simply because the user failed to take the 10-15 minutes a week it takes to save their informa- tion. Computer-stored information is very vulnerable to certain types of accidents. Someone could accidentally or intentionally erase the information, or the information could be "damaged" by a strong fluctuation in power or a total power outage. If this occurs, the information is lost. It cannot be recovered or retrieved ever again. Data backups prevent this from happening to you. By running this particular process, the information is stored onto another diskette which can then be removed from the area for safekeeping (usually you home). It pays, however to have several copies, some older, some more recent (if it turns out that you have had bad data for some time and only now have discovered it). There are all sorts of arguments concerning backing up of your data; why's and all of that. Suffice to say that everything can be lost if you don't. Enough of that. Now, how do you do it? Simple. When you select a data backup from the list of housekeeping options (Figure 9-1, Sample Housekeeping Menu) another menu will appear, the Backup Menu (see Figure 9-2). There are two options given to you, Program Backups and Data Backups. What they do is very different from one another. _____________________________________________________________ | | | This screen is for the backing up of your | | system. It should be done on a routine basis (like | | weekly at least). | | | | There are two types of backups... | | | |1> Program Backups (when there have been changes to | | the system | | | |2> Data Backups (when you have made changes to your | | data. | | | |Note that while #2 should be done more often, they | |should BOTH be done regularly. | | | |Enter -1 or -2 for Help | | WAIT Which one do you want to do(1/2/Q) TO Begin | |___________________________________________________________| Figure 9-2 Backup Menu Program Backups are done whenever there are changes made to the programs that run the system. To the user it may appear that there are few times when this is the case, but there may be more than meets the eye, depending on the amount of programming that's going on. If you're not sure, do this around once a month. Data Backups are done whenever that are changes made to the information contained within the database itself. This can be a often as several times a day, or as rarely as one a month. Just keep in mind that if the system were to go down right now, whatever you have put into your system since you last did a backup would have to be re-entered. If you're really comfortable with that, then you're doing fine...(or not thinking it through) Whichever of the choices you make, Figure 9-3 shows the message that the system will display after choosing. ____________________________________________________________ | | |Place backup program diskette in drive A | | and hit return to begin (q to quit) | |___________________________________________________________| Figure 9-3 Backup Message At this time you should place a diskette (on that contains nothing of value) into drive A, shut the door, and hit return. The computer will display an appropriate message soon afterward and return to the Housekeeping Menu. 9.2 Reindex Data. This option should be the first step in any troubleshooting operation. If a particular problem has appeared (like, "I put that data in yesterday and now I can't find it!") your first step (yes, prior even to calling for help!) should be to do this. Database information is indexed. That means that there is an index file (located separately from the main data file), that points to the location of the information according to a sort order. That key is dependant on the application (See Section 4.1, Choosing a Sort Order for more detailed explanation). A reasonable analogy would be the card catalogue file at your local library. The card is smaller, easier and faster to access and make use of, and points to the location where the book is located. If the index file is corrupted, than the link between the index and the regular file is lost. Reindexing fixes that. Reindex will take anywhere between 1-30 minutes (depending upon the size of the database. It should be consistent for your application). In addition to when there is a problem, you should run reindex once a week just for the heck of it. 9.3 Data Verification. Data Verification will go through each record in your database and match the values against a list of acceptable values located and maintained elsewhere. It will then generate an exception report, listing all inaccurate records. You are then responsible for fixing those records. Keep in mind that only certain fields in your database are capable of taking advantage of this. In our test database (See Figure 4-1) School_D, for example, can make use of this, since there are only so many school districts in the city. However, Own_Name cannot make use of it, since there are no practical limitations to ones name. Verification, however useful it sounds, is not an end-all solution to data entry problems. At best, it is a sometimes helpful reminder. But nothing can replace a user who is watch- ful, careful and above all, knowledgeable. 9.4 Control. Obviously, there are a lot of little things that the computer does. Some help us, some don't. Some just annoy the heck out of us. Control let's the user have some control over these items. By using the menu, the user has the ability to change something that he or she doesn't like or need at a particular point in time. There are basically four things that he or she has control over. They are: Confirmation, Deletion, Bell, Exact. Through the Control Menu (Figure 9-4) the user can change any or all of them. Their original values are determinded by the setup of the Main database (see Appendix G). These are the values the four are set to each time the system is accessed. In other words, once you exit the system, you would have to reenter it and reapply your control changes. _____________________________________________________________ | | | Test Database System Control Menu | | | | Choose from the following: | | | | 1> Confirm (ON...Return after every field) | | (OFF..Automatically goes to next) | | | | 2> Delete (ON...Deleted records not accessible) | | (OFF..Deleted records accessible) | | | | 3> Bell (ON...the annoying thing rings a lot) | | (OFF..it won't) | | | | 4> Exact (ON...good only on complete spellings) | | (OFF..it will hit on incomplete spellings)| | | | Which one do you want (Q to quit) | | | |___________________________________________________________| Figure 9-4 Control Menu As you will see once they're explained, the initial values of the control variables are set to help the beginning user. 9.4.1 Confirm Confirm is used to keep the user from entering too many characters in a field. Let's take the field Own_name, for instance. It is a character field 20 characters long. With Confirm set On, if someone would try to enter a 21 character-long name, it would merely emit an audible (beep) when the person entered the 21st character. A person must hit the key prior to moving onto the next field. With Confirm set Off, the 21st character would move on to the next field and in this case, would be the first character in the O_addr1 field. 9.4.2 Delete Delete is used to control access to deleted records. As you will recall from Section 4.8, How to Delete Information, it told you how to delete a record and how it appears on the screen. With the Delete option set to On, information that has been marked for delete will not be accessible. With Delete set for Off, the information that has been deleted will be accessible through normal Inquiry/Entry. Obviously, then when the Delete option is set to Off there is no way to change a record from deleted to not deleted. However, there are certain instances when the user would not want deleted information to be accessible to users, for it would be slightly misleading. 9.4.3 Bell The author of the AGS (and this document, for that matter) feel real strongly about the fact that the bell is one of the most annoying things that Dbase III+ has. However, it is a good reminder for the new user for various reasons (illegal date, end of field, etc.). Basically, you're on your own when it come to this one. If it's on, the system creates an audible (beep) a lot. If it's Off, it won't. Simple enough, no? 9.4.4 Exact Exact is a tricky one, and is best left to those who are used to using the system for awhile. Exact deals with when the computer looks for a value in a particular field. It comes back after searching with either a Successful or an Unsuccessful search. When exact is On, the system will have a successful search only when the match is perfect, character for character, no more and no less for that field. When exact is Off, the system will look for a partial match, allowing for additional characters. A good example would be if you were looking for a Own_name of "Smith", but you weren't sure is it was spelled "Smythe", "Smith", or "Smyth". You would enter the beginning letters you were sure of ("Sm", in this case). The system would then find the first record where the first two characters of Own_name was "Sm". By taking a "Quit/Next" Option on the Update/Release Command Line (See Figure 4-7), you would "page" through these until you found the one you wanted. Simple, huh? 9.5 Delete Blank Records. One thing that will probably happen when you're just beginning to get used to entering data is some blank records getting saved. In order to get rid of them, run this function. When the application was originally generated, the creator specifies which fields are to be blank in order for the syystem to mark them for delete. Once this function is run, the user still has to pack the database to actually remove the data from the file. 9.6 Packing Your Database. As we've mentioned on more than one occasion, information is not really so easily deleted. All that happens when someone marks a record for delete, it just sits there marked. It isn't until someone runs this option that all records marked for deletion are actually deleted. When you run this, make sure that you've deleted only those records you want deleted. Section 10.0 Help. There are three types of help that are readily available. One is this document. It probably has most of the answers you seek. But there are also two type of on-line help available straight from the computer. One is related to getting more information about the database itself, while the other is to get help and information concerning the current command line that the user is contemplating. Both have distinct uses, and both come in handy (famous last words). 10.1 Database Help. Option #7 on the Main Menu (see Figure 3-1) is Help. When you choose this, you will see (similar to Word Processing Conversion) a list of all database fields on your screen (See Figure 10-1). _____________________________________________________________ | | | Help Selection Screen For Test Database | | 1>E_DATE 2>ST_NUM | | 3>ST_NAME 4>PARCEL | | 5>CEN_TRACT 6>CEN_BLOCK | | 7>SCHOOL_D 8>UNITS | | 9>PROP_TYPE 10>OWN_NAME | | 11>O_ADDR1 12>O_ADDR2 | | | | | | | | Which one do you want help on (H/Help Q/Quit) | |___________________________________________________________| Figure 10-1 Help Menu To get information on any one field, simply enter the number. When a valid number is entered (in this case 1-12), the system will then display information such as that displayed in Figure 10-2. _____________________________________________________________ | | | | | Field = ST_NUM Type = C | | Length : 8 | | Desc 1:Street Number of the Property | | Desc 2: | | Hit any key to continue... | |___________________________________________________________| Figure 10-2 Sample Database Help Screen As you can see, there is a fair amount of information contained there. First of all, there is the field name itself, followed by the type of field it is (C, N, L, D; See Figure 4-6), the length and up to two lines of descriptive text. 10.2 Command Line Help. On many screens, you see the command requesting your next input. Usually there is also a statement on how to acquire Help from this point. This is a different type of help than that described in Section 10.1. This type of help is designed to inform you of what the various capabilities and expectations are at this point in the system. For example, the main menu (See Figure 3.1) gives you a list of 8 options, plus Q for leaving the system, and -# for Help. In other Cases, such as the Sort Order Menu (see Figure 4-2), the system gives 1-5, Q and H as options. In both cases help is available. In the first case, since 1-8 are so different, a special help screen is available for each option. Since the Sort Orders are similar in context, they only need one screen. For example, if you wanted help on Option #1 (Inquiry/Entry) of the Main Menu, you would hit -1 (which corresponds to an explanation point '!') to get help. The system would then respond with what you see in Figure 10-3. _____________________________________________________________ | | | This function allows you to see and | | maintain information in the main file. | | Hit any key... | |___________________________________________________________| Figure 10-3 Sample Command Line Help Screen Just about every command line (with the exception of when you are editing a record) has some form of help available. Take advantage of it. As mentioned before, on certain monitor types these screens will not clear when you hit any key. Section 11.0 Filter Maintenance. 11.1 What is a Filter? A filter is a condition, or set of conditions, which can be directly applied to specific fields in your database. A filter applied to a record can only have one of two possible outcomes: Yes, it satisfies the conditions. No, it does not satisfy the conditions. There is no such thing as "maybe", "don't know", or "sort of" as far as a condition goes. A Filter (stated in English) can be as simple as: All records, (in which case all records satisfy the condition) Or: No records, (in which case no records satisfy the condition) Filters are usually applied when you are interested in using information that fits a certain criteria. Back in Section 7.0, and 8.0 (WP Conversion and Search) we were talking about applying certain criteria to the database prior to actually running the task. Well, here is where we do it. By developing a Filter. But we have to make sure that the syntax is proper. The way we state a filter must be follow the rules and conventions set up for Dbase III+. 11.2 Simple Filters. A simple filter is a simple Yes or No condition that you can apply against a single field in a database. If you'll recall back in Section 7.0, WP Conversion, we were interested in sending a letter to all owners of property whose property was in the "Wise" school district. For that example, we would make the filter: School_D = "Wise" Relatively Simple, No? The form of the simple filter is: {Field Name} {Operative} {Value} Now, we've been through the Field Name list (Figure 4-1) enough times to know what that would be. But what about Opera- tive? An operative is the symbol which defines the relationship between the sides of the filter. (huh?) In other words, for our example, we wanted the Field_name Equal to "Wise". Equal to {=} is our Operative. A list of potential operative and their descriptions is found in Figure 11-1. _____________________________________________________________ | | |Operative Description | | | | = {L. Side} Equal to {Right Side} | | > {L. Side} Greater Than {Right Side} | | >= {L. Side} Greater Than {Right Side} | | or Equal to | | | | < {L. Side} Less Than {Right Side} | | <= {L. Side} Less Than {Right Side} | | or Equal to | | <> {L. Side} Not Equal to {Right Side} | | | |___________________________________________________________| Figure 11-1 A List of Filter Operatives The Value on the right side should be a legitimate value of the field name on the left of the operative. If not, an error will occur. Figure 4-6 shows the various legal ways of repre- senting data. Since we know that School_d is a character type of Field, we know then that the value must be enclosed by quotation marks ("). In other words, as we've stated above: School_D = "Wise" is a legitimate filter, whereas School_D = Wise is not (note the missing quotes). Figure 11-2 shows a list of good filters for each data type, relating back to our old' test database (Figure 4-1). For your application, simply replace the field name on the left with your field name, and the value on the right with your value. _____________________________________________________________ | | | Data Type: Character | | Own_Name = "Smith" | | Cen_tract > "1701" | | Prop_type <> "I" | | | | Data Type: Numeric | | Units = 5 | | Units < 2 | | | | Data Type: Date | | E_date > CTOD("01/23/87") | | E_date <> CTOD("12/32/87") | | | | Data Type: Logical | | Del_flg = .T. | | Del_flg = .F. | |___________________________________________________________| Figure 11-2 Some Simple Filters You'll notice (if you bothered to look) that there is one queer one in the group: Dates. Dates isn't a simple conversion like numerics, logicals or even characters. That's because date information is stored in a special way called Date Format, and in order to compare a date field to a value you have to convert your value to that format. To do this you simply enter the date as a string (such as "01/23/87" in the first date sample above, and perform the "Character To Date Conversion" to it, by this: CTOD() You only have to do this here, for filters. The system does it everywhere else (ie, data entry Search WP Conversion, Reports, etc.). 11.3 Complex Filters. Complex filters occur when you want the filter to be more than one relationship possibly between more than one field. If for example, in our neverending example of School District being Wise, we also didn't want to send anything to commercial proper- ties (let's assume that means Prop_type <> "C")? If we wanted to do that, we would have to look at two fields, School_D, and Prop_type. So we'd have two filters, and they would both have to be true: {Filter #1} AND {Filter #2} ******* *(or,)* ******* School_D = "Wise" AND Prop_type <> "C" The basic structure of a complex filter is: {Filter #1} {Linking Conditional} {Filter #2} The linking Conditional is used to say "#1 AND #2 have to be true", or "#1 OR #2 have to be true", etc. You could actually go on and on with this, linking as many filters as you like: {Flt #1}{LC#1}{Flt #2}{LC#2}{Flt #3}{LC#3}{Flt #4}...etc. Figure 11-3 shows the legal Linking Conditionals and their definitions. It also shows what is known as a Truth Table. Basically, a Truth Table gives you on the vertical (or left) side the conditions (#'s 1 and 2). On the horizontal (top) side it gives you the two possible outcomes ([T]rue and [F]alse). By cross-referencing them, the result is the complex combination of them. The right-most column (R) shows the result of the combina- tion. _____________________________________________________________ | | | AND | | _____|___T_____|____F____|____R____| | | | | | | | | | |#1 | T | T | T | | | -------------------------|---------| | | |#2 | T | F | F | | | |____|_________|_________|_________| | | | | | | | | | |#1 | F | T | F | | | -------------------------|---------| | | |#2 | F | F | F | | | |____|_________|_________|_________| | | | | OR | | _____|___T_____|____F____|____R____| | | | | | | | | | |#1 | T | T | T | | | -------------------------|---------| | | |#2 | T | F | T | | | |____|_________|_________|_________| | | | | | | | | | |#1 | F | T | T | | | -------------------------|---------| | | |#2 | F | F | F | | | |____|_________|_________|_________| | | | | | | | | NOT | | _____|___T_____|____F____|____R____| | | | | | | | | | |#1 | T | T | F | | | -------------------------|---------| | | |#2 | T | F | T | | | |____|_________|_________|_________| | | | | | | | | | |#1 | F | T | F | | | -------------------------|---------| | | |#2 | F | F | F | | | |____|_________|_________|_________| | | | |___________________________________________________________| Figure 11-3 A List of Linking Conditionals 11.4 Maintaining a Filter Library. As you can see, filters can become as complex as the questions they represent. And we can't expect every user to become an expert in the use of them. In order to still allow the user flexibility, the system allows use of a library of filters, which users can add and change at will. By choosing Option #8 from the Main Menu (see Figure 3-1), you can maintain the filters that are kept on file. Figure 11-4 shows the Filter Maintenance Menu. The Filter Library is set up to allow users to access filters by a number, which corresponds to the record # that the filter is located in the filter database file. _____________________________________________________________ | | | This is the Filter Maintenance Module | | Do you want to: | | | | 1> Display all Filters | | 2> Modify a Specific Filter | | 3> Add a New Filter | | 4> Test + Produce a Filter Report | | | | Which one do you want (-#/Help,Q/Quit)? | |___________________________________________________________| Figure 11-4 Filter Maintenance Menu In regards to the four options listed, they perform the following functions: 1> Display all Filters. This option will list onto the screen all of the Filters currently on file, in the order that they were entered. 2> Modify a Specific Filter. This option allows a user to go and change (permanently) a particular filter. 3> Add a New Filter. This option allows a user to add a filter not previously available on the system. 4> Test + Produce a Filter Report. This option will go through all filters and test them for accuracy and proper syntax. It will also produce a report describing all correct and incorrect filters. Notice that the filter numbers are contained on the report, and you may want to consider distributing the report to users or to post the report near the unit, so as to allow them to look at the list when choosing their filters. 11.5 Choosing a Filter. There are 3 different ways of choosing a Filter. You can enter one manually, use the Library, or use the Filter Guide. Figure 11-5 shows the menu from which you can choose. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ³ ³ º Enter a Manual Filter º ³ ³ º Access The Filter Library º ³ ³ º Use the Filter Guide º ³ ³ º Use Current Filter º ³ ³ º Help º ³ ³ º Quit this program º ³ ³ ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ³ ³ Use the arrow keys to highlight your choice ³ ³ And hit ³ ³ ³ ³ Current Filter: ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Figure 11-5 Choosing Filter Method Now you should notice that the method of selection here is different from other areas in the AGS. Instead of entering a number or letter, you use the arrow keys on your keyboard to highlight your selection, and press . The filter area is the only area currently supporting this capability. NOTE: DO NOT hit any key prior to the highlighted area showing on your screen, as it will have strange effects on your system later. Now, let's look at each of the methods of entering a Filter. 11.51 Enter a Manual Filter. This is technically the easiest, but also for the user the most difficult. By selecting this option, the system will display a screen as shown in Figure 11-6. This will allow you _____________________________________________________________ | | | Enter the filter you're looking for | | (H/Help, Q/Quit, =,>, etc.) | | ? | | ? | | Is this the Filter that you want | |___________________________________________________________| Figure 11-6 Filter Entry Screen to enter up to two lines of Filter information. The syntax is identical to what Dbase III+ would expect in a line such as: DISPLAY FOR ***** and you would enter what you would put instead of *****. After you've entered your filter, the system will test it for validity. If you want to leave this screen, enter simply a "Q" (no quotes). A blank filter will assume all records. 11.52 Access the Filter Library. Assuming that the Filter Library is properly set up, each filter will have a number associated with it(as stated above). There are three areas where filters come in handy. They are: A> Search. B> Word Processing Conversion. C> Inquiry/Maintenance (w/Browse Sort Order Option). Each of these use the filter is a slightly different way, but the results are the same. Let's take our wondrous example of the school district open house letter. Assuming that our Filter Library looked something like Figure 11-7, which filter would we want? _____________________________________________________________ | | | # Filter Use | | | | 1 Prop_type = "R" for Residential | | Properties | | 2 Units > 1 for multiple unit | | Housing | | 3 School_D = "Wise" for the Wise School | | District | | 4 Del_flg = .F. for non-deleted | | records | |___________________________________________________________| Figure 11-7 Sample Filter Library #3, of course. The others have useful meanings as well, but it's #3 that suits our purposes now. When the system asks for the filter #, we would enter "3" In this case, the system will see that the first character is an exclamation point (!). The system will expect a number after that, and will use that number to find the filter. The filter will then be displayed on the screen, and the user will verify and move on. In the case that an incorrect filter, or filter number is entered here, the system will display and error message. A filter must be correct in order for the system to proceed to the next step. 11.53 Use the Filter Guide. The third and easiest method is to usethe Filter Guide. This will run in five steps. Each step you must again point at your target using the arrow keys and hit to choose the answer you've highlighted. These steps are: 1> Select the variable you want and hit . Ex: "School_d" 2> Select the measurement (=,>,etc.) and hit . Ex: "=" 3> Select the variable you want to measure against. Here you may also enter your own value. Ex: "Wise" 4> Select Linking another condition, Enter Y or N. 5> If you selected "Y", you will then be asked to link the previous condition with the choices listed in Figure 11-8: ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Which of the following Boolean Conditions ³ ³ Do you want to specify: ³ ³ ³ ³ ³ ³ Condition #1 AND Condition #2 ³ ³ Condition #1 OR Condition #2 ³ ³ Condition #1 AND NOT Condition #2 ³ ³ Forget it, I changed my Mind ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Figure 11-8 Boolean Conditions 11.6 Filter Syntax. There is of course a particular syntax that is needed in order to successfully create a filter. We have shown how to specify a simple condition (Section 11.2, Simple Filters). But we have also shown how to link conditions together, forming complex filters (Section 11.3, Complex Filters). The syntax of a linking conditional is actually very straightforward: {Filter #1} .{LC}. {Filter #2} ^ ^ | | -------------Notice the periods? (.) Simply put a period (.) on each side of the linking condi- tional. Using or example from Section 11.3, the full syntax would be: School_D = "Wise" .AND. Prop_type <> "C" But if we have several filters to link, and we need them grouped, we would then use parenthesis "(" to group them. Let's say we wanted both the "Wise" and the "Gai" school district to get the letter. (School_D = "Gai" .OR. School_D = "Wise") .AND. Prop_type <> "C" ^ ^ | | | The system will first evaluate | ^ | the condition within the paren- | | | thesis, and then evaluate the | | | remaining filters. | | --------------------------------------------------- Just think back to your old Algebra days and you'll do just fine. Section 12.0 Additional Notes and Capabilities. At this point in time you have reviewed all system capabil- ities. The system is built for non-technical people to use; however, familiarity with Dbase III+ would aid dramatically in really getting your money's worth. This system can be easily modified to fit and adapt to a particular users needs. There are a few other things worth commenting about. 12.1 Security There ain't no such beast. Generally speaking, there is no easy way of making your data more secure than the area in which it is contained. In other words, if your unit is going to be out in the open with no one watching it, so is your data. My standard response to the immortal question "How secure is my data?" is that it's equally secure as the file cabinet next to it. 12.2 Training If you don't train people, either they will not use the system, or they will use it improperly. Even the friendliest system (I hate the term "user-friendly") needs some type of guidance in how to use it from a procedural standpoint, if for no other reason. One of the biggest problems with implementing computer systems onto people with little or no computer experience is that there is often little or no regard paid to making sure that the transition is made. Often time people will resist taking advantage of the computer unless they are encouraged by their supervisor. 12.3 Justification Automating a manual process is the easiest way to com- puterize. Unfortunately, it is also the least efficient and the most likely to fail. When you are computerizing a process, you should begin by reviewing all steps to that process, look into the possibilities of streamlining the operations somehow so that there would be a more efficient method of processing the informa- tion. Often that step alone would save more money than simple computerization. 13.0 Suggested Ways of Learning More. If you have successfully completed mastering this system, you should feel free to go on, and master Dbase III+ itself. There are many seminars, books, tutorials, even video tape classes created specifically for this product. The AGS in some ways scratches the surface of the truly complex Dbase III+ system. Take advantage of whatever products you have available, and enjoy! 14.0 Registration. The AGS has already been used in several places, and for many functions. They include: Inventory Order Entry Management Personnel Housing Title Transfers Housing Financial Analysis Mailing List Maintenance Travel Agent Customer Maintenance Union skills tracking Computer Maintenance Simple A/R Remote Data Entry Account Tracking Get the idea? As you can hopefully see, there really is no limit to the type of application here. The version you have here has a limit of 50 records for each database placed on it. By registering you version, you would be given an unlimited use version. In some cases, however, there are some changes which would make the system run even smoother. But in order to make those changes, you have to have a special registered system, which is delivered with full Dbase code intact! (Shareware distributed version contains executable only...) But how do I register? (I hear you cry) Simple. Send money (to support the Shareware concept) to: RL Coppedge, CDP CIS #: 72117,165 446 Richmond Pk E 402A Genie: XTH43280 Richmond Hts, Ohio Cleve Free-Net: AE069 44143 How much should you send? I leave that up to a debate between you, your wallet and your conscience. (C'mon, Conscience!!) A general suggestion: single users: Companies, Consultants, etc. Executable: $50 $100 W/Code: $100 $250 Code version also includes some technical documentation explaining what it is you see. Obviously, the more support of this type, the more likely it is that I would continue to improve this system along the shareware school of thought. There are a lot of improvement currently in the test version 2.1... Later!!! Bob Appendix A: System Flowchart This is a technical flowchart that points out the programs and their relationship to one another. Although this is of minor interest and need to the user, someone with a more technical interest may find it helpful. This was produced through use of the package Dflow (from WallSoft Systems, Inc.), a fine documen- tation generator package for Dbase III+. Appendix B: Technical Documentation This area describes the program files that go into running the AGS. This is available in the registered version with Source. Appendix C: Create! This documentation covers the use of Creating a particular application. Appendix D: Index Here's what is probably an incomplete index.