Cascading MultiChoice [*Variables*]

  When you select one item from a group of choices, it is often desirable that resulting display be another group of choices which are narrower in scope and intimately related to the first choice. This progression from a broad topic to a narrow selection is referred to as 'cascading'. It is often also referred to as 3 dimensional (3D) selection.

  An Instant Database variable can be set up to cascade into other variables.  It is an advanced program feature. We advise that 'cascading' should be undertaken only if the user is fully familiar with the (1) Instant Database, (2) the creation and use of multiple-choice variables, (3) the creation and use of *Aliases*, and (4) the use of !groups! to 'connect' two or more variables together.

   Assuming that familiarity, however, the setup of cascading lists can be remarkably quite simple. (Cascading *Aliases* is a cousin to "Cascading Options" discussed in the previous section. While the cascading principles are quite similar, they are not identical.)


Top Level: "County". This could be an *Alias* variable that contains let's say the counties in which you  conduct your practice or trade. We'll use these for purposes of the example:

   "Baker/Nassau/Duval/Clay/St. Johns/Putnam/Flagler"
   (these are the counties in Northeast Florida)

Connector Level: "Judges": This variable would contain references to a series of *Aliases*, each one of which contains the names of the judges who sit in the individual jurisdictions. The actual choices need to reference other lists, but the connector level is not actually displayed. To continue with the example, the connector list called "Judges" might read "Baker Judges/Nassau Judges/Duval Judges/Clay Judges/St. Johns Judges/Putnam Judges/Flagler Judges".

Lists Level: The names of the actual judges are provided in what might be called a sub-sub lists. Each of these lists would match the names found in the Connector lists. Continuing the example, there would be one list called "Baker Judges" containing, let's say, "Judge John Jones/Judge Abigale Adams/Judge Frank Smith"; a second list called "Nassau Judges" would containing the names of all of the Nassau County judges); a third list called Duval Judges, etc.

   The document setup:

   Your document would contain at least two variables. [*County*] and [*County*::*Judges*]. When you select a specific county at the topmost level, the selection at the top will cause the judge list for the selected jurisdiction to display.

   Requirements: Not many.

1.You must have a 'top level' *Alias*. This list will reference other *Aliases*.

2.You must have second level *Aliases* Lists that will pair up with the choices in the top level list.

As will be explained below, this pairing up is by position, not by name. Therefore, you are not restricted in how you might name either the top level lists or the secondary lists.

3.  You join the top list and any secondary lists together via a !groupname!. It is the !groupname! that signals them to change in tandem.

   There is nothing special about the setup of the 'top level' list. Just type the names of all of the second-level choices you want to present to the end user. As is typical in creating a MultiChoice List, separate each choice with a slash.

    Note: It is not necessary that each second-level choice in fact exist (by name) in your collection of MultiChoice Lists. You must, however, have the same number of separate elements at the connector level as you have choices in the top level. The way the initial 'cascade down' works is by position, not by name. That way, the choice of County can also be used to select other lists and sub-lists. The actual-list (which is only indirectly accessed -- by position not by name) must contain 'true' names of lists.

   So, following the above example, if you have 15 Counties, you must have 15 separate "XXXX Judges" (Baker County Judges, Duval County Judges, etc.)

   (Everything being plain text, you can type up your top-level *List* even though the second-level lists don't yet exist. However, before trying Cascading,' you must in fact create all second-level Lists shown in the top level.

   Those 'connector level' *Alias* names must precisely match the names in the top-level lists. Each secondary list item contain the elements you want to cascade down to, with each choice separated by a slash.

Other examples:

  Top Level

   "Bank Name","Charter Bank/America's Bank/Friendly Bank/Fort Post Credit Union"


   Intermediate Level

   "Bank Contact", "CBCon/ABCon/FBCon/FPCUCon"


List Level

   "CBCon",        "Mr. Jeffrey A. Biegel"

   "MICon",        "Ms. Rosanne Klarr"/Mr. Jackson Andrews/Ms. Stepanie Jacskon

   "RVCon",        "Mr. Peter Paulson/Ms. Clara Nowak"

   "RCUCon",        "Mr. Kevin Gardner/Mr. Alfred Honeywell/Mr. Frederick McCollum"


   You can have any number of other lists that link to the top level via a !groupname!. The choice from the other lists will be made when the top level choice is made. Example:

Bank Address","1010 West Golfair Avenue<P>Newport News, VA 23602/411 North Bridge Street<P>Hampton, VA  23666/327 North Avenue<P>P.O. Box 777<P>Williamsburg, VA  23185/200 Riverfront Road<P>Norfolk, VA  23898

   When setting this up in your documents, your variables might look like this.( Note the groupname !bank! ties all of the variables together.):

[!bank!*Bank Name*]

ATTN: [!bank!*Bank Name*::!contact!*Bank Contact*]

[!bank!*Bank Address*]


         (body of letter)


   Note some aspects of the above.

   As noted a few paragraphs above, "Bank Address" is not cascaded. It is at the same level as Bank Name. When you choose a Bank Name, the Bank Address will be selected based on the location of the item selected in the 'Bank Name' list so long as a group name is provided to tie the two together.

   The cascading links are set out after a colon (which mere indicates the cascade. It also requires a '!groupname!'.


   We provide an alternative approach to cascading which more 'intimately' links the top level to the secondary levels. Instead of linking by !groupname!, you can link the lists in the following, perhaps more direct, fashion.

   Requirement: The two fields must appear on the same page of the Instant Database screen and must be adjacent to each other.

   Setup: The first element must reflect the top-level. In the above example, [*PropertyTypes*] would appear exactly in that fashion. The next level is the top level with the addition of the word "Sub". e.g., [*PropertyTypes*sub]. (The 'sub' means that it is a sub-category of 'PropertyTypes'.

   When the appropriate value is selected from the list shown in the Instant Database screen (and continuing with the above example, it will be from the *PropertyTypes* list, i.e., "Residential or Office or Commercial, Service or Commercial, Heavy Industry"), the appropriate sub-list (in this case, we selected "Residential") will show in the line immediately following, like this:

Click to enlarge.

Select item from parent list (1) and the sub-list (2) is populated with the proper values.
Drop down the list, point and click.