                            VIDEO EXPRESS
                          Manual--Part Three

  It is the philosophy of the programmers of Video Express that the more you know about Video Express, the better off you'll be.  This part of the manual is intended for those users who want to know more about the internal workings of the program.

Why Use Video Express?

  1. Video Express is programmed in Clipper 5.01, a leading language in application programming.  Many video programs being used right now have been programmed in older languages that contain major obstacles in order to perform tasks that are easily done in Clipper 5.01.  The proof is in the added features of Video Express and in the added efficiency in which Video Express performs basic video program tasks.  Video Express also runs a lot faster than other video programs on the newer computers because it has been programmed for the newer computers.

  2. Video Express gives you total control of the program.  If you can't manipulate your data any way you want to, what good is the program?  Here are some examples:
  *Most video programs either don't store any invoices, or they just store the last three invoices of each customer.  Video Express stores all of your invoices.  There is no reason whatsoever that you should be forced to lose those invoices that you have created.  Video Express allows you to close invoices to the "Master Invoice" database, so you will not lose speed during transactions as your invoices accumulate.
  It is important to store all of your invoices because of the following reasons:  1) There will be times when you need to look up previous invoices of a customer to verify his/her overdue charges, and sometimes you will need to look up more than just the last three.  2) The income reports are generated from the invoices, and so you will always be able to do income reports on any time period you desire, even from years past.  3) The "Create Reports" option can search through all of your invoices and find every invoice that contains a certain item.
  *Most video programs are set so that it is impossible to alter income totals.  Unlike other video programs, Video Express generates income reports from the invoices.  You can view and edit ANY previous invoice to manipulate and verify the income totals.
  *Most video programs totally hide its database structure from you.  Video Express lets you see the structure of its databases when you go into the "View" option of each database.  This lets you know exactly what is being stored in each database.
  *Most video programs have a limited number of reports.  Video Express has an option that lets you create your own reports.  This allows you to quickly obtain any information that you need.  In other programs, you're stuck with the reports that they provide for you.
  *The manuals of most video programs do not have a section explaining the details of the program like this section.  Video Express programmers give you a lot more credit than other programs.  If you're using a program all day, you'll become very familiar with it and will want to know everything about it.  You don't have to be a computer expert to be able to understand how a program works.

  3. Video Express has been programmed according to user's requests.  Before Video Express was even started, Video Express programmers went to video stores using other programs and asked these stores what they did and didn't like about their programs.  Also, Video Express had been tried out at two video stores for a year before even being put on the market to make sure all bugs were worked out and to make sure Video Express ran as fast and as efficiently as possible.
  Since you are using Video Express, you will want it to stay as far ahead of the competition as possible to help your business beat video stores using other video programs.  Video Express programmers strongly recommend you to call them when you have ideas that will improve the program.  If it is agreed that your suggestions will improve the program, you will given an upgrade for free.  Most video programs don't allow this type of service, while Video Express recognizes that this communication can only benefit both parties.
  
Database Structure
  Two of the primary concerns of Video Express programmers are to not overkill your hard disk and to provide as much speed as possible.  By keeping the databases as small as possible, less data gets stored on the hard drive and less data gets loaded into the computer's memory, thereby doing its part to help hard disk life and speed.  Having small databases also speeds up data-entry time.
  The following paragraphs attempt to answer questions you may have regarding the database structure of Video Express:

  *Why is city and state not stored with each customer?
  Most of your cities and states will be the same each time, which would be redundant to store them over and over again.  By having a zip code database keep track of which city and state goes with each zip code, less data will be stored.  This also allows you to not have to enter a city and state each time, and there will be less chance for user input errors.

  *Why are there two databases for invoices?
  Video Express allows up to ten items per invoice.  If there was only one database, ten items would have to get stored with each invoice whether there was one item or ten; the extras would just be blank.  Since your average invoice will only have about two or three items, using two databases will only store as many items as there are with each invoice.

  *Why is there no field for rating in the rentals database?
  The rating is usually located right on the movie, and even if it isn't you should put a sticker on it if it should not be rented out by youngsters, so that they know they can't rent it out.  This is why it would be a waste of time to have to enter this information for each movie.
  If your store uses each cover as a placeholder for when the movie comes in, it can be hard to find the rating on check-outs, and you will need the rating to show up on the invoices.  In this event, put the rating in the "Description" column so that it will show up on the invoices.  A better solution is to forget the placeholders, and let Video Express keep track of where your movies should go.

  *Why isn't there more room in "Other Information" for the customers?
  The current room should be enough space for 99% of the customers.  In fact, most customers probably don't have anything stored in this section.  For those few customers who need the extra space, create a file in "Word Processor" called "JOHNSON" and leave a message saying "SEE FILE JOHNSON" in the customer's "Other Information".

  *Why aren't there "Other Information" fields for the rentals and sales items?
  The customer database needs these two fields to store additional information so that when a customer tries to rent items out from your store, this information will appear on the screen.
  While it is true that "Other Information" could be used by rentals and sales items, most items will likely have blanks in these fields, and storing and loading a lot of blanks wasts a lot of time and causes much added hard-disk wear.

  *Why doesn't Video Express keep track of the income that each rental and sales item generate?
  Because of the "Special", "Discount", and payment of overdue charges, it's impossible to determine exactly which items generated which portions of the total income on each invoice.  This is why Video Express just keeps track of the times-rented for each rental item and the quantity-sold for each sales item, and it lets you determine how much income they generated from there.

Overall Structure
  The following paragraphs attempt to answer questions you may have regarding the overall structure of Video Express:

  *Why do you force the user to enter "M", "G", "V", or "I" every time the user is asked to enter a rental number?
  There are two reasons for this:
  1) By breaking the database into these categories, it keeps the different items in the rentals database separate.  For example, a movie and a game may have the exact same description, but by forcing you to enter "M" or "G", you will never be confused as to which category an item is.  If you go into "Rentals: View", you will notice that all games come first, then all miscellaneous, then all movies, and then all VCR's.  This also allows you to use the same code number for items in different categories.  For example, "1001" could be used as a code number for a movie and a game.
  2) This allows the reports to show you income due to movies, games, VCR's, and miscellaneous.  Since Video Express leaves the five-character code number totally up to you, the category is how Video Express can add up income in these different sections.  If you weren't forced to enter a category, Video Express couldn't break down rental income into the different sections.  
  The sales numbers employ the same rationale.
  Knowing how much income comes from each section can be vital for making decisions on directions to take in the future.

  *Why does Video Express keep track of what's rented out in the rentals database AND in the invoices?
  This is mainly for speed.  When you attempt to rent out an item that is already rented out, keeping track in the rentals database will allow Video Express to quickly tell you that you can't do that.  Also in the "Rental Status" option, it allows you to quickly see if items with the same description are rented out.
  Keeping track in the invoices makes the rented-out and overdue reports run quickly because Video Express doesn't even have to access the rentals database.  The invoices have all the rental information necessary.  Also when a customer tries to rent something out, Video Express quickly scans the customer's previous invoices to tell if the customer has any rented-out or overdue items.  You can also see in "View Invoices" whether each item on each invoice got returned.

  *How does Video Express return items in both databases?
  First, it returns the item in the rentals database.  If the item didn't need to be checked in (i.e. its INSTORE field was "Y" or "T"), the process stops right there.
  If the item did need to be checked in, Video Express takes the number from its LASTINV field and searches for the invoice with that number.  It will then return the item on that invoice.

  *Why doesn't Video Express have "Edit" and "Delete" options for Reservations?
  Unlike customers, rental items, and sales items, there is no one unique identifier (ID) of each reservation record.  You would have to specify a description and a customer for each record that you wish to edit/delete.
  You'll find that it is much easier to go into "View" and edit and delete there rather than in separate options because you can easily pick the proper record that you wish to edit/delete.
  One problem with this is that once you delete one, you can not get it back, so just be careful when you delete records.

  *Why convert everything to upper-case?
  To the computer, a lower-case letter is totally different than an upper-case letter.  By forcing the user to enter everything in upper-case, there is much less chance of errors because the computer will deal with everything in upper-case only.  This will also speed up data-entry time because users will never have to worry about pressing the <Shift> key.

  *If Video Express automatically sorts the data, why would I ever need to reindex?
  Each database in Video Express has sorts that are automatically updated as items are added to them.  Each database is stored on the hard disk as a file.  Each sort (index) is also stored as a file.  Each index file tells Video Express how to order each record.  As long as you do not lose your electrical power, these files get updated correctly and all is well.  However, if you do lose your power, you may lose data in the database file, the index file(s), or both.  The database file and the index file(s) may not match up correctly and may cause strange things to happen to the program.
  This is why you need to reindex.  Whenever you lose your electrical power (abnormal termination), always reindex, and then check to see if all your data got stored.

  *What sorts does Video Express automatically update?
     Customers:  ID Number and Last Name
     Rentals:  ID Number (Category+Code) and Description
     Sales:  ID Number (Category+Code) and Description
     Invoices:  Invoice Number and Customer Number
     Zip Codes:  Zip Code
     Reservations:  Description and Customer Number
  You can see any of these sorts at any time in the "View" option of each database.

  *Is there a way to view/edit the invoice databases in the same way that you can view/edit the other databases?
  Yes there is, but it is hidden.  This is because it is not recommended that you edit the invoice databases this way; it's too easy to mess things up.  Should you ever need to, press <Alt>+<H> or <Alt>+<I> when you first come into "View Invoices".

  *Why does Video Express sometimes search the current invoice database and sometimes search the master invoice database after pressing <F6> in "Add Invoices"?
  If the message towards the bottom of the screen says, "No Invoices Found for Customer", Video Express will load the master invoice database into memory and search that one.  If the message doesn't say that, Video Express will search the current database.

  *What are some examples of what I could use the "Create Reports" option for?
  1.  You can find every customer who has spent $20 or more in order of highest spender to lowest spender.
  2.  You can find every customer who has certain messages in "Other Information".
  3.  You can find every rental item that you have purchased in the last week.
  4.  You can find every rental item whose code starts with "C" in order of description (to list all comedies in alphabetical order).
  5.  You can find every invoice that contains a certain item.
  These are just a few examples of the information you can obtain in this option.  Whatever you need to find, give this option a try.  You'll be amazed at what this option can do for you!

  *Why is it that the reports that I create sometimes ask to print in more than one column while sometimes it doesn't ask at all?
  This depends on whether it can be done or not.  First of all, if you want to print more than 67 characters to a line, you won't be able to even get two columns on the paper.
  Next, you must realize that the printer can not go back up on a page.  The following is what Video Express has to do in order to print multiple columns:  It finds the first one to print and then counts how many there are to be printed.  Then it prints one, skips about 50 records, prints one, etc., and then skips back to print the next line.  In order to print multiple columns, all the records that are to be printed must be together or else the skipping will get out of whack.
  For example, if you wish to print out all rental items that have not been rented out yet (TIMES_RENT = 0), and you do not specify a sort, you will not be able to print multiple columns.  However, if you instead sort by times-rented, all the records to be printed would be in order, and multiple columns would be allowed.
  Then, if you further chose to limit the data by all those with a certain price code, multiple columns would again not be allowed because all the records to be printed are again not together.
  Then, if you sort by 1) TIMES_RENT and by 2) PRICE, multiple columns will again be allowed.
  If you are confused, just remember to sort by the same fields that are in the criteria if you want to print multiple columns.  This will give you your best shot at printing in multiple columns.

  *How can I allow customers to get a free movie after they have rented a certain amount of movies?
  The best way to do this is to use the "# Rented" field to help you determine if the customer gets a free movie.  You can make everyone's "# Rented" go to zero in "Rentals: View" if you want to.  When they use their free movie, you can leave some sort of indicator in the customer's "Other Information" section.  You can use the "Beeps" field to help remind you that the customer has a free movie coming.