Finding and Sorting Data
What You'll Learn in This Hour:
Overview of Finding DataThe basic procedures and terminology are described.
Creating Find RequestsThis section provides the details on selecting data for retrieval.
Omitting DataInstead of creating complicated negative selections, you can find the data you don't want and then view the rest using Omit.
Sorting DataIt's much faster to sort only the data that you're interested in rather than an entire database table.
In Hour 2, "Using FileMaker and Its Basic Templates," you explored the basics of FileMaker and saw how to enter data. In this hour, you'll learn how to find data that you've entered.
Overview of Finding Data
Databases let you manage data: store it, retrieve it, and manipulate it in various ways. In Hour 2, you saw how to store data, and in this hour you'll see how to retrieve it. (Manipulation is covered in Part II, "Modifying Templates and Databases.")
When you store data, you need to store it with an eye to retrieving it. Just as the folders in a file cabinet are set up to help you retrieve data, so, too, a good database is designed with that end in sight. (If your objective was only to store data, not to retrieve it, you could dump everything into one file drawer with no folders in it.)
This section provides background information that applies to all databases, not just FileMaker. It covers
Reasons for finding data
Mechanisms for finding data
Setting up data for retrieval
Steps for finding data
Reasons for Finding Data
There are two reasons for finding data, and they involve different processes. The first reason for finding data is to look up information that you know is present: a person, an invoice, the students in a class, and so forth.
The second reason for finding data is to search for information that might be present or that is calculated on-the-fly. This is what you do when you're doing research (or browsing the Web in many cases). Often, this type of searching involves summaries and calculations.
The two different reasons for finding data are exemplified in the following two-step search example:
Find all the people who live in a certain city.
Calculate the average income for these people.
When you're trying to understand data, you frequently use the second reason to massage the data and try to get it to yield patterns you can recognize. The first type of searching is much more specific.
When you set up data for retrieval, consider both reasons if they are likely to be used. As you'll see in the section on setting up data for retrieval, the ultimate use of the data determines how you store it.
Mechanisms for Finding Data
There are two basic mechanisms for finding data:
You can find data as you need it based on whatever criteria matter to you at the time.
You can set up relationships so that related data is automatically found as you browse records from a given table. (Relationships are discussed further in Hour 14, "Working with Relationships.")
Setting Up Data for Retrieval
It is not an exaggeration to say that the design of your database determines how easy it is to use to retrieve data. Fortunately, with FileMaker, it's not difficult to modify the database design. As a result, you can make changes over time to accommodate new data, as well as new search requirements. (Hour 14 discusses normalization, a process used to organize data storage and to make retrieval easier.)
Here are three important tips for organizing data:
Create searchable fieldsFileMaker can search for text within fields, but it's always easier to search on an entire field. For this reason, many databases store first and last names separately, with a third field for the name as it appears when it is all put together. To search on the last name, you search the last-name field, not part of the full-name field. With FileMaker, you can create calculation fields; they are often used to create search fields (see Hour 7, "Working with Calculations, Formulas, Functions, and Repeating Fields").
Use meaningless IDsOne of the most common mistakes people make in setting up databases is to include identifying information in IDs for records. If you use a meaningless ID (such as a unique serial number that FileMaker can generate; see Hour 6, "Validating and Auto-Entering Data"), you can change any of the data in the record without changing the ID. If the ID contains information that indicates a person's status, name, or other identifying information, when that identifying information changes, so must the IDand you lose any links to previously stored data.
Game-plan your data storageWhen you design a database, think not only of what you want to put in it, but also of what you want to get out. What sort of reports are required? How should they be sorted? Create search fields that allow you to retrieve and sort the data.
Steps for Finding Data
Finding data in FileMaker consists of two steps:
Create one or more find requests, which specify the data to be retrieved.
Perform the find to create a found set of the records that satisfy the find request. To actually perform the find, you can click the Find button in the status area or use any of the Find commands in the Requests menu: Perform Find, Constrain Found Set, or Extend Found Set.
At that point, you have various choices:
Browse the record(s) returned.
Sort the records returned. (Sorting a found set is faster than sorting the entire database; if the found set is substantially smaller than the entire database, the sorting is extremely faster.)
Use the Omit command to see the record(s) that don't match the find request. (This is an easy way of performing "not" finds.)
Expand the found set: Perform another find and add those records to the found set.
Constrain the found set: Perform another find against the found set using new criteria so that only the record(s) matching both find requests remain in the found set.
All these choices are explained in the following sections.
Each find request specifies all the criteria that must be met: If you specify a price and a color for an inventory item, both must match the data. (This is called a logical and or anding.) If you specify more than one find request, those requests are logical ors, or they can be described as oring. Within a request, all criteria must be met; across multiple requests, any of the requests can be satisfied, although within each one all must be satisfied. Thus, if you have two requests, and you specify a price in the first one and a color in the second, you will retrieve all data that matches either the price or the color.