Sei sulla pagina 1di 383

Chapter 1: Getting Started with

Access
Access provides a powerful yet comfortable environment in which you can manage your
information. Using Access, you can tame even the most difficult data-management tasks. This
chapter is the first step in your journey. Here you will learn basic terms, as well as how to start
and exit Access. You will also learn how to get help and even catch a glimpse of what you can
do with Access.

By the time you finish this chapter, you will understand the following key concepts:

• What a database is
• How tables, forms, and queries relate to a database
• What records and fields are
• How to start Access
• The parts of the Access environment
• How Wizards can help you
• How to get help when using Access
• Possible uses for both databases and Access
• How to exit Access

Access Terminology
Before you dive into the Access environment, there are a few terms with which you should be
familiar. As such, we'll discuss these terms now and make sure you understand them.

Note: As you work through this book, you will undoubtedly come across other new
terms. The text defines many of these terms at their first use. You can also use the online
Help System to find the definitions of many different Access terms.

The following sections discuss the major terms which you must understand before you work
with Access.

What is a Database?
A database is simply a collection of related information. For example, if you gathered together
all your photographs, you would have a database of photographs. If you collected all your
photographs that included your dog, you would have either a more targeted database or a
subset of your larger database.

If your database is small (for example, your home insurance policies), you can probably
manage the information manually. In such instances, you might use a traditional management
method such as a card file or a simple list on a piece of paper. However, as the database
becomes larger, your management task becomes more difficult. For example, it would be
virtually impossible to manually manage the customer database of a large corporation. This is
where your computer and a database management system
(DBMS) come in handy. DBMS software (such as Access) lets you manage large
amounts of information quickly and easily.
In Access, a database consists not just of information, but also the tables into which the
information is organized. Access databases also contain related queries, forms, reports, and
programming instructions. Because these terms deserve further definition, they are covered in
the following sections.

What is a Table?
In Access, tables contain the actual information in your database. There can be more than one
table in a database. The information in each table can relate to information in other tables in
your database. For example, you might have one table that contains a record of all the door
locks in your building. In the same database, another table might have a list of all the keys for
those locks. Still another table might contain the names of all the people who have the keys.
All three tables contain related information, so they belong to the same database. Figure 1-1
depicts the relationship between the tables and this database.

Figure 1-1 How Access relates tables and databases.

Your first step in creating a database is to determine the information you need. Next, you will
use Access to design a table to hold the information. Figure 1-2 illustrates the Design view of
Access. You use Design view to specify the framework used for each of your table entries.
Figure 1-2 Design view for a table in Access.

After you design your table or tables, you will use Datasheet view to enter and examine (view)
your data. Figure 1-3 illustrates how your data may appear in Datasheet view mode.
Figure 1-3 Datasheet view for a table in Access.

What is a Query?
When you work with large databases, there will be times when you will want to work with
specific pieces of your data. For example, if you have a company database, you may want to
view the names of all your customers who reside in New York. On such occasions, you would
form a query.

A query defines which database information you want to view. Think of a query as a question
you ask the database, such as "Who are the customers that reside in New York?"

For example, if your database contains the names of all your customers who have purchased a
particular product, your query might request a list of only those customers that made over a
certain income. Another query might request only those customers with children. Essentially, a
query limits or filters the information in a database. When you use a query as a filter, Access
displays only information that satisfies the query.
Why would you use queries? Specifically because you want to work with only a part of your
database. Queries make it easy for you to work with only those records that fit a particular
criteria. Access lets you get as broad or as specific or as complex as you want in the queries
you develop. You will begin to learn about queries in Chapter 6, "Using Queries to Examine
Your Data."

What is a Form?
A database exists to store information. After you determine the information your database will
contain, you will need to enter the data. Later, you may want to examine, add to, or change
that data. Although you can use the Datasheet view to accomplish each of these tasks, you
may want instead to create a custom display screen that lets you enter, view, and edit
information.

Within Access, custom display screens are called forms. Using forms, you can both display the
information in a table and add buttons, text boxes, labels, and other objects that make data
entry much easier. Earlier, in Figure 1-3, you saw what a table looked like as a Datasheet.
Figure 1-4 shows an example of a form used to input information into the same table. Notice
how using the form provides a better interface for the user.

Figure 1-4 An example of a form used to enter information in a table.

What is a Record?
A record is a single block of information, such as employee or customer data. A table is made
up of many records. For example, if you have a table that contains information about your
baseball card collection, a record is the specific information about a single baseball card.
Sometimes, records are referred to as rows because, within a table, Access represents
individual records as rows.
What is a Field?
Just as tables are made up of records, records are made up of fields. A field is the smallest
piece of information in a database. For example, if you have a table containing your phone list,
each record represents a different person or business in that list. In turn, those records are
made up of individual fields (names, addresses, or phone numbers). Figure 1-5 shows the
relationship of fields, records, tables, and databases.

Figure 1-5 How fields, records, tables, and databases are related.

You may also hear fields referred to as columns. Within tables, Access represents fields as
columns when you look at data in Datasheet view (refer back to Figure 1-3).

(This is section 2 of 5 in this chapter)

Using the Access Environment


Before you can work with Access, you need to start the program. You start Access in much the
same way as you would any other Windows program. You begin by clicking your mouse on the
Start menu, and then choosing Programs. This displays all the programs installed on your
system. All you need to do is select the Microsoft Access option from the Programs menu. In a
moment, you will see a message welcoming you to Access. At the bottom of the screen, you
may see a status bar that displays what is happening while Access is loading.

Once Access has started, you are greeted with a dialog box asking if you want to create a new
database or open an existing one, as shown in Figure 1-6.
Figure 1-6 You can create a new database or open an existing one.

In Chapter 2 you learn how to actually create a database from scratch. Most of
the time, however, you will work with the same databases over and over again, so the bottom
of the dialog box lists the last nine databases you have opened, along with a More Files choice.

To see how Access works, let's open one of the sample databases provided with Access. To do
this, click your mouse on the More Files option in the bottom of the dialog box, then click on
OK. Access displays a standard Open dialog box, shown in Figure 1-7.
Figure 1-7 The Open dialog box.

The Open dialog box may look familiar to you. It is the same dialog box you use for opening
files in virtually every Windows program. All you need to do is make sure you are in the right
drive and directory, and then select the file you want to load. In this instance, the sample
databases provided with Access are in the Samples subdirectory in the directory where you
installed Office. The exact location of the files differs from system to system, depending on
how Access was first installed. If you need help figuring out where the sample databases are
located, you can use the Find feature in Windows to search for the file Northwind.mdb.

Once you have located and highlighted the file in the Open dialog box, go ahead and click your
mouse on the Open button. In a moment, the Access program window appears as shown in
Figure 1-8.
Figure 1-8 The Microsoft Access program window.

Within the Access program window, there are several items to which you should pay attention.
The first item is the menu bar, located at the top of the window. As you work with Access, the
available menus will change depending on what you are doing at the time. The second item is
the toolbar, which appears just below the menu. Toolbar icons let you accomplish common
tasks quickly and easily. As you work, Access makes different tools available at different times.

The Database Window


One of the most important parts of the Access environment is the Database window, as
pointed out in Figure 1-8. You will see the Database window whenever you create or load a
database (as you have just done). Earlier in the chapter, you learned that an Access database
can contain tables, forms, queries, reports, and other objects. The Database window lets you
select the part of your database with which you want to work. On the left side of the window is
a series of buttons which indicate the types of objects you can track in your database. When
you click your mouse on one of these buttons, Access shows you a list of the objects in that
category. For example, if you look at the Database window in Figure 1-8, you see a list of
tables available in the Northwind database. If you click your mouse on the Forms button, you
will see a list of forms available, as shown in Figure 1-9.

Figure 1-9 The Form button displays the forms available in the database.

Notice that there are quite a few forms available with this database. If there are more objects
(such as forms) than can fit in the Database window at one time, Access displays scroll bars in
the Window so you can display all the objects in turn.

Understanding Wizards
Access is a very powerful program. With Access, you can manage your data in virtually any
way you can imagine. With many database programs, you need to learn esoteric commands or
complex procedures in order to use a powerful feature. This is not true with many of the
features of Access. To overcome this potential problem, Access uses a series of Wizards which
let you accomplish tasks step by step. You invoke many of these Wizards by choosing tools
from the various toolbars in Access. Others can be selected from menus, and still others from
within the Database window. For example, when you want to create a new table in your
database, you simply double-click your mouse on the Create Table By Using Wizard, which is in
the Tables list of the Database window (see Figure 1-8). Access then starts the Wizard, the first
step of which is shown in Figure 1-10.
Figure 1-10 An example of a Wizard.

You work through a Wizard by answering the questions posed in the dialog boxes, or by
making choices from those presented. You move from step to step by clicking your mouse on
the control buttons at the bottom of each dialog box.

Access provides Wizards to help create databases, tables, forms, queries, reports, and graphs.
You can use Wizards to help create objects in forms and reports, design mailing labels, and
export information. In fact, Wizards are so powerful and make common tasks so easy that they
are used throughout this book. Many of the projects you work on will rely on Wizards (at least
to begin with).

Getting Help
Access provides quite a bit of help which you can take advantage of at any time you desire.
There are three primary ways that Access provides help:

• The Office Assistant


• An online Help system
• ToolTips

The primary way to get help in Access is to simply press F1. Access then displays the Office
Assistant, which is an animated guide designed to help you discover answers to common
Access problems. You typically use the Office Assistant when you have a particular task you
want to accomplish. The assistant leads you through the task, helping you accomplish what
you want to do. If, for some reason, the Office Assistant does not appear when you press F1,
you can also call up the assistant by choosing Show the Office Assistant from the Help menu.

If you want to access the Help system in Access, you can do so by using the Help menu; it
should be available at all times. You can also access the Help system by clicking your mouse
on the Microsoft Access Help button on the toolbar. This tool is at the right side of the toolbar;
it looks like a question mark within a balloon.

Another helpful feature of Access is context-sensitive help. You start this by choosing the
What's This option from the Help menu. When you choose this option and then click your
mouse on another item within the Access environment, the Help system displays any helpful
information it has available on that topic. For example, if you choose What's This and then click
your mouse on another tool on the toolbar, you will get helpful information about the tool.
Context-sensitive help is a very powerful feature you can use to get immediate help.

Access also uses a feature called ToolTips. These tips are displayed whenever you move the
mouse pointer above a tool on a toolbar. For example, Access displays the ToolTip shown in
Figure 1-11 if you move the mouse pointer over the tool that looks like a pair of scissors. The
yellow box appearing under the mouse pointer indicates the purpose of the tool.

Figure 1-11 ToolTips help you understand the purpose of different tools.

Looking at Possibilities
As you start to use Access, you might wonder what sort of things you can do with the program.
You already know that Access is a full-featured database program, designed to give you the
capability to easily manage large amounts of data. But how can you put the program to work
for you?

What Can You Do with a Database?


Earlier in this chapter, you learned that a database is simply a collection of related information.
With this in mind, if you want, you can use a database to categorize virtually anything. In fact,
you are only limited by your imagination.

Not everything is well-suited to being maintained with database management software such as
Access. Two particular areas come immediately to mind:

• If the amount of data to be maintained is small, using a database is probably


overkill. For example, you generally would not use a database to keep track of the pots and pans
in your kitchen. Although you could do it, no real advantage is gained by using a database for
such a simple task rather than employing a more traditional approach, such as a listing of all your
kitchenware on a piece of paper.
• If information is only kept for a short period of time, the value of a database is questionable. For
example, you probably wouldn't use a database to track phone messages unless you wanted to
keep them for a very long period of time, perhaps for historical analysis.
What Does Access Allow You to Do?
Access lets you take your database ideas and translate them into reality. With Access, you can
quickly and easily create databases that you can put to work right away. For example, you
may want to develop a database to track your CD collection. Access makes this easy. You can
define a simple database, or a relational database with your CDs in one table, the recording
artists in another, the studios in another, and the individual CD tracks in still another. You can
even have the database contain samples of the music! When you design your database, you
can use Access to create input forms as shown in Figure 1-12.

Figure 1-12 CD Collection input form.

Input forms make maintaining the information in your database both quick and easy. While
creating such a database may at first seem daunting, by applying the techniques described in
this book, you can create databases like this in no time!

If you have special, not-so-common needs, Access provides development tools you can use to
create your own full-blown applications. You can develop forms that use custom controls
(buttons, lists, and the like), use special data validation rules, and even create Visual Basic for
Applications programming code to process your data. You can attach this code to buttons and
other controls on your forms. Such an application--created with Access--is shown in Figure 1-
13.
Figure 1-13 A form with button controls.

The result is a custom application, all developed within Access. Projects such as these are not
trivial in nature; indeed, they can take months to develop. But Access gives you the tools you
need to manage the project and make the most of your development time.

Whatever your database needs, simple or complex, quick or evolutionary, Access provides the
tools and environment you need to focus on more than just the data. Access helps you develop
new ways to examine your data and work with it.

Exiting Access
You exit Access by using any of the same methods you use to exit other Windows programs.
These methods include the following:

• You can click your mouse on the Close icon in the upper-right corner of the Access program
window.
• You can double-click your mouse on the Control menu icon (the small square with the key in it,
located in the upper-left corner of the Access program window).
• You can choose the File menu Exit option.
• You can press ALT+F4.
• You can right-click your mouse on the Access task on the Windows taskbar and then choose Close
from the resulting Context menu.

Regardless of how you exit Access, the effect is the same. If you have any unsaved work,
Access asks if you want to save it. Access then closes the program window and returns you to
Windows.

Summary
This chapter has introduced you to the Access environment. Here you have learned what you
need to know before using Access. You have learned basic terms, as well as how to start and
end the program. You now have the knowledge necessary to create your first database.
Before you move on to Chapter 2, make sure you understand the following key concepts:

• A database is a collection of related information. In Access, a database is made up of tables,


which are made up (in turn) of records and fields.
• Queries help you limit the information pulled from a database.
• Forms display information from a database in a user-friendly manner.
• You start Access by choosing Programs from the Start menu, and then choosing Microsoft Access.
• The Database window is where you specify the part of your database with which you want to
work.
• As with other Windows programs, Access provides menus and toolbars which you use to control
what you want to do with the program.
• You can use built-in Wizards to make even complex tasks simple.
• Access provides help in the form of the Office Assistant, an online Help system, and ToolTips.
• You exit Access in the same manner as you exit any other Windows program.

In Chapter 2, you will learn everything you need to know to create your first database.

Chapter 2: Access in an Hour


(This is section 1 of 7 in this chapter)

Access is a powerful, flexible, easy-to-use, database-management program. In this chapter,


you will start to tap into Access capabilities. Although the title of this chapter, "Access in an
Hour," is an overworked phrase, you really will learn quickly how to use Access. Granted, an
hour won't be enough time to master the advanced features. But it will be enough time for you
to learn the basics behind the program and to create your own database that you can put to
immediate use.

By the time you finish this chapter, you will understand the following key concepts:

• How to create a database


• What to name your database and where to store it
• How to create a table using the Table Wizard
• What types of tables you can create with the Table Wizard
• How to pick a name for your table
• What a primary key is and how to choose one
• How to enter information into your new table
• How to close the Datasheet
• How to change and delete information in the table
• When your information is really saved

Creating Your Own Database


To create your own database, you can use any of three methods:
• Click your mouse on the New tool (it is the leftmost tool on the toolbar; it looks like a blank sheet
of paper).
• Choose New Database from the File menu.
• Press CTRL+N.

Regardless of which method you choose, you will see the New dialog box shown in Figure 2-1.

Figure 2-1 The New dialog box.

The New dialog box allows you to specify how you want to create your new database. There
are many choices on the General tab (Figure 2-1) and the other two tabs in the dialog box. The
choices provide different ways to accomplish the same ends. The selection you make in the
New dialog box serves as the starting point, or template, for a new Access database.

For the purposes of this discussion, simply make sure the default Database object is selected,
as shown in Figure 2-1. Then click your mouse on the OK button. Access displays the File New
Database dialog box, as shown in Figure 2-2.
Figure 2-2 The File New Database dialog box.

The File New Database dialog box should look familiar. It is very similar to the Open Database
dialog box you learned about in Chapter 1, "Getting Started with Access." It is also similar to
dialog boxes that you use to create files in other Windows programs. To use the File New
Database dialog box, just specify the name you want to use for your database and where you
want to store the database on disk.

Choosing a Database Name


You can name your database anything you want, but the filename must follow the
same conventions you would use for any disk filename. Do not include a filename extension
(the part of the filename to the right of the period); Access will provide the file extension based
on its rules.

Notice that the File New Database dialog box lists all the database files in the current
directory. If you want to replace an existing database, all you need to do is provide the name
of that database. To do this, type in the name or use the mouse to select it from the filename
list.

In general, you should choose a database name that is as descriptive as possible. For example,
if you were creating a database about your gem collection, you might name it "Gems" or "My
Gem Collection." In this chapter, you will create a database that will contain the names,
addresses, and phone numbers of all your friends. Thus, "My Friends" is an appropriate name
for this database. Type the words My Friends in, but don't press ENTER quite yet.

Where Should You Store Your Database?


In the New Database dialog box, you also can specify where you want to store your database.
Access lets you store database files virtually anywhere you desire. You can specify any drive,
path, or network location to which you have access. You may want to use a special directory
for your database files. For instance, you may want to put all your work-related databases in
one directory and all your personal databases in another directory. If this is the case, you
should save the My Friends database in your personal database directory.

After you specify your database name and location, click your mouse on the Create button.
Access creates the new database, using the name you provided, and displays the Database
window shown in Figure 2-3. Notice that the name of your database is shown at the top of the
Database window.

Figure 2-3 The Database window for your new database.

As you will recall from Chapter 1, Access stores your data in tables. Since this Database
window is for a brand new database, there are no tables listed. In the following section, you
will learn how to create a table.

Chapter 2: Access in an Hour


(This is section 2 of 7 in this chapter)

Creating a Table
After you have created your database, you need to create at least one table. Access uses
tables to define the structure of the data in your database. Each table contains a collection of
related information. Access makes it easy to construct tables. Access also provides a Table
Wizard to help you create common types of tables. You will use the Table Wizard to create
your first database table.

Note: Make sure you don't confuse a table with a database. In some software, a
database is simply a list of information, much like a table in Access. However, a database
in Access is much more than a table. For more information, refer to Chapter 1.

Starting the Table Wizard


Before you start the Table Wizard, make sure that the Tables button is selected in the
Database window (your screen will appear as shown earlier in Figure 2-3). Then, double-click
your mouse on the Create Table By Using Wizard option. Momentarily, you should see the
Table Wizard dialog box shown in Figure 2-4. In this dialog box, Access asks you to select the
type of table you want to create.

Figure 2-4 Picking the type of table to create.

Before you select a table type, take a minute to look at the Table Wizard dialog
box. This dialog box is similar to other Wizard screens: at the top is some help information, in
the center is where you make your choices, and at the bottom are the Wizard control buttons.
You use these buttons to move from one step in the task to the next. The purpose of these
buttons is shown in Table 2-1.

Butto
Meaning
n
Cancel Stops the Wizard; no action is taken.
Back Returns to the previous step (if available).
Next Proceeds to the next step (if there is one).
Ends the Wizard; completes the action with the available
Finish
information.
Table 2-1 The Wizard control buttons.
Notice that at this point only one of the control buttons is available; the others are dim. Access
makes only those control buttons available which have meaning at the current time. Thus, the
Back button is not available because there is no previous step; you are at the first step right
now. The Next and Finish buttons are not available because you need to make some choices
before the Wizard can progress.

Picking a Table Category


At this particular step of the Table Wizard, Access asks you to specify the type of table you
want to create. Notice that there are two choices--Business and Personal--in the center of the
left side of the dialog box. The button you select affects the types of tables listed in the
Sample Tables list. Just for practice, select the Business button. Notice that there are many
different sample tables listed. You can view all of them using the scroll bar at the right side of
the Sample Tables list. Table 2-2 describes the different sample business tables which the
Table Wizard can create.

Sample Table Meaning


Mailing List Creates a simple or complex mailing list.
Contacts Tracks your sales contacts.
Customers Manages your business customers.
Maintains information about your company's employees; can work
Employees
with the Expenses and Time Billed sample tables.
Products Develops your own inventory database.
Orders Tracks orders for your products.
Tracks order details (individual line items); works in relation to the
Order Details
Orders sample table.
Suppliers Tracks your vendors.
Builds a category list which you can use in conjunction with other
Categories
tables.
Payments Records payments made by your customers.
Invoices Maintains information about invoices generated.
Tracks invoice details (individual line items); works in relation to
Invoice Details
the Invoices sample table.
Tracks the projects on which you or your employees are working;
Projects
works in relation to the Time Billed sample file.
Develops lists of special events; works in conjunction with the
Events
Reservations sample table.
Manages reservations for a particular event; works in conjunction
Reservations
with the Events sample table.
Tracks time expended on projects; works with the Projects,
Time Billed
Employees, and Expenses sample tables.
Maintains a history of expenses related to specific projects; works
Expenses
with the Projects and Employees sample tables.
Tracks deliveries of your product; can be related to the Customers,
Deliveries
Orders, and Employees sample tables.
Fixed Assets Develops a list of the fixed assets owned by your company.
Logs when a service is performed on an asset; can work with the
Service Records
Fixed Assets and Employees sample tables.
Transactions Maintains a record of business transactions performed; can work
with the Payments sample table.
Tasks Tracks a list of tasks to be accomplished.
Employees And Builds relationships between the Employees and Tasks sample
Tasks tables.
Maintains information about students (or employees) and their
Students
classes.
Students And Builds relationships between the Students table and a sample
Classes Classes table.
Table 2-2 Business tables which can be created with the Table Wizard.

Note: Remember that the sample tables used in the Table Wizard are just that--samples.
However, you can modify them slightly while you are using the Table Wizard. Also, you
can later change the design of any table created with the Table Wizard.

Since you want to create a database of your personal friends, you will need to select the
Personal category. To select this group of sample tables, click your mouse on the Personal
option button. As shown in Figure 2-5, Access changes the list of sample tables.

Figure 2-5 The Table Wizard after displaying the Personal sample databases.

Scroll through the sample tables. You will see that the Table Wizard can create many different
personal tables. For a list of these tables, refer to Table 2-3.

Sample Table Meaning


Addresses Creates a mailing list of your friends and acquaintances.
Guests Tracks guests invited to a social event.
Builds a category list which you can use in conjunction with other
Categories
tables.
Household
Maintains a record of your belongings for insurance purposes.
Inventory
Recipes Manages your favorite quiche, fondue, and other recipes.
Plants Tracks the contents of your greenhouse or backyard jungle.
Exercise Log Records exercises you have done and calories burned.
Diet Log Manages your diet on a meal-by-meal basis.
Wine List Tracks your favorite wines and vineyards.
Logs the rolls of film you shoot; you can use it with the Photographs
Rolls of Film
sample table.
Maintains a log of your photographs; you can use it with the Rolls of
Photographs
Film sample table.
Lists your favorite authors; you can use it with the Book Collection
Authors
sample table.
Tracks books in your personal library; you can use it with the
Books
Authors sample table.
Groups Lists group photographs and any notes you have about them.
Logs when a service is performed on an asset; with some
Service
modification, this table can work with the Household Inventory
Records
sample table.
Recording Lists your favorite artists; you can use it with the Recordings sample
Artists table.
Tracks your recorded music; you can use it with the Artists sample
Recordings
table.
Video
Organizes your video tapes and laser discs.
Collection
Manages your investment accounts; works with the Investments
Accounts
sample table.
Tracks your individual investments; works with the Accounts sample
Investments
table.
Table 2-3 Personal tables which can be created with the Table Wizard.

Take a moment to select different sample tables. As you use the mouse to highlight different
sample table names, notice that Access changes the information in the Sample Fields list.

To create a table to keep track of the names, addresses, and phone numbers of your friends,
highlight Addresses in the Sample Tables list. (There is a good chance that this option is
already highlighted; it is the first option in the list.) You are now ready to select the fields that
will appear in your table. Your screen should appear as shown earlier, in Figure 2-5.

Choosing Types of Information to Include


Within your table, you will specify the fields, or pieces of information, you want to track. The
middle column, labeled Sample Fields, is where you specify the fields you want to use in your
table. Remember from Chapter 1 that fields define the type of information Access maintains
for each record in your table. Thus, at this point, you are defining the type of information you
want to keep on each of your friends and acquaintances. Table 2-4 shows the fields from which
you can make your selection.

Field Meaning
AddressID A unique numeric ID for your friend's address
FirstName Your friend's first name
LastName Your friend's last name
SpouseName The name of your friend's spouse
ChildrenNames The name of your friend's children
Address Your friend's street address
City Your friend's city
StateOrProvinc
Your friend's state or province
e
PostalCode Your friend's ZIP code
Country Your friend's country
Your friend's electronic (Internet, Prodigy, and so on) mail
EmailAddress
address
HomePhone Your friend's home phone number
WorkPhone Your friend's work phone number
WorkExtension Your friend's extension at work
MobilePhone Your friend's mobile (cellular) phone number
FaxNumber Your friend's fax line phone number
Birthdate Your friend's date of birth
An indicator of whether you want to send a birthday card to
SendCard
this friend
DateLastTalked
Date you last had contact with your friend
To
DateUpdated Date of last change to the database record
Nickname Any nicknames or preferred names for your friend
Notes Any comments or notes you may want to include
Hobbies Any of your friend's hobbies or interests
HealthIssues Any of your friend's health problems
Photograph A photo of your friend
Table 2-4 Sample fields available for the Addresses sample table.

The Table Wizard provides 25 sample fields for the Addresses sample table. However, you
don't need to use all of them. Instead, you should pick the fields you think you want to
maintain. Remember, you will need to keep the information up-to-date for it to be of value. The
more fields you select, the more fields you must maintain.

To select a field, highlight the field name and then click your mouse on the button with the
greater than symbol (>). Access, in turn, will move your selected field to the third column in
the dialog box, which is labeled Fields In My New Table. Since you will probably want to include
at least the first names, last names, addresses, and phone numbers of your friends, highlight
each of these fields in the Sample Fields list. Then, after each is highlighted, click your mouse
on the > button. When you are done, the dialog box should appear as shown in Figure 2-6.
Figure 2-6 After specifying a few fields for your table.

If you make a mistake, don't despair. You can use the dialog box buttons between the second
and third columns to manipulate each of the fields you will include. Table 2-5 lists these
buttons and their purposes.

Butto
Purpose
n
Includes a field from the Sample Fields column in your
>
table.
Includes all fields from the Sample Fields column in
>>
your table.
< Removes a field from your table.
<< Removes all fields from your table.
Table 2-5 Field selection buttons.

Note: You can move fields around in your table by removing them and then adding them
again. Access adds a selected field to your table immediately after whatever field is
highlighted in the third column.

Include whatever fields you deem necessary for your table. Make any modifications you desire
until you have completely defined the field order you desire. Before moving on, make sure that
you add the AddressID field to your table. This field assigns a primary key to your table. In the
following two sections, you will learn the importance of adding the AddressID field. When you
are done, click your mouse on the Next button to tell Access you are through with this step and
ready to move on. Access will display the next step dialog box shown in Figure 2-7.
Figure 2-7 The next step in the Table Wizard.

Naming Your Table


You are nearly finished defining your table. However, Access needs to know a few more pieces
of data before it can proceed. At the top of this dialog box, Access asks you to name your
table. Don't confuse this name with the name you gave your database when you first created
it. Here you are naming your table, and the database you already created can contain many
such tables. For this example, you will accept the default name (Addresses).

In this dialog box, you also specify whether you want Access to use a primary key for your
table. A primary key is a field that Access uses to sort your table. Generally, a primary key
should be unique, meaning that there will only be one record with any given primary key;
Access will not let you add a record if it has the same primary key as another record.

For example, if you have three friends with the last name Smith, you cannot use the last name
as a primary key. Likewise, if all your friends live in Seattle, you cannot use the city as a
primary key. However, since your friends probably have unique phone numbers, you could use
the phone field as the primary key.

You can set the primary key one of two ways. You can let Access set a key for you (this is the
default), or you can specify the key yourself. Make your choice and then click your mouse on
the Next button.

Understanding Keys
A primary key defines how Access orders information in your table. Even though you
don't need to define a primary key, Access will function more efficiently if you do. Using a
primary key, Access can locate and display records very quickly. This improved
performance will be more important as you add more records to your database.
Access lets you define both unique keys and non-unique keys. Using a unique key is best
because it improves searching time. However, there may be situations in which a unique
key is not possible. For example, you may want to use a city name as the key. Since
there are many cities with the same name, you would want to specify this as a non-
unique key.
In addition, you can use multiple fields to define your key. However, you cannot use the
Table Wizard to do so. Instead, you must create the table manually. You will learn how to
do this in Chapter 4, "Creating Another Database."
When you choose a field to use as a primary key, you should select a field that is as close
to unique as possible, regardless of whether you allow duplicates or not. For instance,
you would not want to use the FirstName or LastName field as the primary key; there can
be way too much duplication in these fields. On the other hand, you probably could use
the HomePhone field since there is much less chance for duplication in this field.

Defining a Key
If you let Access define your primary key automatically (at the end of the previous section),
you can skip this section entirely and proceed to the next one. If you set the key yourself, you
will see the dialog box shown in Figure 2-8.

Figure 2-8 Setting up the key for your table.

Using this dialog box, you can select which field Access will use as the key. Access suggests a
field to use (the first one in your table layout), but you can select a different one by clicking
your mouse on the drop-down arrow at the right side of the field. For this example, make sure
the AddressID field is selected.

Note: If you forgot to include the AddressID field in your table layout, you can use the
Back button to return to the dialog box where you define fields. (You will need to click
your mouse on the button twice.) Add the field and then use the Next button to return to
this dialog box.

Next, the dialog box asks you to specify how you want Access to treat the primary key. You
have three choices:
• Consecutive numbers Microsoft Access assigns automatically to new records. If you
choose this option, you will never need to fill in the primary key; Access will do it for you as you
add records.
• Numbers I enter when I add new records. If you select this option, you can enter the primary
key manually. However, the key must still be unique, and it must contain only numbers.
• Numbers and/or letters I enter when I add new records. This is the same as the previous
option except that you can enter both letters and numbers.

The primary key option you select depends on how you plan to use the primary key. If you only
want a counter (a key whose value corresponds to the record number: 1, 2, 3, and so on),
select the first option. However, if your primary key will be something else, choose one of the
other options. When you are done, click your mouse on the Next button.

Finishing Your Table


To finish your table, you must now answer two more questions. Both questions regard what
you want to do when the Table Wizard is done. At this point, you should see the dialog box
shown in Figure 2-9.

Figure 2-9 Finishing up the Table Wizard.

In this dialog box, you specify what you want to do next. Your choices are as follows:

• Modify the table design. Select this option if you want to continue refining the design of your
table.
• Enter data directly into the table. Select this option if you want to use the Datasheet view to
enter information in your table.
• Enter data into the table using a form the Wizard creates for me. Select this option if you
want the Wizard to create a data input form for your database table.
In Chapter 9, "Creating Custom Forms," you will learn how to work with forms. Right now,
choose the second option (which is the default). If you feel you need step-by-step hand-holding
while using Access, you can choose the Display Help check box at the bottom of the dialog
box.

As soon as you click your mouse on the Finish button (notice the Next button is no longer
available; there are no further steps), the Table Wizard creates the table according to your
specifications. You will know the Wizard is done when you see the Datasheet view of your table
on the screen.

Note: Congratulations on designing your first database and table. In other database
systems, what you have just accomplished could take hours. Your table is now ready for
you to enter information, and you are fast on your way to becoming proficient with
Access.

Chapter 2: Access in an Hour


(This is section 3 of 7 in this chapter)

Entering Information in Your Table


One of the primary ways to enter information in a table is through the Datasheet. In Chapter 1,
"Getting Started with Access," you learned that you enter data into a table using an Access
datasheet. Now that you have created your own table, you are ready to start using the
Datasheet for your own information.

Your Datasheet is shown in Figure 2-10. The actual layout of your Datasheet may be a bit
different, depending on which fields you used when you defined your table. But regardless of
the fields used, all operations within the Datasheet are essentially the same.
Figure 2-10 The Datasheet view of your table.

Notice that the cursor is blinking in the first field of the first record in your table. Access is
waiting for you to begin entering information. To do this, just start typing. When you want to
move from field to field, press either the ENTER or TAB key.

Note: Skip any field (by pressing TAB) that already contains something (such as the first
field in Figure 2-10, which contains the AutoNumber designation). Since this table was
set up so that the AddressID field is the primary key, Access automatically fills in this
field.

As you start to enter information in your table, notice that Access assumes you are starting to
enter a record. As shown in Figure 2-11, Access signifies this by adding an extra record below,
and placing a pencil icon at the left side of, the record on which you are working.
Figure 2-11 Adding a record in Access.

You should continue to add the information to your record. When you reach the
last field, press TAB or ENTER. Access, in turn, will take you to the first field of the next
record. You can back up through previous fields by pressing SHIFT+TAB. When you finish with
one record and proceed to another, Access automatically saves your changes (notice that the
pencil icon is removed from the left side of a record that has been saved.)

Moving Around Your Table


As the number of records in your table increases, you can use different keyboard keys to
quickly move from one record to another or within fields of a specified record. Table 2-6 lists
the keys you can use to navigate through your table.

Keypress Action
TAB MOVE TO THE NEXT FIELD
SHIFT+TAB MOVE TO THE PREVIOUS FIELD
ENTER MOVE TO THE NEXT FIELD
RIGHT ARROW MOVE TO THE NEXT FIELD
LEFT ARROW MOVE TO THE PREVIOUS FIELD
DOWN ARROW MOVE TO THE NEXT RECORD
UP ARROW MOVE TO THE PREVIOUS RECORD
PAGE DOWN MOVE DOWN ONE SCREEN OF RECORDS
PAGE UP MOVE UP ONE SCREEN OF RECORDS
HOME MOVE TO THE FIRST FIELD IN THE CURRENT RECORD
END MOVE TO THE LAST FIELD IN THE CURRENT RECORD
F5 JUMP TO A SPECIFIC RECORD NUMBER
CTRL+DOWN MOVE TO THE CURRENT FIELD OF THE LAST RECORD IN THE
ARROW TABLE
MOVE TO THE CURRENT FIELD OF THE FIRST RECORD IN THE
CTRL+UP ARROW
TABLE
CTRL+PAGE DOWN SCROLL RIGHT ONE SCREEN
CTRL+PAGE UP SCROLL LEFT ONE SCREEN
MOVE TO THE FIRST FIELD OF THE FIRST RECORD IN THE
CTRL+HOME
TABLE
MOVE TO THE LAST FIELD OF THE LAST RECORD IN THE
CTRL+END
TABLE
MOVE TO THE LAST FIELD OF A NEW RECORD (AT THE END
CTRL+ALT+END
OF THE TABLE)
Table 2-6 Navigating through your table.

Data Entry Shortcuts


In addition to the keys listed in Table 2-6, Access provides a number of shortcut keys you can
use when you enter your data. Some shortcut keys you know about; you use them to initiate
menu functions. When you select an Access menu, Access displays shortcut keys to the right
of menu options. Table 2-7 lists data entry shortcut keys you can use to speed up routine data
entry tasks.

Keypress Action
CTRL+; INSERTS THE CURRENT DATE
CTRL+ALT+SPACEB
INSERTS THE DEFAULT VALUE FOR A FIELD (IF ANY)
AR
INSERTS THE SAME VALUE AS IN THE SAME FIELD OF THE
CTRL+'
PREVIOUS RECORD
INSERTS THE SAME VALUE AS IN THE SAME FIELD OF THE
CTRL+"
PREVIOUS RECORD
CTRL+ENTER INSERTS A NEW LINE WITHIN THE CURRENT FIELD
CTRL+PLUS SIGN ACCEPTS THE CURRENT RECORD AND ADDS A NEW ONE
CTRL+- DELETES THE CURRENT RECORD
SAVES CHANGES TO THE CURRENT RECORD, BUT REMAINS
SHIFT+ENTER
IN CURRENT FIELD
Table 2-7 Shortcut keys for entering data.

Leaving the Datasheet


When you finish entering information, you will probably want to leave or close the Datasheet.
This tells Access you are done working with the table, and you are ready to perform some
other task. There are two primary ways you can leave the Datasheet: select the Design view
tool or click your mouse on the Close icon (the X) in the upper-right corner of the Datasheet.

The Design view tool is the leftmost tool on the toolbar. Click your mouse on this tool to display
another side of your table. Your screen will appear similar to what is shown in Figure 2-12.
Figure 2-12 Switching to Design view.

When you switch to Design view, the Design view tool changes to the Datasheet tool. Clicking
your mouse on the Datasheet tool displays your table's Datasheet again. When you are
working in Design view (as shown in Figure 2-12), Access lets you change your table's layout.
Design view displays the same fields you set up when you used the Table Wizard earlier in the
chapter. In Chapter 3, "Taking a Closer Look," you will learn more about how you use Design
view.

To close a Datasheet or Design view window, click your mouse on the Close icon in the upper-
right corner of the window. Access closes the window, and the Database window is left visibile.
Your new table (Addresses) is listed in the available tables in the Database window. When you
later want to work with the information in your table, you can either double-click your mouse
on the table name in the Database window or select the table name and click your mouse on
the Open button.
Chapter 2: Access in an Hour
(This is section 4 of 7 in this chapter)

Changing Information in Your Table


In the previous section, you learned how to use the Datasheet view to add information to your
table. The Datasheet view also lets you quickly and easily edit existing information. You can do
this by following these steps:

1. Select the field you want to change.


2. Press the F2 key.
3. Use the arrow keys to move through the field contents, making changes as desired.
4. Press one of the navigation keys to have Access save your changes and move you
to another field.

You can also use the mouse to speed up some of your editing. For instance, if you want to
make a change in a field, click your mouse on the field. You can then perform steps 3 and 4
above.

Finding Information
If you have many records in your table, you may find it difficult to rely solely on the keyboard
navigation keys to find a specific record. To help you quickly find a specific record, Access lets
you search for specific data, such as a name or phone number. To search your table for
specific data, select the Find option from the Edit menu. Access displays the Find and Replace
dialog box shown in Figure 2-13.

Figure 2-13 The Find tab of the Find and Replace dialog box.

In the Find What box, you enter the data you want to search for. You can enter any text into
this box, such as a name, a phone number, or a city. You can also use wildcard characters to
broaden your search. For example, you might want to search for the first phone number that
uses the 212 area code, or the first city whose name starts with the letter A. Access provides a
large number of wildcard characters you can use in your searches. Table 2-8 lists the available
wildcard characters.
Characte
Meaning
r
* Matches any number of characters.
? Matches any single character.
# Matches any single digit.
[] Matches any single character within the brackets.
Matches any single character except those specified. (Used with the
!
brackets.)
Matches any single character within a range. (Used with the
-
brackets.)
Table 2-8 Wildcard characters you can use while searching.

You may already be familiar with the concept of wildcards. For most people, the asterisk and
question mark wildcard characters are the most familiar. The question mark can be used in
place of any single character. The asterisk is used to represent any number of characters, and
it can be used anywhere within a search specification. Thus, to search for anything starting
with the letters br and ending in ed, you would use a search specification such as this:

br*ed

In this case, your search might match text such as breed, branded, or even bruised. If you
use the brackets, exclamation point, and minus sign in your specification, you can be even
more creative. The brackets let you develop a list of acceptable characters. For example, the
following search specification finds the words bold and bond:

bo[ln]d

You would not find Boyd because y is not an acceptable character.

You can use the exclamation point to reverse the process. For example, if you wanted to find
anything except the letters l and n in the third position, you would use the following:

bo[!ln]d

Now, Access will find the word Boyd, but not the words bold or bond.

You can use the minus sign (a dash) to specify a range of letters to be included. For instance,
the following search specification will find any text with the letters c through n in the fourth
position:

hea[c-n]*

If you use the Look In pull-down list, you can specify where your search should be conducted.
You typically have two options available. You can either search in only the current field, or you
can search in the entire table. Obviously, limiting your search to the current field results in a
much quicker search.

You can also use the Find dialog box to specify the parts of your table you want to search. If
you click your mouse on the arrow to the right of the Match box, you can choose to search any
of the following areas:

• Any Part of Field


• Whole Field
• Start of Field

You can further specify how your search should be done by clicking your mouse on the More
button. This results in an expanded Find and Replace dialog box, as shown in Figure 2-14.

Figure 2-14 The expanded Find tab of the Find and Replace dialog box.

The newly visible area of the dialog box allows you to specify the direction in which a search
should be conducted. Using the Search pull-down list, you can specify Up (toward the start of
your table), Down (toward the bottom of your table), and All. You can also limit your search by
selecting one of the two check boxes. They control whether Access should pay attention to
upper- and lowercase in your search, and whether formatting should play a role in matches
found.

After you have specified your search criteria, click your mouse on the Find Next button to
display the first match to your search. If the first match does not contain the data you desire,
continue the search by again clicking your mouse on the Find Next button.

Note: It is sometimes difficult to edit a field while the Find dialog box is visible. When
you are ready to edit, close the dialog box and make your change. When you want to find
the next occurrence of your search specification, press SHIFT+F4. This is much faster
than reissuing the Find command and using the Find Next button.

Replacing Information
As you work with your data, there will be times when you need to find a field so you can
change its contents. For example, if your friend's phone number changes, you will want to find
and update the phone number.

The Replace option from the Edit menu, which is closely related to the Find command, lets you
not only find information, but also replace it with different information. To initiate the Replace
command, choose the Replace option from the Edit menu or press CTRL+H. You will see the
Find and Replace dialog box, as shown in Figure 2-15.
Figure 2-15 The Replace tab of the Find and Replace dialog box.

Notice that the Replace dialog box is very similar to the Find dialog box, shown earlier in Figure
2-13. In the Find What box, you type the data you want to find; you can use the same type of
search specifications (including wildcard characters) discussed in the previous section. In the
Replace With box, you type the new data you want to use to replace the information in the
Find What box. You cannot use wildcard characters in the Replace With box.

Using the Look In drop-down list, you tell Access where you want to search (the current field or
the entire table). The Match drop-down list performs the same function as when doing a simple
search. Clicking your mouse on the More button displays the same additional controls shown in
Figure 2-14.

After you have filled in your specifications, click your mouse on Find Next to find the next
occurrence of the Find What string. When Access locates a match, it displays the match on the
screen. You can then replace the match by clicking your mouse on the Replace button. When
you select Replace, Access will make the replacement and search for the next occurrence of
the Find What string. If, instead of Replace, you click your mouse on the Find Next button
again, Access leaves the previous match unchanged and searches for the next occurrence of
the Find What string. If you are absolutely sure you want to change everything in the table that
meets your criteria, you can click your mouse on the Replace All button. When you select
Replace All, Access automatically replaces all occurrences of your Find What text in one step.

Chapter 2: Access in an Hour


(This is section 5 of 7 in this chapter)

Deleting Records
Earlier in this chapter, you learned how to add records to your table. Over time,
you may need to delete one or more records. For example, if you have an argument with your
buddy, you may want to delete him from your "My Friends" database.

To delete a record, follow these steps:


1. Use your mouse to select a record you want to delete. Do this by moving the mouse pointer into
the gray area at the left of the record. As the mouse pointer enters this area, it will change into a
right-pointing arrow.
2. Click your mouse on the left mouse button to highlight the record.
3. Press the DEL key or select the Delete option from the Edit menu. Access displays a dialog box
(shown in Figure 2-16) to prompt you to confirm the deletion:

Figure 2-16 You need to confirm any record deletions.

4. Click your mouse on Yes to delete the records or No to not delete them.

Note: Make sure you really want to delete the selected records before you click your
mouse on Yes. You cannot undo your changes once the deletion is complete. Also,
Access lets you select multiple records for deletion. To select additional records, hold
down the SHIFT key and repeat steps 1 and 2. This selects all the records between the
first record and the second. To select non-sequential records, hold down the CTRL key
and repeat steps 1 and 2.

Chapter 2: Access in an Hour


(This is section 6 of 7 in this chapter)

Saving Your Information


Earlier in this chapter, you learned how to enter and edit information in a table. When you are
adding or changing a record, a pencil appears to the left side of the record. This pencil
indicates that the record is being edited and that your changes have not been written to disk
yet. When you use one of the navigation keys to move to another record, Access automatically
saves your changes to disk. There is no need to explicitly save your data; in fact, there is no
command you can use to save it.

Access automatically saves data in this way to protect your information. If you should lose
power to your computer while the pencil icon appears on the screen, you would only lose the
information in the current record. Access has already saved all your previous changes to disk.

Note: The exact point at which your information is physically written to disk will vary
from system to system. Typically, information is first written to a disk buffer in the
memory of your computer. When the buffer is full or when your program ends, the
information is written to the disk. Although this arrangement speeds up overall computer
performance, it does present a risk. Information within the disk buffer (yet to be written
to the disk) will be lost if you should lose power to your computer. The only way around
this is to make sure you have a backup power source and to keep stray fingers away
from the power switch.

Chapter 2: Access in an Hour


(This is section 7 of 7 in this chapter)

Summary
In this chapter, you caught your first glimpse of the power Access brings to your desktop. You
now know how you can use the development tools built into Access (such as the Table Wizard)
to quickly and easily set up tables. You also know how to create your own database and enter
information in tables.

Before moving on to Chapter 3, make sure you understand the following key concepts:

• You can create a database by using the File menu New Database command or by using the New
tool.
• You can use the Table Wizard to quickly and easily create a table.
• The Table Wizard provides many sample tables. You can use these as they are or use them as a
starting point for a custom database.
• Use a primary key in your table to help Access efficiently order the table and quickly find records.
• The Datasheet lets you directly enter information in a table and edit existing information.
• You can use the Find command to search for information in your table. This command lets you
build search criteria using wildcard characters, if desired.
• You can use the Replace command to replace information in your table. This command is similar
to the Find command, but also allows the replacements.
• To delete a record from the Datasheet, select the record and press the DELETE key or choose the
Delete option from the Edit menu.
• Access saves your changes on a record-by-record basis. When you move from one record to
another, Access automatically saves any changes to the older record to disk.

In Chapter 3, you will learn a few more tricks for working with your new database and table.

Chapter 3: Taking a Closer Look


(This is section 1 of 3 in this chapter)

In the previous chapter, you learned how to create both a database and a table, as well as how
to enter and edit information in the table. In this chapter, you will build on the foundation laid
in Chapter 2.

By the time you finish this chapter, you will understand the following key concepts:

• How to change an existing table's structure


• The data types that Access supports
• Why you should add comments to your table design
• What field properties are and how you can change them
• How to perform editing functions on entire tables

Modifying Your Table Design


In Chapter 2, you learned about the Design view, which lets you examine your table's structure
without looking at the information it contains. For now, open the My Friends database you
created in Chapter 2.

To look at your table's structure (or design), select the table name from the Database window
and then click your mouse on the Design button. Access, in turn, will display the Design view
window shown in Figure 3-1.

Figure 3-1 The Design view window for the My Friends table.

Note: The number and types of fields shown in your Design window may vary from those
shown in Figure 3-1. Your fields will depend on how you answered the Table Wizard
questions in Chapter 2.

Using Design view, you can change your table's layout. You can add or edit fields, change the
type of information stored in a field, add comments to your layout, and modify the properties
of a field. The following sections examine each of these operations.
Adding and Editing Fields
In most ways, the Design view window operates like the Datasheet window.
Access lets you add fields, move fields, or change field names without affecting the
information contained in your current fields. To add a field, select the first blank row in the
layout (this is the last row) or insert a row. To insert a row, select the field before which you
want to insert the new field. Then choose the Insert Row option from the Edit menu or click
your mouse on the Insert Row tool. When you insert a new field, Access moves all the
subsequent fields down and inserts an empty field in the layout.

For instance, assume that you want to add a field for the middle initial of your friends.
Naturally, you would place this field between the first name and last name fields. To add the
field, perform the following steps:

1. Select the third row of the layout and make it the current row. (This is the row that defines the
LastName field.)
2. Click your mouse on the Insert Row tool. This adds a blank row between FirstName and LastName,
as shown in Figure 3-2.

Figure 3-2 Inserting a blank row in your table layout.

Now you can enter the new field name. In this case, type Middle Initial (you can include the
space). That's all there is to adding a field. In the next section, you will learn how you can
specify the type of information (text, numbers, and so on) that the new field will contain.
As you work with table fields, there may be times when you want to move a field. To move a
field, select the field's row (make sure the entire row is highlighted) and then move the mouse
point to the current record indicator at the left side of the record. (The current record indicator
is the small triangle to the left of the record.) When you hold down the left mouse button, you
can drag the field to any new position you desire. When you release the mouse button, Access
moves the field to the new location. Moving a field does not harm or modify its data, nor does
it change the data within any surrounding fields.

Your field names should describe the data that your fields contain. Over time, the information
you store in a table may change. To change the name of an existing field, simply select the
name and edit it. For instance, if you want to change the name of the PostalCode field to Zip
Code, select the existing field name and type in Zip Code. Likewise, you may want to change
the name of the StateOrProvince field to simply State. The resulting changes to your table
structure (after adding the Middle Initial field and changing the StateOrProvince and
PostalCode field names) are shown in Figure 3-3.

Figure 3-3 The modified table structure.

Over time, you may no longer need to track specific data. As such, Access also lets you delete
fields. You delete a field in much the same way you would delete records in a table:

1. Using your mouse, select the entire row containing the field you want to delete.
2. Press the DEL key or choose the Delete option from the Edit menu. If you are deleting a field that
contains data, Access will ask you to confirm the deletion, as shown in Figure 3-4.
Figure 3-4 Access asks you to confirm the deletion.

 To delete the field, along with all the information previously contained in it, click
your mouse on the Yes button.

Note: If you delete a field by mistake, immediately use the Edit menu Undo option. If you
make any other changes to your table structure, the deleted field (and its contents)
cannot be recovered.

Changing the Information Type


In order to store a piece of information efficiently, Access needs to know its data type. The
data type specifies the type of information the field will contain. Access lets you specify nine
different data types, as detailed in Table 3-1.

Data Type Meaning


AutoNumb
A sequential number Access fills in automatically as you add records.
er
A number accurate to 15 decimal places to the left of the decimal point
Currency
and 4 places to the right.
A number representing any date or time between the year 100 and
Date/Time
9999.
Hyperlink An active link to another document, URL, or location within a document.
Memo A long text string, up to 64,000 characters.
Number A numeric value.
Objects such as sound clips or graphical images. (OLE is a technical
OLE Object term for Object Linking and Embedding, which you learn more about in
Chapter 17, "Using OLE.")
Text Any characters, up to a length of 255 characters.
Yes/No A yes or no value.
Table 3-1 Data types supported by Access.

If you have been working with computers long, you may already be familiar with some of the
data types listed in Table 3-1. These basic data types cover virtually every category of
information you could electronically store.

In the Data Type column of the Design view window, Access displays the current data type of
each of your fields. If you want to change data types, select the data type entry for the field
you want to change.

For instance, assume you added a field called Christmas Card to your layout. The purpose of
the field is to indicate whether this person is on your Christmas card list. This field is a great
candidate for a Yes/No data type, but Access automatically sets the data type to text. As such,
you must explicitly change it to a different data type.
To do this, select the Data Type column for the Christmas Card row. You will notice a small
arrow appears to the right side of the data type. If you click your mouse on the arrow, a drop-
down list of available data types appears. All you need to do is select one of the data types. In
this case, select Yes/No. When you leave Design view, Access converts any values in the field.

Note: Changing data types can be a time consuming process, depending on how many
records there are in your table. When you change a data type, Access tries to convert
any existing data in the field into the new data type. If it cannot make a conversion (for
instance, to or from an OLE Object), you will lose the data previously stored in the field.

Adding Layout Comments


When you design a table, you decide which fields the table will store, as well as each field's
data type. To help you explain your decision to others who may eventually need to update the
table, Access lets you place comments about each field in the table. By reading your
comments, you or another user quickly knows why specific choices were made.

In Design view, you can place comments about your fields in the third column of each row. The
contents of the description field do not affect any Access operations; the description field is
simply a place where you document your thoughts or provide comments of a field's purpose.
Sometime in the future, you may forget exactly why you included a particular field in your
table. If you include a comment now, you are less likely to forget later.

To add a comment, simply select the cell in the third column of the row that should contain the
comment. You can then type anything, up to 283 characters in length. In Chapter 9, "Creating
Custom Forms," you will learn how this description field can come in handy.

Understanding Properties
You probably noticed the area at the bottom of the Design window; this is the Field Properties
area. Properties are simply characteristics associated with a field or an object. The Design
window lets you change the properties associated with fields.

The types of properties associated with a field depend on the field's data type. For instance, a
text field has a Length property (also known as a Field Size property) which controls the
number of characters the field can hold. An OLE Object (such as a sound or a picture), on the
other hand, does not have such a property simply because a length would not make sense.

To change a field's property, select the row that contains the field and then select or type the
new property. Although many of the properties are self explanatory, some are not. The
following sections explain the latter properties.

Note: Changing some properties can result in a loss of data. For instance, if you shorten
the length of a text field, then any fields that contain longer values will be truncated. In
instances where you may lose data, Access will first warn you before it carries out the
change.

Caption
A Caption is a label Access uses to refer to a field. In Datasheet view, the Caption appears
above the field's column. Access also uses the Caption property in other places, such as in
labels for controls. (You will learn more about controls in Chapter 9.)
The Caption property can be up to 255 characters. If you don't provide a Caption, Access uses
the field name instead.

Format
The Format property describes the format Access uses for displaying a value in the field. The
Format property only affects how Access displays data. The Format property does not change
the actual value stored in your table. You can set different formats for different data types. For
example, Access provides several different formats that control how a date is displayed.
Likewise, for currency fields, you can display monetary values based on several different
formats.

To see the available formats for a particular field, select the Format property and then click
your mouse on the arrow that appears to the right of the property box. For instance, if you
select the Birthdate field (which is a Date/Time data type), and then click your mouse on the
Format property, an arrow will appear to the right of the property box. If you click your mouse
on the arrow, you will see a drop-down list of the available formats for the field. The format
name is shown to the left of the drop-down list, while an example of the format's use is shown
to the right.

If a pre-defined format does not meet your needs, you can create your own custom formats.
You can create a custom format by putting together a series of characters that specify how the
values in the field should appear. The formatting characters you use will depend on the data
type of the field: Numeric or Currency, Date/Time, Yes/No, or Text or Memo.

The formatting codes for Numeric or Currency data types are shown in Table 3-2.

Character Meaning
Provides a place holder for a digit. Access displays either a digit or a
0
zero.
Provides a place holder for a digit. Access displays either a digit or a
#
space.
. Decimal point.
, Thousand separator.
E-, E+, e-,
Scientific notation.
e+
% Number is a percentage and is scaled by 100.
\ Display the next character as a literal.
-, +, $, (, ) Display as a literal character.
Use the following character as the fill character (for filling empty
*
spaces in the format).
Table 3-2 Custom formatting codes for Numeric or Currency data types.

For example, if you wanted to develop a custom format for currency so that the numbers
1234.5678 and -1234.5678 appeared as the following:

*******$1,234.57
(*******$1,234.57)

you would use the following in the Format property:

**$#,##0.00;(**$#,##0.00)
Notice that there are actually two formats specified, separated by a semicolon. Access uses
the format to the left of the semicolon if the value in the field is positive and the format to the
right if the value is negative.

Table 3-3 details the custom formatting codes you can use for fields with a Date/Time data
type.

Characte
Meaning
r
: Time separator.
/ Date separator.
d Display the day as a number without a leading zero.
dd Display the day as a number with a leading zero.
ddd Display the day as three text characters (Sun, Mon, Tue, and so on).
dddd Spell out the full name of the day (Sunday, Monday, Tuesday, and so on).
Use the short date setting from Windows Control Panel to display the full
ddddd
date (default is m/d/y).
Use the long date setting from Windows Control Panel to display the full
dddddd
date (default is mmmm dd, yyyy).
w Display the day of the week as a number.
ww Display the week of the year as a number.
m Display the month as a number without a leading zero.
mm Display the month as a number with a leading zero.
mmm Display the month as three text characters (Jan, Feb, Mar, and so on).
Spell out the full name of the month (January, February, March, and so
mmmm
on).
q Display the numeric quarter of the year.
y Display the year as a number.
yy Display the year as two digits.
yyyy Display the year as four digits.
h Display the hour as a number without a leading zero.
hh Display the hour as a number with a leading zero.
n Display the minute as a number without a leading zero.
nn Display the minute as a number with a leading zero.
s Display the second as a number without a leading zero.
ss Display the second as a number with a leading zero.
Display the full time using the time format specified in the Windows
tttt
Control Panel.
Use a 12-hour clock and display the time with the suffix AM or PM, as
AM/PM
appropriate.
Use a 12-hour clock and display the time with the suffix am or pm, as
am/pm
appropriate.
Use a 12-hour clock and display the time with the suffix A or P, as
A/P
appropriate.
Use a 12-hour clock and display the time with the suffix a or p, as
a/p
appropriate.
Table 3-3 Custom formatting codes for the Date/Time data type.
In most instances, the formats Access provides for the Date/Time data type will meet your
needs. However, you may need to use a special format to fulfill a unique need, such as
displaying the quarter of the year. For instance, suppose you wanted the dates 6/11/1999 and
1/15/2000 to appear as follows:

Quarter 2, 1999
Quarter 1, 2000

In this case, you would use the following in the Format property:

"Quarter "q", "yyyy

Table 3-4 shows the custom formatting codes you can use when working with fields that have
the Text or Memo data type.

Characte
Meaning
r
Character required (either text from string or a
@
space).
& Text character not required
< Force all characters to lowercase
> Force all characters to uppercase
Table 3-4 Custom formatting codes for the Text or Memo data types.

When you compare them to other formatting characters, the custom text formatting
characters are fairly easy to use. As an example, assume you want to format a value so it
appears all in uppercase and so that three question marks appear if the field is empty. In this
case, you would use the following Format property:

>;???

The code to the left of the semicolon specifies the formatting Access will apply to a text value.
The code to the right directs Access to display question marks if there is no text value. The
result of this Format property might appear as follows:

???
WIDGET
???
COG
???

You can also create a custom Format property for the Yes/No data type. Access internally
stores this data type as one of two values: -1 for Yes and 0 for No. A custom Format property
for this data type has three parts, each separated by a semicolon. Access does not use the first
part, which is left blank (apparently for future versions of Access). Access uses the second part
if the value is -1 and the third part if the value is 0. For example, take a look at the following
Format property:

;"Left";"Right"

This Format property results in the text Left and Right being used instead of Yes and No. The
text you use in your custom format is entirely up to you. You should note that when you are
entering data for this field in the Datasheet, you still work with it as a check box; if the check
box is selected, then Access translates that to Left. If it is not selected, it translates to Right.

Note: Remember that the Format property only affects how Access displays information;
it does not modify the underlying values in the table.

Input Mask
Some data types let you specify an Input Mask property. An input mask guides users as they
enter data. Perhaps one of the most common examples is when you enter a phone number. If
you use an input mask, you might see something like this:

Notice that the parentheses are already in place for the area code and a dash appears in the
proper place for the phone number itself. All the user has to do is type numbers. You specify
this sort of Input Mask property as follows:

!\(999") "000\-0000

You could probably tell from this example that you construct input masks in much the same
way as format specifications (as covered in the previous section). In other words, you specify a
series of characters that tells Access the way the mask should appear. Table 3-5 indicates the
various characters you can use in the Input Mask property.

Characte
Meaning
r
0 Digit placeholder (entry required; plus and minus signs are not allowed).
Digit placeholder (entry not required; empty positions converted to
9
spaces; plus and minus signs are not allowed).
Digit placeholder (entry not required; empty positions converted to
#
spaces, plus and minus signs are allowed).
L Letter placeholder (entry required).
? Letter placeholder (entry optional).
A Letter or digit placeholder (entry required).
a Letter or digit placeholder (entry optional).
& Placeholder for any character or a space (entry required).
C Placeholder for any character or a space (entry optional).
. Decimal point.
, Thousand separator.
/ or - Date separator.
: Time separator.
< Force all following characters to lowercase.
> Force all following characters to uppercase.
! Fill input mask from right to left instead of left to right.
\ Display the next character as a literal.
Table 3-5 Characters you can use in the Input Mask property.
Note: If you only need to put together a simple input mask, or you want to use a
common one (such as a phone number, social security number, or zip code), you can use
the Input Mask Wizard. You access this Wizard by clicking your mouse on the Builder
button that appears at the right side of the Input Mask property box when the box is
selected.

Validation Rule and Validation Text


As you have learned, input masks control the format with which users enter data. In addition to
letting you specify how users enter data, Access also lets you specify the acceptable values for
a field. You can do this by constructing validation rules.

Validation rules, if you apply them properly, can be very powerful tools. They let you check a
user's input as it is received into the field. For example, you can use a validation rule to make
sure that a value is greater than 0 or greater than 100. You could use a different rule to ensure
a value falls within a certain range. You construct validation rules like an equation. You use
operators such as those shown in Table 3-6 to compare the field value and some other value.

Note: Putting together validation rules may seem much like programming. There are
many similarities. If you have no programming experience, and you feel that constructing
validation rules is a bit over your head, don't worry--entire chapters could be written
about putting expressions together. You can use Access successfully without ever putting
together a validation rule. After you become more familiar with Access, and perhaps
after you have worked through the latter chapters of this book (which cover
programming topics), you may want to revisit this section and give validation rules
another try.

Switch Meaning
+ Addition
- Subtraction
/ Division
* Multiplication
Mod Modulus division (remainder)
Integer division (whole
\
numbers)
^ Exponentiation
= Equal
< Less than
> Greater than
<= Less than or equal
>= Greater than or equal
<> Not equal
Betwee
Between two values
n
And Logical And
Eqv Logical Equivalence
Imp Logical Implication
Not Logical negation
Or Logical Or
Xor Logical Exclusive Or
Table 3-6 Operators you can use in making validation rules.
As an example, assume you want to check if a value being entered by a user is between 10
and 20. You can do this by typing the following equation in your Validation Rule property:

Between 10 And 20

The Validation Text property is the message displayed by Access if a value does not meet your
validation rule. In other words, if your validation rule checks whether a value is outside a
certain range, and the value is outside that range, Access displays the validation text in a
dialog box. As an example, let's assume that the following are your settings for the Validation
Rule and Validation Text properties:

In this case, if you tried to enter a value lower than 20 in the field, then Access would display
an error message dialog box, as shown in Figure 3-5.

Figure 3-5 A validation rule error message dialog box.

Note: Some people like to use the Access Expression Builder to create validation rules.
While it can be helpful in some instances (such as if you are creating a very complex
expression), for most purposes it is more trouble than just entering an validation rule
directly. If you decide you want to try out the Expression Builder to put together a
validation rule, simply click your mouse on the Builder button at the right side of the
Validation Rule property box. This button is visible when you select the Validation Rule
property box.

Chapter 4: Creating Another


Database
(This is section 1 of 4 in this chapter)

In Chapter 2, "Access in an Hour," you learned how to perform all the basic Access functions.
You created both a database and a table, and you learned your way around the Datasheet. In
this chapter, you will revisit many of the same topics covered in Chapter 2, but from a different
angle. Here you will learn how to create a table from scratch, instead of using the Table
Wizard. You will find this exercise both instructive and enlightening.

By the time you finish this chapter, you will understand the following key
concepts:

• How to create a database


• How to design your own table
• How to layout your table using the Design view window
• How to test your table layout

A Brand New Database


To begin, you will create a new database. As you will recall from Chapter 2, you can create a
database by following these steps:

 Click your mouse on the New tool on the toolbar. Access displays the New dialog
box, as shown in Figure 4-1.

Figure 4-1 The New dialog box.

 Make sure the Database object is selected, then click your mouse on OK. Access
displays the File New Database dialog box, shown in Figure 4-2.
Figure 4-2 The File New Database dialog box.

1. If necessary, change the drive and directory for the new database.
2. In the File Name box, enter the name Customer. This is the name you will use for the database in
this chapter.
3. Click your mouse on Create. After Access creates the requested database file, you will see the
Database window shown in Figure 4-3.
Figure 4-3 The Database window that appears after Access creates your Customer database.

Chapter 4: Creating Another


Database
(This is section 2 of 4 in this chapter)

Creating a Table From Scratch


At this point, you are ready to create a table for your new database. In Chapter 2, you used the
Table Wizard to make creating a table easy. This is not to imply that creating a table manually
is difficult; on the contrary, it is a sure-fire way to understand your tables intimately.

In the rest of this chapter, you will learn how to develop your own table without using the Table
Wizard. In doing this, you will use much of the information you learned in Chapter 3, "Taking a
Closer Look." This table will contain a list of your customers. (If you don't have a business, just
pretend you do.) Even though you could use the Table Wizard to construct this table, the result
wouldn't be nearly as well-suited to your needs as a manually created table.

In order to manually create a table, you need to go through primary stages: design and layout.
The following sections discuss these stages in detail.

The Design Stage


You seldom use the computer during the design stage. Instead, you sit down with a pencil and
paper and decide what information you want in your database. Specifically, you determine
what data you need to track and the characteristics (data types, formats, and so on) of that
data. Although there are many books on the market which discuss the theory and practice of
database design, you don't need to read them to design a simple database. All you need to do
is ask yourself (and answer) the following questions:

• What should I call my table?


• What pieces of data will I need to maintain?
• What data type is best suited for each piece of data?
• How much storage space should be set aside for each piece of data?
• How should the pieces of data be organized?
• Do I need a unique key (a primary key) for my data?

There are many other questions you can ask yourself. In fact, you could pull together quite a
bit of detailed information before you even sit in front of the computer. But if you can at least
answer the above questions, you will be able to put together your first table.

A Table Design Form


As mentioned in the previous section, the best way to design your table is with a pencil and
paper. With that in mind, you might want to create a table design form you can use as you
work on your design. Figure 4-4 shows an example of such a form.
Figure 4-4 A sample table design form.

You should first determine a name for your table. Since this table will contain a list of business
customers, use Business Customers as the table name. Write that name at the top of the
design form.

Planning the Table Fields


On a scrap sheet of paper, write the names of the fields you'd like to use in your table. Don't
worry about the order they are in; consider this a "brainstorming session." For your field
names, you might include company name, address (perhaps two address lines for long
addresses or suite numbers), phone number, fax number, contact name, and so on.

Table 4-1 shows a list of field names which you can use for the Business Customers table. If
you have not already done so, you should enter each of these field names in your table design
form. Normally, you would enter the field names you wrote down during your brainstorming
session. However, so your database matches the examples shown in this book, use only the
field names listed in Table 4-1.
Field Name Meaning
Company
Name of the company
Name
Address 1 First address line
Address 2 Second address line
City City
State State
Zip Code Zip Code
Phone number for the company
Main Phone
switchboard
Fax Number Fax phone number
Account
Customer account number
Number
Salesperson Who handles the account
The amount the account can buy on
Credit Limit
credit
Account
Date the account was set up
Opened
Last Order Date of last order
Specifies if this is an active or inactive
Active
account
Contact Company contact name
Contact Phone Phone number for the contact
Comments Anything necessary to record
Table 4-1 Field names for the Business Customers table.

Picking Data Types


A field's data type specifies the type of value the field will hold, such as date, text, or currency
value. Your next step in defining your table is to determine each field's data type. Table 4-2
lists the Access data types.

Data Type Meaning


AutoNumb
A sequential number Access fills in automatically as you add records.
er
A number accurate to 15 decimal places to the left of the decimal point
Currency
and 4 places to the right.
A number representing any date or time between the year 100 and
Date/Time
9999.
Hyperlink An active link to another document, URL, or location within a document.
Memo A long text string, up to 64,000 characters.
Number A numeric value.
OLE Object Objects such as sound clips or graphical images.
Text Any characters, up to a length of 255 characters.
Yes/No A yes or no value.
Table 4-2 Data types supported by Access.

For most of the fields in your table, you will use a Text data type. But for some, you will find
other data types more appropriate. For instance, you should use a Yes/No data type for the
Active field, the Date/Time data type for the Date Opened and Last Order fields, and a Memo
data type for the Comments field. Table 4-3 lists the data type you should use for each field in
your table. You should write these data types in the Type of Data column of your table design
form.

Type of
Field Name
Data
Company
Text
Name
Address 1 Text
Address 2 Text
City Text
State Text
Zip Code Text
Main Phone Text
Fax Number Text
Account
AutoNumber
Number
Salesperson Text
Credit Limit Currency
Account
Date/Time
Opened
Last Order Date/Time
Active Yes/No
Contact Text
Contact Phone Text
Comments Memo
Table 4-3 Data types for the fields in the Business Customers table.

Notice that Table 4-3 assigns the AutoNumber data type to the Account Number field. Because
Access automatically calculates this data type with each new record, you can leave it up to
Access to assign your customer account numbers.

Determining Field Lengths


As shown in Table 4-2, a text field can hold up to 255 characters, and a memo field can hold up
to 64,000 characters. Your next step in your table design is to determine the lengths of your
fields. For some fields, you won't need to do this. For example, neither the Credit Limit field nor
the Active field will have a length because their data types don't require lengths. However, you
will have to specify lengths for all the other fields.

To appropriately determine maximum field lengths, you need to thoroughly understand the
data your table will contain. For instance, you need to know if you will maintain a 5-digit or a 9-
digit ZIP code for your customers. Likewise, you should know how much space you need in the
Company Name and Address fields.

If you thoroughly understand your data, you can choose the lengths that best meet your
needs. Although Access will always let you change field lengths, even after you start entering
data in the table, you should think about your data now in order to avoid frustration and
duplicate work later. Table 4-4 lists the maximum field lengths you should use for the Business
Customers table.
Field Name Max Length
Company
35
Name
Address 1 40
Address 2 40
City 25
State 2
Zip Code 9
Main Phone 10
Fax Number 10
Account (not
Number applicable)
Salesperson 35
(not
Credit Limit
applicable)
Account (not
Opened applicable)
(not
Last Order
applicable)
(not
Active
applicable)
Contact 35
Contact Phone 10
(not
Comments
applicable)
Table 4-4 Field lengths for the Business Customers table.

Ordering Your Fields


Finally, you need to determine the order in which you want the fields to appear in your table
and specify that order on your table design form.

Remember, earlier in the design process you wrote down fields in the order that they popped
into your head. Because ordering fields (like selecting field lengths) is a subjective process
based solely on your needs and the needs of your organization., you normally might place the
fields in the order they occurred to you during your brainstorming session. In the Order column
of your table design form, you would place a 1 next to the first field, a 2 next to the second
field, and so on.

However, for our purposes here, use the order specified in Table 4-5. Enter this information
into the Order column of your table design form.

Orde
Field Name
r
Company
2
Name
Address 1 3
Address 2 4
City 5
State 6
Zip Code 7
Main Phone 8
Fax Number 9
Account
1
Number
Salesperson 16
Credit Limit 13
Account
12
Opened
Last Order 14
Active 15
Contact 10
Contact Phone 11
Comments 17
Table 4-5 Field order for the Business Customers table.

Before you enter the information on your table design form into Access, you should decide
whether you want to use a primary key for your table. In Chapter 2 you learned that Access
uses a primary key to order records and locate them quickly. The primary key is typically a
unique value (meaning there can be no duplicates in the table), but it does not have to be.

In the Business Customers table, there are several fields that you can use as a key. For
instance, you could use the Company Name field as a key. However, since you could have two
companies with the same name, you may want to look for another key that is more unique. If
you cannot find another, then you could use the Company Name field and just allow for
duplicates.

You can also use the Account Number field as a key. By definition, this number should be
unique. Remember, Access automatically creates the account number for you using a
AutoNumber field. And because the Account Number is unique, it makes an ideal primary key.
To remind yourself that the Account Number field will be your primary key, circle that field's
number (1) in the Order column of your table design form.

The Layout Stage


After you finish designing your table, you are ready to use Access. With the table design form
in hand, you can quickly and easily layout the database. All you need to do is type, in the
proper order, the information from the table design form to the Design view window. To create
the Business Customers table, follow these steps:

1. If necessary, start Access and load the Customer database. This is the database created earlier in
this chapter.
2. From the Database window, select the Tables button. There should be no tables listed since none
have been created yet.
3. Double-click your mouse on the Create Table in Design View option. Access displays the Design
view window shown in Figure 4-5.
Figure 4-5 The Design view window.

In Chapter 3 you learned how to use the Design view window to change the layout of an
existing table. Here you will use it to create a new table. In this case, the Design view window
is completely empty. Notice also that the cursor is blinking in the first row, in the Field Name
column. Access is ready for you to layout your table.

To start, enter the first field name in your table's order: the Account Number field. Type
Account Number and then press ENTER. After Access accepts the field name, the cursor
moves to the Data Type column for that field. Your Design view window should now look like
what is shown in Figure 4-6. Notice that Access assumes this will be a text field and that
default properties for the Text data type appear at the bottom of the Design view window.
Figure 4-6 The Design view window after entering the first field name.

In your table design form, you specified that the Account Number field is an AutoNumber. To
change the field's data type, click your mouse on the arrow at the right side of the Data Type
cell. Access, in turn, displays a drop-down list of data types. Click your mouse on the
AutoNumber data type.

The cell should now display AutoNumber as the data type for the Account Number field. Your
Design view window should look like the window shown in Figure 4-7. Also, notice that, along
with the data type, Access has changed the field's properties.
Figure 4-7 The Design view window after changing the data type.

When you press ENTER, your cursor moves to the Description column. You can enter
comments about the field, if you wish. For the Account Number field, you may include a
comment that reminds you or another user that this field is a primary key.

When you press ENTER again, Access takes you to the next row, in the Field Name column.
Enter the name of your second field (Company Name) and then specify its data type. Do this
in the same way that you entered the last field's information.

Before you leave the row containing the Company Name field, take a look at the properties
shown at the bottom of the Design view window (see Figure 4-8). You already know that these
are defaults for the Text data type. Notice that Access sets the Field Size property to 50.
Figure 4-8 The Design view window after specifying the data type for the second field.

Since you specified on the table design form that the length should be only 35, you will need to
adjust the Field Size property. Use your mouse to select the Field Size property and change it
to 35. Then, use your mouse to return to the Field Name column, in the third row, and enter
your next field.

Go ahead and enter all 17 fields in the Business Customers table. As you enter each field in the
table, make sure you set the Data Type property and change the Field Size property, when
necessary. When you are done, your Design view window should appear as shown in Figure 4-
9.
Figure 4-9. The Design view window after entering the last field.

After you finish entering all your fields, you must specify your primary key. To do this, scroll
back through the table design until you can see the Account Number field on the screen.
Select the field and then click your mouse on the Set Primary Key tool. In response, Access will
display a key in the gray area to the left of the Account Number row (see Figure 4-10).
Figure 4-10 The finished Design view window.

You have now laid out your entire table, and you are ready to save your work to disk. To save
your table, simply close the Design view window. To do so, click your mouse on the Close
button in the upper-right corner of the window. In response, Access asks if you want to save
your work (see Figure 4-11).

Figure 4-11 Access asks if you want to save your work.

To save your work, click your mouse on the Yes button. Access then asks you to specify a
name for the table, as shown in Figure 4-12.
Figure 4-12 Saving your table contents to a named table.

Type the name you wrote at the top of your design form: Business Customers. Press ENTER
or click your mouse on the OK button to save your table under that name.

Note: If you save the table under the wrong name, don't let it bother you. You can use
the information presented in Chapter 3 to rename your table.

Chapter 4: Creating Another


Database
(This is section 3 of 4 in this chapter)

Testing Your Layout


Now that you have defined your table layout, it is time to test it out and refine it. You can do
this easily using the Datasheet for the table. Display the Datasheet for the Business Customers
table (refer to Chapter 2 if you need help with this). You should see a blank Datasheet, as
shown in Figure 4-13.
Figure 4-13 The Datasheet for the Business Customers table.

Take a moment to look at the Datasheet's appearance. If the field names don't appear like you
want them to, you can switch to the Design view window and make changes to the Caption
properties of the fields whose labels you find unsatisfactory. (You may remember from Chapter
3 that Access displays the Caption property at the head of each Datasheet column.) To switch
between the Datasheet and Design view windows, use the leftmost tool on the toolbar. (This
tool switches between Datasheet and Design views.)

That is how you refine your table; you enter information into the Datasheet, observing what
you can make better. Then, you switch to the Design view window to make the change. When
the change is made, switch back to the Datasheet to keep entering information. This iterative
process helps you to quickly make your table best suit your needs.

With your table design complete, enter a record. For your first record, use the information
shown in Table 4-6.

Field Name Value


Account
(Access will fill this in)
Number
Company
Birch Enterprises
Name
Address 1 3456 Maple Lane
Address 2 PO Box 549
City Kansas City
State MO
Zip Code 64133
Main Phone 8162375632
Fax Number 8162375633
Contact Ed Birch
Contact Phone
Account
3/2/99
Opened
Credit Limit 1500
Last Order 7/8/99
Yes (select the check
Active
box)
Salesperson John Davis
Comments
Table 4-6 Information for the first Datasheet record.

As you enter information, you may come up with a way to make data entry
easier. For example, entering phone numbers could be easier if you set the Input Mask
property for the phone number fields.

Switch back to the Design view window and select the first phone number field (Main Phone).
You can set the input mask for this field by following these steps:

1. Click your mouse on the Input Mask box at the bottom of the Design view window. You should see
a Builder icon (a button with three dots on it) appear at the right side of the box.
2. Click your mouse on the Builder icon. You should see the Input Mask Wizard dialog box appear.
Select the Phone Number input mask, as shown in Figure 4-14.

Figure 4-14 The Input Mask Wizard dialog box.

 Since you want to use the input mask for phone numbers, click your mouse on the
Next button. The Wizard then displays the dialog box shown in Figure 4-15.
Figure 4-15 You can change the placeholder character with this dialog box.

1. If you desire, change the placeholder that the input mask will use (the default is the underline).
2. Click your mouse on the Next button. The Wizard will then display the dialog box shown in Figure
4-16.

Figure 4-16 You can change how Access stores information with this dialog box.

1. Specify how you want Access to store information saved through the input mask. You can save
the phone number with or without the formatting characters (the default). Since the field length
for your phone numbers is only 10 characters long, you should save the value without the
formatting characters.
2. Click your mouse on the Next button. Access displays the final dialog box for the Input Mask
Wizard, as shown in Figure 4-17.

Figure 4-17 The final Input Mask Wizard dialog box.

 Click your mouse on the Finish button. Access then updates the Input Mask
property in the Design view window so it appears as follows:
!(999) 000-0000;;_

You can repeat steps 1 through 8 for each of the other phone number fields, as well. When you
move out of the Input Mask property field, notice that Access reformats the mask so it appears
as follows:

!\(999") "000\-0000;;_

Access adds the extra characters so that the mask conforms with its own internal
specifications.

When you are done adding your input masks, click your mouse on the Datasheet view tool. In
response, Access asks you if you want to save your changes to the table layout (see Figure 4-
18).
Figure 4-18 Access asks you if you want to save your changes.

Click your mouse on Yes to save your changes and return to the Datasheet. You can now enter
another record to see if your improvements worked.

Chapter 4: Creating Another


Database
(This is section 4 of 4 in this chapter)

Summary
Although Access provides many different tools (such as Wizards), you don't need
to use these tools to create a great database. Instead, you can manually create and refine
tables that will work just as well. And as you work with Access in this way, you will become
more aware of its capabilities and how to use them.

In this chapter, you have manually developed and refined a database. Before you move on to
Chapter 5, make sure you understand the following key concepts:

• Designing a table requires some planning. You need to examine what data you are going to
manage, as well as the data's characteristics.
• Using a table design form makes designing your table easier.
• When you manually create a table, you use the Design view window to specify your layout.
• As you input fields in the Design view window, you may need to change the data types and
properties which Access presets.
• The process of refining your table layout is iterative in nature. It involves working alternately in
both the Datasheet and Design view windows, repeatedly switching from one window to the other
until your design is correct.
• As you work in the Datasheet, you should look for ways to improve the layout of your table.
Switch to the Design view window to make your changes, and then back to the Datasheet to test
those changes.

In Chapter 5, you will learn more about what Access can do. Specifically, you will learn how you
can sort and filter the data in your table.

Chapter 5: Sorting and Filtering


Information
(This is section 1 of 3 in this chapter)

To let you quickly manipulate information in a table and display it in a more organized fashion,
Access provides two special tools: sorting and filtering. Using these tools, you can work with
your information in whatever way makes sense to you. This chapter will explain how sorting
and filtering work, as well as how you use these tools to work with your data.

By the time you finish the chapter, you will understand the following key concepts:

• What sorting is
• How to perform a simple sort
• What a simple sort is
• How to construct a complex sort
• How to remove the effects of a sort
• What a filter is
• How to filter your data
• How to save a filter

Sorting Your Data


Sorting is the process of putting your data into a logical order. We each sort things every day.
For example, you may arrange your personal bills by date so that you can handle the most
urgent ones first. You may arrange your video tapes in alphabetical order or your music
collection by artist name. In your kitchen, you may arrange your silverware into bins: forks in
one bin, spoons in another, knives in a third. In each of these cases, you are sorting, although
you may not think of it that way, at first.

With Access, you can perform simple and complex sorts The next two sections will address
each of these sort operations in detail.

Simple Sorting
Within Access, you will sort (or order) records in a table based on one or more fields. For
example, you might sort records by last and first names so that all your friends with the last
name Smith are sorted by their first names.

A simple sort orders records based on the contents of one or more adjacent fields. When you
perform a simple sort, you must specify the order in which you want Access to sort your
records:

• Ascending order. This means that Access will arrange the records in order from lowest to highest.
Thus, Access would arrange alphabetic characters from A to Z and arrange numeric information in
increasing numeric order.
• Descending order. This is the opposite of ascending order, and is sometimes called reverse order.
Access will order information from highest to lowest: alphabetic information from Z to A, and
numeric information from greatest to least.

For example, assume you have a table of your favorite video tapes. If you want to order the
records based on the titles of your video tapes, you ask Access to perform a simple sort. To
perform a simple sort based on a single field, select a field (cell) in the column by which you
want to sort. Next, use either of the following actions, depending on how you want to sort:

• To sort in ascending order, click your mouse on the Sort Ascending (A-Z) tool (see Figure 5-1). You
can also select the Sort option from the Records menu and then choose Sort Ascending.
• To sort in descending order, click your mouse on the Sort Descending (Z-A) tool (see Figure 5-1).
You can also select the Sort option from the Records menu and then choose Descending Sort.

Figure 5-1 The sorting tools on the toolbar.

When you perform the sort, Access reorganizes your table so that the records are in the order
you specified.

Note: Depending on the number of records in your table, it may take some time for
Access to sort your data. The length of time necessary also depends on the speed of your
computer and hard drive.

You can also use the simple sorting feature to sort by more than a single field. However, these
columns must be adjacent to each other, and each field must be sorted in the same manner
(ascending or descending). In other words, you can't sort one column in ascending order and
the other in descending order.

If you want to sort one column in one order and another in a different order, you
will need to use a complex sort, discussed later in this chapter. Also, if the columns are not
adjacent to each other, you must use a complex sort.

As an example of using the simple sorting feature with adjacent columns, assume you have
assigned numbers to every tape in your video collection. Also, assume each record represents
a single show. (Keep in mind that Access may use the same tape number in more than one
record. This would happen when a video tape contains more than one show.) What if you want
to sort the table by tape number and then show name? If the columns that contain these two
fields were adjacent to each other, you would follow these steps:

 Move the mouse pointer so it is over the column name (at the top of the
Datasheet) for one of the columns by which you want to sort. When you do this, the
pointer changes to an arrow pointing down.

1. Click your mouse on the left mouse button. This selects (highlights) the column.
2. Hold down the SHIFT key and repeat steps 1 and 2 with the other column. Access will highlight all
the columns between the first and the second one you selected.
3. Use one of the sorting methods (ascending or descending) described in the previous example.

When you perform a simple sort using multiple columns, Access works from left to right
through your table. Thus, Access first sorts the leftmost column, moves to the right and sorts
the next column, and so on.

Moving Columns
Before you can perform a simple sort on multiple fields (columns), you may need to move
the columns so they are adjacent. When you are working in the Datasheet, you can use
the mouse to reorganize (move) columns in your table. To move a column, follow these
steps:
1. Select the column you want to move and leave the mouse pointer on that column.
2. Hold down the left mouse button. A small, shaded box will appear around the tail of
the mouse pointer.
3. Drag the column to a new position in the table. As you move the mouse left or right,
Access highlights the lines between columns to indicate where the column will be moved.
4. When the mouse pointer is over the position you desire, release the mouse button.
Access, in turn, moves the column to the new position.

Complex Sorting
In the last section, you learned about simple sorting. Complex sorting goes a step further. You
can use a complex sort to sort multiple, non-adjacent columns in different orders (ascending
and descending). For example, if you have a table of names and addresses, you may want to
order the records first by ZIP code and then by last name (within ZIP code). If the two columns
are not adjacent (with the ZIP code column to the left of the last name column), you need to
use a complex sort.

To accomplish a complex sort, you use the Filter window. (This may sound like a strange place,
but it is--nonetheless--the proper place. Filters are described in detail later in this chapter.) To
display this window, select Filter from the Records menu, and then Advanced Filter/Sort from
the resulting submenu. Access displays the Filter window, shown in Figure 5-2.

Figure 5-2 The Filter window.

To perform a complex sort, you need to choose which fields you want to sort and then specify
how to sort them. For example, assume you are working with the Business Customers table
(developed in Chapter 4, "Creating Another Database"), and you want to sort it first by ZIP
Code and then by company name.

To do this, you need to specify these fields and their sort order in the grid at the bottom of the
Filter window. In the first column of the Filter window, click your mouse on the arrow at the
right of the field box for that column and select the Zip Code field.
Next, you need to tell Access you want the Zip Code field sorted in ascending order. To do this,
click your mouse in the Sort row beneath where you placed the Zip Code field and then click
your mouse on the arrow at the right of the cell. Access, in turn, provides a drop-down list from
which you can pick Ascending as the sort order.

After you select the order for this sort, the Filter window will appear as shown in Figure 5-3.

Figure 5-3 The Filter window after specifying the first field to sort by.

In the second column, you can specify the second field by which you want to sort (Company
Name) and how you want to sort it. If you want to sort the table in other ways, you can
continue to select other fields and specify how to sort them. When you are done, you need to
apply the sort to the table. To apply the sort, select the Apply Filter/Sort option from the Filter
menu, or click your mouse on the Apply Filter tool. Access then displays the records in your
table in the specified order.

Within the Filter window, there are other ways you can add fields to the sort, other than the
method you just used (clicking your mouse on the pull-down arrow for the field list). For
example, if you double-click your mouse on a field name in the list at the top of the Filter
window, the field name will appear in the first empty column in the Field row. As shown in
Figure 5-4, for example, if you double-click your mouse on the field name Main Phone, Access
will place the field name into the first unused filter column.
Figure 5-4 You can double-click your mouse to select fields.

You can also use your mouse to drag field names from the field list to the grid area. All in all,
Access provides three or four different ways to pick the fields you want to sort by. If you later
want to remove a field from the sort, simply use your mouse to select the column containing
the field (in the grid area), and then press the DEL key or choose Edit menu Delete Column
option.

Note: To undo the effects of a sort, choose the Remove Filter/Sort option from the
Records menu.

Chapter 5: Sorting and Filtering


Information
(This is section 2 of 3 in this chapter)

Filtering Your Data


In the previous section, you learned how to use the Filter window to create complex sorts. You
can also use the Filter window to create filters. A filter lets you limit the records you view.
Filtering does not remove records; it only lets you specify which records you want Access to
display.

When you define a filter, you specify criteria that data must meet before Access will display it.
For example, one filter might list records for employees that live in New York.

Access displays only those records that meet your filter criteria. In effect, you create a subset
of your data. You can then work with that subset as if it were a table: you can add records,
delete records, and make any changes you desire. Access updates the original table to reflect
each change you make.

You use filters to make your data more manageable. As an example, assume you were working
with a list of your customers, and you replaced one of your sales representatives. Now you
must update the customers table to reflect the new sales rep.

You could use the Replace function (described in Chapter 2, "Access in an Hour"), but you may
instead want to create a filter so you can review customers before you actually reassign them.
In this case, your filter would limit the records Access displays to only the records for the old
sales rep. In most cases, it is much easier to work with this smaller set of records than with the
entire customer table.

Creating a Filter
To create a filter, you again need to work with the Filter window. Click your mouse on the Filter
option on the Records menu, and then choose Advanced Filter/Sort from the resulting
submenu. Access displays the Filter window, shown in Figure 5-5.

Figure 5-5 The Filter window.

To create a filter, all you need to do is pick a field and specify the criteria you want applied to
the field. If you desire, you can also specify how you want the field sorted. (Thus, you can both
filter and sort at the same time.)

As an example, assume you have a table that contains your inventory records,
similar to the table shown in Figure 5-5. In this table, one of the fields is named Supplier. You
use this field to keep track of who supplies a particular item. Assume you need to look at which
items are supplied by Allied Industries. Using a filter, you can restrict the records Access
displays to only those records for which the supplier is Allied Industries. To create such a filter,
you would follow these steps:

1. Choose the Filter option on the Records menu, and then choose Advanced Filter/Sort from the
resulting submenu.
2. In the first column of the grid at the bottom of the window, choose Supplier as the Field.
3. In the Criteria cell for the column, enter an equal sign, followed by the words Allied Industries.
When you press ENTER, the Filter window should appear as shown in Figure 5-6. (Note that
Access adds the quotation marks around the supplier name automatically.)

Figure 5-6 Creating a simple filter.

 Click your mouse on the Apply Filter tool on the toolbar.


Access applies your selection rules (as defined by the filter) and displays only those records for
Allied Industries. The resulting subset of your inventory table is much easier to work with than
the entire table. In this case, your filter instructs Access to examine each record in the table
and to display only those records for which the Supplier field contains (is equal to and hence
the equal sign) the name Allied Industries.

Note: The filters you create can be as simple or as complex as you desire. You specify
criteria for your filter using the same regular expressions you used to create validation
rules for your fields (Validation rules were discussed fully in Chapter 3, "Taking a Closer
Look".) If you need help remembering the expressions you can use, refer back to the
section on validation rules.

Removing a Filter
It is not uncommon to use a filter to quickly view your data in a particular way, and then want
to remove the filter to view all your records. Access makes this very easy, and you can
accomplish this task using either of two different methods.
The first (and perhaps easiest) method involves the toolbar. When a filter is active, the toolbar
contains a tool that looks like a funnel. Actually, there are three tools that contain funnels, but
one tool that contains just a funnel, without any adornment. This tool looks like it is selected. If
you position the mouse pointer over the tool, you will see that its name is Remove Filter. Click
on the Remove Filter tool, and all your records again appear; the filter is completely removed.

The other method of removing a filter is to use the menus. On the Records menu is an option
entitled Remove Filter/Sort. If you choose this option, all your records are again displayed.

Saving a Filter
Access only retains your filter until you leave your table. Thus, if you close your table and later
decide you want to use the filter again, you will need to create the filter again from scratch.
This can be both frustrating and time consuming.

To get around this problem, you can save a filter as a query. You will learn all about queries in
Chapter 6, "Using Queries to Examine Your Data." Filters are closely related to queries,
although they are not nearly as versatile or flexible. Since filters and queries are related,
Access lets you store a filter as a named query. To do this, make sure you have the Filter
window displayed. Then, select the Save As Query option from the File menu, or click your
mouse on the Save As Query tool on the toolbar. In response, Access displays the Save As
Query dialog box, as shown in Figure 5-7.

Figure 5-7 The Save As Query dialog box.

Enter the name by which you want to save this filter. The name can be any name you desire.
As an example, if you want to save the filter that displayed the inventory items supplied by
Allied Industries, you can use the name Supplied by Allied Industries. Type the name and
press ENTER or click your mouse on the OK button.

To later reuse the filter, display the Filter window and select the Load From Query option from
the File menu. Access displays the Applicable Filter dialog box, as shown in Figure 5-8.
Figure 5-8 The Applicable Filter dialog box.

Highlight the name of the query you want to load as a filter and choose OK. Access loads the
filter. You can then use the filter or make any other changes to the filter you desire.

Chapter 5: Sorting and Filtering


Information
(This is section 3 of 3 in this chapter)

Summary
Access lets you quickly and easily sort and filter your data. These two closely related
operations can help you manage your data more efficiently. This chapter has taught you how
you can both sort and filter information.

Before you move on to Chapter 6, make sure you understand the following key
concepts:

• Sorting places data in a specific order.


• Information can be sorted either in ascending order (from smallest to largest) or descending order
(from largest to smallest).
• You can use the simple sort feature to quickly sort a table based on the contents of one or more
adjacent fields.
• You can use a complex sort to sort multiple fields that are not adjacent. You can also use a
complex sort to sort multiple fields in different orders (ascending and descending).
• To create a complex sort, use the Filter window.
• A filter is a way to temporarily limit what records Access displays. A filter creates a subset of your
table.
• You create a filter by specifying criteria for Access to use when selecting records to display. You
specify the criteria using the Filter window.
• A filter is lost when you close a table. You can save and later reuse a filter if you save it as a
query.

In Chapter 6, you will learn about a topic that is closely related to filters--queries.

Chapter 6: Using Queries to Examine


Your Data
(This is section 1 of 4 in this chapter)
In the previous chapter, you learned how you can use sorting and filtering to better manage
the information in your tables. In this chapter, you will learn about another, more powerful tool
provided by Access--queries. Like filters, Access queries let you select specific data from your
table. However, queries are much more powerful than filters.

By the time you finish this chapter, you will understand the following key concepts:

• What queries are


• What types of queries Access lets you create
• How Access stores queries
• How to use the Query Wizards
• How to design your own queries
• How to use the QBE grid
• How to set properties in a query

Understanding Queries
In normal English, a query is a question. Effectively, that is also what a query is in Access. In
short, Access lets you pose a question which is designed to return a number of records from a
table. For instance, "show me the orders entered in the last 30 days that have a value over
$5,000." This is a query, and it is one you can easily create in Access. Although you may not be
able to state your query in the conversational style just used, Access gives you quite a bit of
latitude in determining which records you want to view.

Types of Queries
Access supports five different types of queries. Each query type performs a
fundamentally different operation in relation to the data in a table. These five types of queries
are:

• Select query. This is the simplest type of query you can create. A Select query returns a number
of records based on criteria you specify. In many instances, this type of query is very similar to a
filter (covered in the previous chapter).
• Action query. This query performs an action on the data retrieved. For instance, the query could
create a new table and move records to it, or it could simply delete records in the current table.
• Crosstab query. This query presents information in a spreadsheet-like manner--similar to the
Datasheet. (Crosstab is a compound word formed from cross-tabulation.) You can use this query
to calculate subtotals and totals based on the contents of various fields.
• Parameter query. This query works in conjunction with other types of queries. When you
execute this type of query, Access asks you to answer a set of questions. The query uses the
answers to those questions to finish its work. You can think of this type of query as a "query with
a user interface."
• SQL query. To formulate some types of queries, you must use SQL (structured query language).
SQL provides a way to communicate with other types of databases or specialized database
servers on networks.

You may get the idea from looking at this list that you can use Access queries to do much
more than just ask questions about data (and you would be right). Queries can do more--much
more. The type of query you use will depend on what you want to accomplish with the query.
As you work through this chapter, you will learn how to create many different types of queries.
As you know, Access lets you query information in tables. In addition, Access also lets you
query information in queries. While this may sound redundant, querying a query is actually a
powerful and useful operation. A query often returns a subset of information in a table; in
effect, this subset is a table in its own right, even if it is a table based on another table. You
can use this subset as the basis for further queries. Thus, you can query data from a table and
then query the query. You can even query the result of the second query! Access is quite
powerful and flexible when it comes to what you can actually query.

How Access Stores Queries


In Access, you save your queries with your database; they are another component of your
database, another object, just like tables, reports, or macros. In Chapter 5, "Sorting and
Filtering Information," you learned that you can save a filter as a query, and that, in doing so,
you save it using a name. You can see what queries have been defined for a database by
clicking your mouse on the Queries button in the Database window. When you are working
with a new database or one that has no queries defined, Access displays nothing in this
window except the options allowing you to create new queries, as shown in Figure 6-1.

Figure 6-1 A Database window with the Queries button selected.

Notice that when you click your mouse on the Queries button, Access makes the same toolbar
buttons available as when you click your mouse on the Tables button. In Access, you perform
many of the same actions to control queries as you do to control tables. For example, you can
copy queries, rename them, and delete them. You can also create new queries and design
(change) existing queries.

Access provides you with two ways to create queries--you can either use one of the query
Wizards or you can create a query from scratch. In the rest of this chapter, you will learn how
to create queries using both of these methods.
Note: For the examples in this chapter, you use the database you created in Chapter 4,
"Creating Another Database." If you did not create that database and table directly, you
may want to load it off of the CD-ROM; it is called Customer 1.mdb. You can save this file
out under a different name, preferably Customer.mdb.

Chapter 6: Using Queries to Examine


Your Data
(This is section 2 of 4 in this chapter)

Using the Query Wizards


Access actually includes four different query Wizards, and there is only one place you can see
them all. Choose Query from the Insert menu. Access displays the New Query dialog box, as
shown in Figure 6-2.

Figure 6-2 The New Query dialog box.

Notice that there are five options listed in the dialog box. The first option (Design View) is not
really a query; it allows you to create a query from scratch. The purpose of the other four
options is as follows:

• Simple Query Wizard. This option allows you to create a very simple select query. This Wizard
is the same one that is run if you double-click your mouse on the Create Query By Using Wizard
option in the Database window. (See Figure 6-1.)
• Crosstab Query Wizard. This option creates a simple Crosstab query, as defined earlier in the
chapter.
• Find Duplicates Query. Creates a Select query that displays duplicate records in a table.
• Find Unmatched Query. Creates a query that displays records that have no relationship with
records in different tables. (This query is useful when working with relational databases, a
concept introduced in Chapter 13, "Understanding Data Relationships.")

Your query selection will determine which Wizard is used by Access. In the following sections,
you will learn how to use three out of the four Wizards represented here. (It is premature to
discuss the Find Unmatched query in this chapter, but you will understand how such a query is
used after learning the information in Chapter 13.)

Creating a Simple Query


To create a simple query, select this option from the New Query dialog box and then click your
mouse on the OK button. As an alternative, you can also double-click your mouse on the
Create Query By Using Wizard option, available when the Queries button is selected in the
Database window. Access then displays the Simple Query Wizard dialog box shown in Figure 6-
3.

Figure 6-3 The Simple Query Wizard dialog box.

At the left side of the Simple Query Wizard dialog box, you can use the drop-down list to
specify what Access should use as the source for this new query. Remember that you can use
either tables or other queries as your source. Since the Customers database has only one table
(the Business Customers table), Access has already selected it for you. If you were working
with a database that contained several other tables and queries, you could use the drop-down
list to change what the Wizard uses as a data source.

In the lower-left portion of the dialog box is a list of all the fields defined in the selected table
or query. If you change the data source in the pull-down list (described in the previous
paragraph), then the available fields change, as well. You can use the list, and the controls just
to the right of the list, to indicate which fields you want included in the query you are creating.

For the purposes of this example, select the Company Name, Address 1, Address 2, City, State,
and Zip Code fields. Make sure that after selecting each one, you click your mouse on the >
button. Access then displays the name of each field in the Selected Fields list at the bottom
right of the dialog box. When you are done selecting these fields, the dialog box appears as
shown in Figure 6-4.
Figure 6-4 The Simple Query Wizard dialog box after selecting some fields.

With the fields selected, you are ready to proceed to the next step in the Wizard. Click your
mouse on the Next button, and Access displays the dialog box shown in Figure 6-5. This is the
final dialog box in this Wizard.

Figure 6-5 The final dialog box for the Simple Query Wizard.
Here you can enter a name that you want used to save your query. The suggested name is
simply the table name on which the query is based (Business Customers) to which the word
"Query" is added. The simple query you created using the previous dialog box can be used as
the basis for mailing labels, since it only contains the address information for your customer
list. Enter the name Address List, and then click your mouse on Finish. Access displays the
results of your query, as shown in Figure 6-6.

Figure 6-6 The results of the Simple Query Wizard.

Creating a Crosstab Query


To create a Crosstab query, first open the New Query dialog box by choosing Query from the
Insert menu. Then select the Crosstab Query Wizard option from the New Query dialog box and
then click your mouse on the OK button. Access displays the Crosstab Query Wizard dialog box
shown in Figure 6-7.
Figure 6-7 The Crosstab Query Wizard dialog box.

At the top of the Crosstab Query Wizard dialog box, Access asks you to select the table from
which you want to query data. Since this database has only one table (the Business Customers
table), Access has already selected it for you. If you were working with a database that
contained several other tables and queries, you could use the View area in the center of the
dialog box to change what the Wizard displays as data sources.

At the bottom of the dialog box, the Wizard displays how your finished Crosstab query will
appear. Access updates this representation every time you make a change while you are using
the Wizard. To proceed to the next dialog box (shown in Figure 6-8), click your mouse on the
Next button.
Figure 6-8 Getting ready to select rows.

A Crosstab query lets you define what should appear in both the rows and columns of the
resulting display. Using the Wizard, you should indicate which fields you want to appear in
each row.

For this example, assume you want to tabulate the number of active and inactive accounts you
have, by sales rep and by state. In the Available Fields list, you should select the Salesperson
field and then click your mouse on the > button. Notice that the Wizard updates the sample
crosstab at the bottom of the dialog box.

Next, you should select the State field and click your mouse on the > button. Again, notice that
the Wizard updates the sample crosstab at the bottom of the dialog box, as shown in Figure 6-
9.
Figure 6-9 The crosstab query after selecting row heading.

You have just told Access to display the salesperson and the state on the left side of the
crosstab. Click your mouse on the Next button. Access displays the dialog box shown in Figure
6-10.
Figure 6-10 Getting ready to select columns.

In this dialog box, Access asks you to select which fields it will tabulate into the columns. Since
you want this query to indicate how many accounts are active and inactive for each sales rep,
you should select the Active field. After you select the Active field, notice that Access updates
the sample at the bottom of the dialog box. Click your mouse on the Next button when you are
ready to proceed. Access displays the dialog box shown in Figure 6-11.
Figure 6-11 Picking an operation for the query.

In this dialog box, Access asks you to specify what you want the query to
calculate. At the right side of the dialog box, the Functions box lists all the different operations
available to you. You can perform any of these operations on any field you like, although some
combinations of fields and operations may not make sense. For example, if you choose a text
field, performing an average on it doesn't make sense; you should only perform that operation
on a numeric or currency field.

To finish out this query, select the Company Name field and then choose the Count operation.
Notice that the information in the sample area of the dialog box changes with your selection.
The query will then calculate how many active and inactive accounts (there is a company
name for each account) there are in each state for each sales rep.

Finally, notice that there is a check box you can use to indicate whether the query should
provide a summary for each row. For a simple crosstab that only has two real columns (active
or inactive), a summary is probably unnecessary. Click your mouse on the check box to turn
the summary off. After the selection is made, you can click your mouse on the Next button.
Access will display the dialog box shown in Figure 6-12.
Figure 6-12 Access asks you to name your query.

At this point, you are done creating the query, and you need to save it. In this dialog box,
Access asks you what name it should use for the query. As with names for other parts of your
database, you should use something that is descriptive, such as Active Account Tally. Type
in this name and click your mouse on the Finish button. Access saves your query, updates the
query list in the Database window, and then opens the query to show you the results of your
work. Figure 6-13 shows an example of how this query should turn out.
Figure 6-13 Results of the new query.

When you look at the crosstab, one of the first things you will notice is that the columns have
headings of -1 and 0. Remember that the Active field is a Yes/No field, which means Access
stores this field's values as one of two numbers: -1 and 0. As such, these numbers are also
what Access displays in the headings. Later in this chapter, you will learn how to change the
headings by changing the properties associated with the query.

If you look past this oddity in the headings, you can see that the crosstab provides the
information you requested. It shows the number of accounts on active (Yes, or -1) and inactive
(No, or 0) status for each state and each rep. The Crosstab Query Wizard made it easy for you
to create this view of your data.

Creating a Find Duplicates Query


You can also use the New Query dialog box to create a Find Duplicates query, which lets you
quickly search a table for duplicate fields. Select the Find Duplicates Query Wizard option in
the dialog box and click your mouse on the OK button. Access, in turn, displays the Find
Duplicates Query Wizard dialog box shown in Figure 6-14.
Figure 6-14 The Find Duplicates Query Wizard dialog box.

In this dialog box, Access lists the data sources you can use for this query. Typically, you would
use a table as your data source, but with this Wizard you can also use another query. Because
the Business Customers table is the only item in the Customers database, Access has already
selected this table for you. You can click your mouse on the Next button to move to the dialog
box shown in Figure 6-15.
Figure 6-15 Selecting a field to check.

In this dialog box, Access asks you which fields you want to check for duplicate values.
Although there is no limit to the number of fields you can have your query check, you should
select only those fields necessary to ensure there are no duplicates. The more fields you ask
your query to check, the longer it will take to run. In the case of the Business Customers table,
you will probably only need to check the Company Name and Contact fields to determine if
there are duplicates.

First, select Company Name and click your mouse on the > button. Next, select the Contact
field and click your mouse on the > button. Access then displays the two fields, in order, in the
list at the right side of the dialog box. After you specify these fields, click your mouse on the
Next button. Access displays the dialog box shown in Figure 6-16.
Figure 6-16 Displaying additional information.

In this dialog box, Access asks if you want your query to display any additional information.
When you review duplicate records, you can use this information to help you determine which
ones you want to save and which you want to delete. For the Business Customers table, you
may want Access to display the Contact Phone, Last Order, and Salesperson fields. Select a
few of these fields (remember to click your mouse on the > button after you highlight each
one). Access adds each field's name to the list at the right side of the dialog box. When you
finish picking your fields, click your mouse on the Next button. Access displays the dialog box
shown in Figure 6-17.
Figure 6-17 Finishing up the query.

Now that you have finished creating your query, Access asks you to give it a name. Since the
Wizard's suggested name for this query is quite descriptive, click your mouse on the Finish
button to tell Access you accept it. Access saves your query under this name and updates the
query list in the Database window. Access opens the query to show you the results of your
work. Figure 6-18 shows an example of how this query should turn out.

Figure 6-18 The results of the Find Duplicates query.

You can now review the duplicates and decide what you want to do with each of them. If you
delete any record in the display, Access will delete the corresponding record in the underlying
table (Business Customers). For this reason, Find Duplicates queries can be very helpful in
managing the information in your table.

Chapter 6: Using Queries to Examine


Your Data
(This is section 3 of 4 in this chapter)

Designing Your Own Queries


Up to now, you have used the Query Wizards to create your queries. This is great, but the
Query Wizards only create a few specialized queries. If one of those queries does not meet
your needs, you can create your own query from scratch.

Many people think that developing queries from scratch is one of the most difficult parts of
working with Access. In many ways they may be right. But with a little guidance and a lot of
practice, you can develop just about any query you can imagine.

As you create queries from scratch, you will learn many principles which you can also apply
when you edit existing queries. Either way--creating or editing--you will use the query Design
window.

The process you follow to create a query depends, in large part, on the type of query you want
to create. Regardless of the query type, you should always start in the same way: select the
Queries button in the Database window and then double-click your mouse on the Create Query
in Design View option. Your screen will then appear as shown in Figure 6-19.
Figure 6-19 Creating a query.

Notice that the query Design window is in the background. In the foreground, Access displays
the Show Table dialog box, which asks you to select the data sources you want to use. As in
any other query, you can select either tables or queries as data sources (notice the tabs in the
dialog box). In this case, select the Business Customers table and click your mouse on the Add
button. Access opens a small field window for the table, keeping the Show Table dialog box
open. To close the Show Table dialog box, click your mouse on the Close button.

After you close the Show Table dialog box, Access displays the query Design window in the
foreground. In the middle of the Design window is a space for the data sources you have
opened. In this case, the space contains the Business Customers table. Below that is the QBE
(query by example) grid. The query Design window should appear as shown in Figure 6-20.
Figure 6-20 The query Design window.

In the QBE grid, you specify the criteria for your query. The options available in the grid will
depend on the type of query you are creating.

The Query Design Toolbar


The query Design toolbar appears just below the menu whenever you are using the query
Design window. Many of the tools on the toolbar should already be familiar, as they are used in
other Access windows. Other tools, however, are unique to the query Design toolbar. Table 6-1
shows these unique tools and what they accomplish.

Tool Name Purpose


Query
Allows you to specify the type of query you are creating.
Type
Run Executes the query, if necessary.
Show Displays the Show Table dialog box, as shown earlier in
Table Figure 6-19.
Displays the totals row of the QBE grid. Not available when
Totals
creating an Update or Delete Query.
Top Finds the top values in a query based on a percentage or
Values number of rows.
Propertie Displays the Properties window, either for query fields or the
s query itself.
Displays the Builder window, which some people prefer
Build
when creating criteria for a field.
Table 6-1 Query design tools.

You may often use the Query Wizards to create your run-of-the-mill queries, which means you
will use the query Design window for those that are more specialized. Thus, you will normally
use the Query Type tool at the beginning of your design session to indicate what type of query
you are creating. If you click your mouse on the down-arrow at the right side of the tool, you
can see that Access allows you to create the following types of tools:

• Select Query. The default query type. Lets you develop a query that returns a number of records
that meet your criteria.
• Crosstab Query. Modifies the QBE grid so its options represent those needed for a Crosstab
query.
• Make-Table Query. An Action query that creates a new table. Access uses this table to store the
results of the main part of the query. When you choose this tool, Access asks you the table name
and where Access should store the table. The QBE grid is the same as for a Select query.
• Update Query. An Action query that updates numerous records in a table. Access modifies the
QBE grid to represent the query's needs.
• Append Query. An Action query that appends records to a table. When you choose this tool,
Access asks you the table name and where it should store the table. Access modifies the QBE grid
to reflect the criteria for this type of query.
• Delete Query. An Action query that deletes records. Access modifies the QBE grid to a simpler
format than the other queries.

These query types should look familiar; they are basically the same as those discussed at the
beginning of this chapter.

Using the QBE Grid


Regardless of the type of query you create, you will always use the QBE grid to design the
query. You can manipulate items in the grid in the same ways you can in other Access design
grids. For example, in Chapter 5, "Sorting and Filtering Information," you learned how you can
use the Filter window grid. The QBE grid works the same way; you can add columns, delete
columns, and move columns around. You can also select cells in the grid and edit them.

The meaning of the rows in the QBE grid will vary depending on the type of query you are
designing. The top row, however, always contains a field name. Each column in this row
represents a field that Access will show in the query result. Thus, if you want to display five
fields in your query result, you would use five columns in the QBE grid. Access displays fields in
the same order you place them in the grid. However, how you set the Show row for each field
controls whether or not Access displays the field. (see Figure 6-21).

Figure 6-21 The QBE grid.

If you select Show row for a particular column, Access displays that field in the results. If you
don't select the Show row, Access doesn't display the field. Why would you not want to display
a field? Simple; if you are using a column only to select or sort records, you don't need to
display it. For example, if you select records based on the value of a Yes/No field (and select
only those records with the field set to Yes), you know that every value in that results field will
be the same (-1). As such, there is really no need to display the field. You can use the Show
row to hide or display fields as you desire.

Note: The Show row is not applicable to or available with the Crosstab, Update, Append,
and Delete Query tools.

The Sort and Criteria rows work the same as described for filters in Chapter 5, "Sorting and
Filtering Information." If you are still not clear on their proper use, refer back to that chapter.
Perhaps the best way to discover how to use the QBE grid is just to experiment with it for a
while. Assume that you want to create a query that will use the Business Customers table and
display all the active accounts with credit limits over $1,000 for one of your sales reps (John
Davis). Further, you want the accounts listed in descending (highest to lowest) order based on
their credit limit (for those accounts with the same credit limit, you want them shown
alphabetically by company name). To design such a query, you would follow these steps:

1. Start with an empty QBE grid.


2. Use the Query Type tool to make sure a Select Query is being designed. (It should be, by default.)
3. In the field list, double-click your mouse on the Active field name. Access displays this field name
in the first column of the QBE grid.
4. In the Criteria row for the first column, enter the equation = Yes. This tells Access you want only
those records with the Active field set to Yes.
5. Clear the check box in the Show row for the first column. This tells Access not to display the value
of this field.
6. In the field list, double-click your mouse on the Salesperson field name. Access displays this field
name in the second column of the QBE grid.
7. In the Criteria row for the second column, enter the equation = "John Davis". This tells Access
you want only those records that have noted John Davis as the sales representative.
8. Clear the check box in the Show row for the second column. This tells Access not to display the
value of this field.
9. Double-click your mouse on the Credit Limit field name. Access displays this field name in the
third column of the QBE grid.
10. In the Sort row for the third column, choose Descending.
11. In the Criteria row for the third column, enter the equation > 1000. This indicates you want only
those records with credit limits over $1,000.
12. Double-click your mouse on the Company Name field name. Access displays this field name in the
fourth column of the QBE grid.
13. In the Sort row for the fourth column, choose Ascending.
14. Double-click your mouse on the Contact field name. Access displays this field name in the fifth
column of the QBE grid.
15. Double-click your mouse on the Contact Phone field name. Access displays this field name in the
sixth column of the QBE grid.
16. Double-click your mouse on the Last Order field name. Access displays this field name in the
seventh column of the QBE grid.

You are now done with the query. Your query Design window should look like what is shown in
Figure 6-22.
Figure 6-22 The completed query.

This query displays five fields from the Business Customers table, but only for those records
that meet your criteria. You can save the query right away, if you desire. It may be better,
however, to see the results of your query. To do so, click your mouse on the Run tool on the
toolbar. Access runs the query, without saving it, and displays the results. This way you can
check your work to see if the result is what you expected. Figure 6-23 shows the results of your
new query.

Figure 6-23 Query results.

When you finish examining the query results, you can use the View tool (left side of the
toolbar) to switch back to the query Design window. You can then save your query by closing
the Design window. At this point, Access asks if you want to save your query. Click your mouse
on the Yes button, and Access prompts you for a name to use (see Figure 6-24).

Figure 6-24 You can save your query using whatever name desired.

Enter the name you want Access to use for the query. In this case, you may want to enter the
name Active Davis Accounts Over $1000. When you click your mouse on the OK button,
Access saves the query and updates the Database window to reflect the addition of the new
name.

Setting Properties
In Chapter 3, "Taking a Closer Look," you learned about field properties and how they can
affect your Datasheet. The properties described in Chapter 3 apply to fields in a table, but you
can also set properties for fields in a query. Query properties affect how Access displays the
information the query derives, as well as how you can edit that information.
To see the properties for a particular field, select the field in the QBE grid. Then, click your
mouse on the Properties tool. Access displays a Properties window; the exact appearance of
the window will depend on the data type of the field. A sample Properties window is shown in
Figure 6-25. (These properties are for the Credit Limit field.)

Figure 6-25 The Properties window for the Credit Limit field.

Notice that there are fewer properties than you would see in the table Design window. The
properties shown, however, function exactly the same way as they do when you work with
tables. (You may want to refer back to Chapter 3 for a refresher.)

Chapter 6: Using Queries to Examine


Your Data
(This is section 4 of 4 in this chapter)

Summary
Queries are powerful tools that you can use to select, change, and manipulate information in
your database. From a data source (a table or another query), a query selects records
according to criteria you specify. What Access does with those records depends on the type of
query you design.

In this chapter, you have learned the fundamentals of queries, and a little bit more. When you
combine the information in this chapter with what you have learned in previous chapters, you
will find that queries are not as mysterious or difficult as you may have first suspected.

Before you move on to Chapter 7, make sure you understand the following key concepts:

• A query is a way for you to pose questions to Access about the information in your tables.
• Access lets you create five types of queries: Select, Action, Crosstab, Parameter, and SQL.
• Queries are another part of your database, just like tables, reports, and macros. You can use the
Queries button in the Database window to view which queries are in your database.
• You can use Query Wizards to create four different types of queries. They are instructive (in what
the queries accomplish) and a good starting place for your own custom queries.
• You can use the query Design window to design your own queries from scratch. This window,
along with the query Design toolbar, lets you specify and create any type of query you can
imagine.
• The QBE (query by example) grid appears at the bottom of the query Design window. Using the
grid, you can specify which fields Access will use to determine if records should be displayed, as
well as additional records which Access will display in the query results.
• When you design a query, you can specify properties for the fields in the query result. These field
properties are similar to those you set when you design a table.

In Chapter 7, you will learn how you can print either your table or your query results.

Chapter 7: Printing Your Table


(This is section 1 of 5 in this chapter)

Many computer users don't give much thought to what happens after they get their
information in a database. Very often, getting information into a database is only half the
story--you also need to worry about printing out information so you can share your data with
others.

In this chapter, you will learn how you print the information contained in your database. You
will learn concepts that apply whether you are printing a simple table or a complex report.
However, this chapter is only the start. Two other chapters in this book deal with Access report
writing capabilities. Between these three chapters, you will have all the tools you need to
create any type of output you desire.

By the time you finish this chapter, you will understand the following key concepts:

• How to print your table's contents


• How to select a printer
• How to specify the way in which your information should print
• How to print an object's layout
• How to use print preview to save paper

Printing a Table
As just discussed, after you enter data into your table, you will want to print a copy of your
table's contents. Access makes it very easy to print the data in your table. One way you can
print your table is to follow these steps:

1. Choose the Tables button in the Database window.


2. Select (highlight) the name of the table you want to print.
3. Select the Print option from the File menu or click your mouse on the Print tool on the toolbar.

Another way to print your table is to follow these steps:


1. Choose the Tables button in the Database window.
2. Select (highlight) the name of the table you want to print.
3. Click your mouse on the Open button. Access displays the Datasheet for the table; you can make
any changes to the table you desire.
4. Select the Print option from the File menu or click your mouse on the Print tool on the toolbar.

Regardless of which method you use, Access understands that you want to print. If you click
your mouse on the Print tool on the toolbar, Access tries to print your table right away. If you
select the Print option from the File menu, Access displays the Print dialog box, as shown in
Figure 7-1.

Figure 7-1 The Print dialog box.

The various parts of the Print dialog box control what Access prints. If you want to control
which printer Access uses to print your table, use the Name pull-down list at the top of the
dialog box. If you want to change specific attributes of the printer, click your mouse on the
Properties button. Access, in turn, will display the Properties dialog box for the printer,
described later in this chapter.

The Print Range area lets you choose the parts of your table Access prints. You can print your
entire table, part of your table (the rows or columns you have selected), or a range of pages.
Later in the chapter, you will learn how to preview your printout on your screen before you
print it. Using this print preview, you might decide to print a specific range of pages. The Pages
option lets you specify a range of pages to print.

The Copies area lets you tell Access how many copies of your information to print. The Collate
check box only has meaning if you are printing more than one copy of the table. For example,
assume your table takes five pages to print completely. If you need two copies and you have
selected the Collate check box, Access will print all five pages of the table (one copy) and then
print the five pages again (the second copy). If you don't select the Collate Copies check box,
Access prints two copies of each page, in turn. In this instance, you will need to manually
collate the copies later.
Finally, in the center of the right side of the Print dialog box is a check box called Print to File.
This check box lets you divert your printout from the printer to a disk file. Printing to disk is
actually quite powerful. For instance, assume you need to send a report to someone across the
country. You can print it out and fax it to them or send it through the mail system. However, if
you print the report to a file, you can instead send them the disk containing the file, or you
could e-mail the print file to them. If the report is large, sending an e-mail or a disk could save
lots of money in shipping charges. As a result, they get the information faster and at a lower
cost. When they receive the file, they can send it to their printer and have a copy the same as
if you had mailed a printed copy to them.

When you finish telling Access what to print, click your mouse on the OK button. Access will
send your information to the printer according to your specifications. If you selected the Print
to File check box, Access will ask you for a file name to use, as shown in Figure 7-2.

Figure 7-2 The Print To File dialog box.

This is a standard file control dialog box. You can use the controls it provides to select a drive
and folder for your output file. All you need to do is type the filename you desire and click your
mouse on the OK button. Access will send printer output to the disk file you specified.

If your computer has access to multiple printers or if you need to better control your printout
(perhaps by changing your page orientation or margins), you can use the Print Setup dialog
box discussed next).

Chapter 7: Printing Your Table


(This is section 2 of 5 in this chapter)

Controlling the Printed Page


Access, like many programs, takes full advantage of the Windows environment. Access uses
the printing facilities provided by the Windows environment, which means it can use any
printer Windows can use. While you cannot add or delete printers within Access (this is done
from Windows itself), you can control to which printer Access sends your information and
which features of that printer Access uses. To control Access printer operations, you use the
Page Setup dialog box.

You can get the Page Setup dialog box from many different places in Access. Any time you are
getting ready to print, there is normally a tool or menu option that will let you view the Page
Setup dialog box. In most cases, however, you will get to the dialog box by selecting the Page
Setup option from the File menu. The Page Setup dialog box is shown in Figure 7-3.

Figure 7-3 The Page Setup dialog box.

The following sections discuss the various parts of this dialog box in detail.

Setting Printout Margins


The first of the two tabs available in the Page Setup dialog box is Margins (see Figure 7-3).
Depending on the data you are printing, you may need to change the default page margins.
Margins are the white space left at each side of your paper. The Margins tab of the Page Setup
dialog box lets you control how much of a margin you want left on your printed page. To set a
margin, simply change the setting shown for each of the four margins.

The default margins are 1" on each side of the paper. You can change these margins to any
logical value you desire; simply select the box whose margin you want to change, and type in
a new one.

Note: Some printers require a certain margin. For instance, some laser printers cannot
physically print within a quarter-inch of the paper's edge. In these instances, Access will
not allow you to change the margins to less than the physical limitations of the printer.
Setting Page Specifications
Using the Page tab of the Page Setup dialog box (see Figure 7-4), there are numerous ways
you can change how Access actually puts information on the physical page.

Figure 7-4 The Page tab of the Page Setup dialog box.

Note: The options available in the Page Setup dialog box will depend, in large part, on
your printer type. If some setup options are not available to you, don't worry. Because of
the printer you are using, you probably have options available that other users don't
have.

The first setting you can specify in the dialog box is the orientation of your paper. Actually, this
is a bit of a misnomer. The paper itself is not oriented; it is the image created by Access that is
oriented in relation to the paper. To select landscape or portrait orientation, use the settings in
the Orientation area, at the top of the dialog box.

Printed materials typically use a portrait orientation. This simply means that when you are
reading the paper, the narrow side is at the top and bottom of the page. If you turn the page
90° to the left or right, the page is in landscape mode--the narrow side is at the left and right
sides of the page. Landscape mode is handy when you are printing tables that have many
columns in them.

If your printer supports multiple paper sizes, such as standard and legal sheets, you may need
to select the paper size you desire. To select a paper size, change the information in the Paper
area of the dialog box. Depending on your printer, you may be able to change both the size
and source of the paper. (There are controls for each of these in Figure 7-4.) You should select
the paper size and source that makes the most sense for the type of output you want to
create.

Changing Your Printer


A printer driver is special software that Windows uses to communicate with your printer. Most
printers require their own special software (in other words, their own printer driver).

It is not unusual to have several Windows printer drivers installed in your system. Many people
have at least two printers, such as an ink jet and a laser printer. Others will have even more
drivers installed so they can use their friends' printers. For instance, if someone else in your
company has a high-resolution laser printer, you might have a printer driver installed for that
printer, even if you don't have direct access to the printer. Instead, you can send the output to
a file and then physically take the file to the other printer to print the output.

Access lets you select any printer whose driver has been installed in Windows. In short,
selecting a printer driver tells Access which printer you want to use. You select a printer driver
in the Printer area of the Page tab of the Page Setup dialog box. (See the bottom of Figure 7-
4.)

You will normally select the Default Printer setting. With the Default Printer setting, Access
uses the printer you have setup as the default printer in Windows. You can, however, select a
different printer by choosing the Use Specific Printer option button. The Printer button then
becomes active and you can use it to select the printer you want to use. When you click your
mouse on the Printer button, Access displays a new Page Setup dialog box that allows you to
specify the printer you want to use. (Why the same name is used for two dialog boxes is a
mystery.) See Figure 7-5 for an example of this dialog box.

Figure 7-5 The Page Setup dialog box.

The pull-down list at the top of the dialog box shows the name of each printer connected to
your PC, as well as the names of the printer drivers you have installed. Regardless of which
printer you choose, Access will remember your choice and use that printer until you select
another.

You may have noticed that this second Print Setup dialog box (Figure 7-5) is similar to the top
of the Print dialog box (Figure 7-1). Access allows you to specify which printer you want to use
in both locations. Changing the printer in one dialog box is the same as changing it in both of
them.

Note: Changing your printer will affect the options available in the various Page Setup
areas of Access. Generally, Access only displays setup options applicable to the current
printer. Don't worry if your setup dialog boxes change when you change printers.

When you are done specifying the printer you want to use, click your mouse on the OK button.
You can then continue to set other print options, as desired.

Controlling Printer Properties


There are hundreds (if not thousands) of different printers on the market. This is one reason
that Windows requires printer drivers in order to communicate with a particular printer. To
complicate matters, each of those printers has different capabilities. For instance, different
printers will handle different types of paper. Some printers can print in color. Other printers
offer different options for printing graphics. The list is endless.

Access allows you to change the specific properties used by a printer. You can do this by
clicking your mouse on the Properties button in either the Print dialog box (Figure 7-1) or the
Page Setup dialog box (Figure 7-5). Access displays the Properties dialog box for a printer. The
actual appearance of this dialog box varies completely, depending on the printer you are
using. Figure 7-6 shows an example of the Properties dialog box for the Epson Stylus Photo
700 printer.
Figure 7-6 The Properties dialog box for the Epson Stylus Photo 700 printer.

This particular printer is a color ink-jet printer. Thus, many of the controls in the Properties
dialog box are used to specify how color should be printed on the page. Other controls allow
you to specify the trade-off between quality and speed. Still other tabs allow you to indicate
other ways in which the printer should be used.

To provide a contrast, take a look at Figure 7-7. It shows the Properties dialog box for an HP
LaserJet printer. Notice that the controls in this dialog box are completely different from those
in Figure 7-6. This is, again, because the capabilities of the two printers are completely
different.

Figure 7-7 The Properties dialog box for an HP LaserJet printer.

The controls in the Properties dialog box for the HP printer allow you to put multiple images on
a single sheet of paper and control other printer features.

Most of the time you won't need to fiddle with the settings in your printer's Properties dialog
box. Instead, you will typically use the default settings determined by Windows. You should
understand that the dialog box is available, however, as using it is the primary way you have
to take advantage of advanced printer features. The best way to find out what the controls do
in your printer's Properties dialog box is to experiment a bit. You won't hurt the printer, and
you may discover new and exciting ways to utilize the features inherent in the printer.
Chapter 7: Printing Your Table
(This is section 3 of 5 in this chapter)

Printing Your Layout


Access lets you print the layout of your tables or any other database object you might have
defined (such as queries, forms, or macros). You do this using a feature which Access calls the
Documenter. To print a layout report, choose the Analyze option from the Tools menu. Access
displays a submenu from which you should choose Documenter. Access then displays the
Documenter dialog box, as shown in Figure 7-8.

Figure 7-8 The Documenter dialog box.

If you had a particular object selected before you invoked the Documenter, the type of object
you selected controls which tab of the Documenter dialog box Access displays. You can specify
a different object type, however, by simply clicking your mouse on the appropriate tab. Access
then displays the defined objects that fit the category you selected.

Next, select the check box next to the object or objects for which you want a report printed.
For instance, if you wanted a layout report for the Business Customers table (Figure 7-8), then
you should make sure the check box to the left of the Business Customers object is selected.
Next, click your mouse on the Options button. Access displays the Print Table Definition dialog
box, shown in Figure 7-9.
Figure 7-9 The Print Table Definition dialog box.

The Print Table Definition dialog box lets you specify the parts of the table definition you want
Access to print. In the first section, you specify the table attributes you want Access to include
in the printout. The other two sections let you indicate the level of detail for both fields and
indexes. (Indexes are an advanced form of keys for tables. They are not used very often,
except for specialized databases. You create indexes when you are designing your table.)
Make your adjustments, if necessary, and then click your mouse on the OK button.

Note: If you choose to print the layout of different database objects (besides tables),
Access replaces the Print Table Definition dialog box with an appropriate dialog box for
the selected object type.

Now click your mouse on OK in the Documenter dialog box. Access examines your table (or
other database objects you selected) and produces a definition printout. After a short time,
Access displays the printout on your screen, as shown in Figure 7-10.
Figure 7-10 The Print Definition for a table.

Before printing the definition to the printer, Access gives you a chance to see it on the screen.
This viewing process is a print preview; it lets you make sure everything is OK before you
actually print a copy of the printout. Notice that Access greatly reduces the number of toolbar
tools at the top of the screen. There are only a few tools which you will typically use in this
display:

• Print. This tool displays the Print dialog box, with the ultimate goal of sending the report to the
printer.
• Zoom. There are actually two zoom tools. One looks like a magnifying glass; it alternates
between close-up and full-page views of the printout. The other is the percentage tool; it allows
you to indicate a specific percentage for zooming.
• Pages Per Screen. These are actually three tools, called One Page, Two Pages, and Multiple
Pages. These three tools allow you to specify how many pages are displayed on your screen at
the same time.
• Close Window. This tool cancels printing the report and returns you to the Database window.
In addition to the Zoom tool, you can also use your mouse to zoom in and out. Notice that
when you move it over the page, the mouse pointer appears as a magnifying glass. If you click
your mouse, Access alternately displays a close-up or full-page view. When you first saw the
report (as shown in Figure 7-10), it was in close-up view. If you want to view it as a full page,
simply click your mouse on the page with the mouse. Your screen will then appear as shown in
Figure 7-11.

Figure 7-11 Full-page view of the definition printout.

If you use the mouse pointer to click your mouse on the page again, you will see a close-up
view of the page, at the point where you clicked on the mouse pointer.

When you are ready to print the definition, click your mouse on the Print tool. Access, in turn,
prints the report to your default printer. If, instead of printing, you want to close the printout
display, simply click your mouse on the Close tool.

Chapter 7: Printing Your Table


(This is section 4 of 5 in this chapter)

Using Print Preview


In the previous section, you learned a bit about Access print preview capabilities. Print preview
lets you review your printout before you waste paper and time at the printer. Thus, it helps to
make you more productive.

You can choose the Print Preview option from the File menu at any time you desire. For
instance, if you choose it while you are in a Datasheet, you can see what your table will look
like when it is printed. An example of this is shown in Figure 7-12.

Figure 7-12 Print preview of a table.

Like the tools in the previous section, the Print Preview tools let you examine your output
before it goes to the printer.
Chapter 7: Printing Your Table
(This is section 5 of 5 in this chapter)

Summary
Access relies heavily on the Windows environment when it comes to printing. This chapter has
introduced you to the basics of printing within Access. The knowledge you have gained in this
chapter will serve you well as you work through later chapters on printing reports.

Before you move on to Chapter 8, make sure you understand the following key concepts:

• Access lets you use any printer you can use with Windows. Many of the printing options available
will depend on your printer type.
• To change the printer you are using, choose the Page Setup option on the File menu or click your
mouse on the Page Setup tool or the Setup button (if either of these are available). The options in
the Page Setup dialog box let you specify how you want your information printed.
• You can use the Page Setup dialog box to specify the type of paper to use, where it should come
from, how it should be oriented, and what margins to use.
• Access lets you easily print the contents of a table. To do so, select or display the table. Then,
choose the Print option from the File menu or click your mouse on the Print tool.
• You can easily print a report that describes a database object, such as a table. To do so, choose
Analyze from the Tools menu and Documenter from the resulting submenu.
• Print Preview is a feature that lets you see your output on the screen before you send it to the
printer.

In Chapter 8, you will learn how you can create simple structured reports with Access.

Chapter 8: Creating Simple Reports


(This is section 1 of 5 in this chapter)

In the previous chapter, you learned the basics of printing within Access. In this chapter you
will build upon that knowledge to create an actual report. In the simplest sense, a report is a
formatted output of your data. Using reports, you can select the fields you want Access to
print, as well as their formats.

By the time you finish this chapter, you will understand the following key concepts:

• What a report is
• Ways to create reports
• How to start the Report Wizards
• The types of reports you can create with the Report Wizards
• How to create a simple tabular report
• How to create mailing labels

What is a Report?
An Access report differs from a simple printout of a table's contents. When you create a report,
you also can add headers, footers, subtotals, and other special features that enhance the
appearance of your data on the printed page. Using a report, you have complete control over
how your information appears.

Many database programs include special report writers that are designed to make the process
of creating reports faster and easier. Access is no exception. Access includes a built-in report
writer that you can use to design your reports and customize them to your heart's content.

For those times when you have very simple report-writing requirements, you will appreciate
the inclusion of the Access Report Wizards. In this chapter, you will learn how to use the Report
Wizards. How to use the report writer (the report Design window) is covered fully in Chapter
14, "Creating Complex Reports."

In Access, reports are simply another part of your database. If you look at the Database
window, you will see there is a Reports button. Select this tab to display the reports stored with
your database. As with any other database object, you can copy, rename, and delete reports
very easily. Exactly how you perform these operations was covered in Chapter 3, "Taking a
Closer Look."

Chapter 8: Creating Simple Reports


(This is section 2 of 5 in this chapter)

Creating a Report
Note: This section uses the My Friends database you created in Chapters 2 and 3. If you
do not have that database available, you may want to use the Friends 1.mdb database
located on the CD-ROM. Copy the file to a directory on your hard drive and rename it My
Friends.mdb.

To start the Report Wizard, first make sure that the Reports tab is selected in the Database
window. Then, double-click your mouse on the Create Report By Using Wizard option. Access
displays the Report Wizard dialog box, as shown in Figure 8-1.
Figure 8-1 The Report Wizard dialog box.

At the left side of the Report Wizard dialog box, you can use the drop-down list to specify what
Access should use as the source for this new report. Remember that you can use either tables
or other queries as your data source. Since the My Friends database has only one table (the My
Friends table), Access has already selected it for you. If you were working with a database that
contained several other tables and queries, you could use the drop-down list to change what
the Wizard uses as a data source.

Choosing Information to Include


In the lower-left portion of the dialog box is a list of all the fields defined in the selected table
or query. If you change the data source in the pull-down list, then the available fields change,
as well. You can use the list, and the controls just to the right of the list, to indicate which fields
you want included in the report you are creating. Since this is a simple report, you might use
the fields in this order:

• Last Name
• First Name
• Address
• City
• State
• Zip Code
• Home Phone
• Work Phone
To tell Access you want to use a field in your report, click your mouse on a field name (in the
order shown here) and then click on the > button. Access will move the field from the left
column to the right. Repeat this process until you have selected and transferred all the fields
listed above. When you are done, click your mouse on the Next button. Access, in turn,
displays the dialog box shown in Figure 8-2.

Figure 8-2 Picking which fields to group by.

Grouping Information
Your next step is to determine if you want your information grouped in any particular order.
Grouping is routinely done in financial reports, although it is by no means limited to financial
reports. For instance, if you were creating a report that showed sales for a particular company,
you might want the information in the report grouped by month, by salesperson, or by
territory.

In creating a simple report based on the My Friends table, grouping is probably not necessary.
To show how it works, however, let's say you had a large number of friends in your database
and you wanted to group them by state. To do this, simply choose the State field at the left
side of the dialog box and click your mouse on the > button. The Report Wizard dialog box
changes to show how your grouping will now occur, as shown in Figure 8-3.
Figure 8-3 Grouping helps you organize the output in a report.

Notice that the State field is moved to the top of the sample report layout, and the Grouping
Options button becomes active. For some types of reports, you may want to change the
grouping options. Doing so allows you to specify how Access should analyze the field by which
you are grouping. In this case, changing the grouping options is not necessary.

To proceed to the next step, click your mouse on the Next button. Access displays the dialog
box shown in Figure 8-4.
Figure 8-4 Picking which fields to sort by.

Sorting Information for Your Report


Now you need to decide how you want the information in your report sorted. Access allows you
to specify up to four fields by which sorting can be done. In most instances you will use only
one or two fields. It makes sense that if you are creating a list of your friends, you would want
them in alphabetical order by name. Thus, you should choose the LastName and FirstName
fields.

Use the pull-down list for the first sort field to select the LastName field. If desired, you can
click your mouse on the order button to the right of the field to indicate whether Access should
sort the field in ascending order (the default) or descending order. Now use the pull-down list
for the second sort field to select the FirstName field.

When you are done picking the fields you want to sort by, you can click your mouse on the
Next button to proceed to the next step. Access displays the dialog box shown in Figure 8-5.
Figure 8-5 Determining a layout for your report.

Specifying Your Report Layout


Using the dialog box shown in Figure 8-5, you can indicate different options for laying out your
report. The option buttons in the dialog box control different layouts. The best way to find out
how you want your data to appear is to try the different buttons. Access changes the sample
report to indicate how your information will appear.

Note that the controls in this dialog box have nothing to do with content, only with how the
report presents the content you already selected. Besides picking a layout style, the dialog box
also lets you choose an orientation for the report (portrait or landscape). Since there are a
good number of fields to include in this report, you will probably want to use landscape
orientation.

You also use this dialog box to indicate whether Access should limit the size of each field in the
output. If the Adjust check box (bottom of the dialog box) is selected, Access may truncate
some of your data. If you clear the check box, the data is not truncated, but it may not all fit on
one line. For the purposes of this report, accept the default of allowing Access to adjust the
column width. (Remember that you can always change the report layout later.)

When you are done, click your mouse on the Next button to proceed to the next dialog box,
shown in Figure 8-6.
Figure 8-6 Picking a report style.

Here you have the opportunity to further define how you want your content to appear. Access
provides six different predefined styles that determine report elements such as fonts, colors,
lines, and the like. You can select each style, in turn, and see in the dialog box a
representation of how your report will appear. Pick the one that you like the most, then click
your mouse on Next. Access displays the final dialog box, shown in Figure 8-7.
Figure 8-7 Finishing up the report.

Wrapping Up Your Report


You are almost done defining your report. In this final dialog box, Access asks you for a title to
use for the report. This title is used in two places: at the top of each page in your printed
report, and when saving the actual report in your database. Notice that the Wizard provides
the same name as the table being used. In this case it is not a bad title, so you can leave it as
is.

You are now ready to click your mouse on the Finish button. When you do, Access uses print
preview to show you what your report will look like after it prints. This way you can see if you
need to make any changes to the report design. Figure 8-8 shows how the report should look.

Figure 8-8 The finished report.

All in all, the Report Wizard creates a handsome report. There are a few changes you could
make (such as narrower margins, changing the width of some fields), but overall the report is
not bad. In Chapter 14 you will learn how to use the report Design window so you can create
your own reports from scratch and make modifications to your existing reports (such as this
one).
When you are done reviewing the report, close the print preview window by either clicking
your mouse on the Close tool on the toolbar or on the Close icon (the X) in the upper-right
corner of the window. Access displays the Design window for the report you just completed.
(Again, the Design window is covered in Chapter 14.) You can close the design window by
clicking your mouse on the Close icon in the upper-right corner of the Design window. You
have now completed your first report in Access.

Chapter 8: Creating Simple Reports


(This is section 3 of 5 in this chapter)

Using Other Report Wizards


The Report Wizard you used so far in this chapter is not the only one provided by Access.
There are several others you can use, as well. You access these Wizards by choosing Report
from the Insert menu. Access then displays the New Report dialog box shown in Figure 8-9.

Figure 8-9 The New Report dialog box.

Notice that there is a place at the bottom of the New Report dialog box where you specify the
data source (table or query) to be used as the basis of your report. At the top of the dialog box
are six choices representing different actions you can take:

• Design View. Allows you to create a report using the report Design window. This is discussed in
more detail in Chapter 14.
• Report Wizard. Creates a report using the basic Report Wizard. This is the same Wizard you
access if you double-click your mouse on the Create Report By Using Wizard option in the Reports
area of the Database window. (You did this earlier in this chapter.)
• AutoReport: Columnar. Creates a report that lists each field in a record on a separate line. (This
type of report can consume large amounts of paper.)
• AutoReport: Tabular. Creates a report that resembles a spreadsheet--one record per line, with
fields progressing left to right across the page.
• Chart Wizard. Creates a report that includes a chart derived from data in your table or query.
• Label Wizard. Create several different types of mailing labels.

Most of these report choices actually uses a different Report Wizard. Your report choice answer
here will determine the questions that follow. Even though the end result is different, the
questions asked in arriving at that output are very similar. All you need to do is apply the skills
you have learned already in this chapter, and everything should be fine.

The one exception is when you want to create mailing labels. In the next section you learn how
to use the Label Wizard to create mailing labels based on the information in your database.

Chapter 8: Creating Simple Reports


(This is section 4 of 5 in this chapter)

Creating Mailing Labels


Note: This section uses the Customer database you created in Chapter 4, "Creating
Another Database," and built upon in Chapter 6, "Using Queries to Examine Your Data." If
you do not have that database available, you may want to use the Customer 2.mdb
database located on the CD-ROM. You should copy the file to a directory on your hard
drive and rename it Customer.mdb.

In the previous section you learned that you can use the Label Wizard to create mailing labels.
Mailing labels, of one form or another, are a common need in almost every business. Assuming
you have the Customer.mdb database loaded, you can start the process of easily creating
mailing labels by choosing Report from the Insert menu. This displays the New Report dialog
box, shown earlier in Figure 8-9.

Using the drop-down list at the bottom of the dialog box to select the Business Customers
table as your data source. When you have done this, highlight (select) the Label Wizard option
and click your mouse on the OK button. Shortly, Access displays the first step in the Label
Wizard, as shown in Figure 8-10.
Figure 8-10 Picking a label type.

The first step in creating your labels is to indicate the type of labels you want to use.
Fortunately, Access makes it very easy to specify a type of label. While there are many
different labels available on the market, the industry has become very standardized on several
different types of labels. The Label Wizard supports over 650 different labels from 13 different
manufacturers. Chances are good that you can find your specific label already predefined by
Access.

To pick a label type, use the three controls in the middle of the dialog box to filter which labels
are displayed. The three controls are as follows:

• Unit of Measure. You can select either English or Metric. Your choice dictates which labels are
displayed in the product list.
• Label Type. You can select either Sheet Feed or Continuous. (Sheet-feed labels are used with
printers that require you to manually feed each sheet of labels. Continuous labels are used when
the printer handles the feeding for you.) Again, your choice dictates which labels are displayed in
the product list.
• Filter by Manufacturer. Use this pull-down list to indicate who made your labels. Only labels
produced by that manufacturer will be listed in the product list.

If you are in the US, and you don't see your manufacturer listed, pick Avery. Most label
manufacturers have standardized on the same sizes supported by Avery. Some even quote
Avery label numbers somewhere on their packaging. (I purchased some Xerox labels the other
day, and the box included an Avery number that was equivalent to the Xerox labels.) Even if
you can't find an Avery label number, you can always refer to the Dimensions column on this
dialog box to figure out which label you want to use.

Note: If you cannot find the label you want, or an equivalent label, you can click your
mouse on the Customize button to indicate the specifications of the labels you are using.
In this example, you are creating standard mailing labels (1" × 4"), two across. This is Avery
label 5261. These labels let you print 6 lines per label and are designed for laser printers. Since
this is a standard label size, it is also produced by many other vendors. For the purposes of this
example, specify English measurements, Sheet Feed labels, and Avery as the manufacturer.
Then select the 5261 labels.

Choosing Fonts and Colors


Click your mouse on the Next button to signify you are done selecting a label type. You are
now ready to specify fonts and colors. As such, Access will display the dialog box shown in
Figure 8-11.

Figure 8-11 Picking fonts and colors.

The font and size the Wizard suggests is an 8-point Arial, using a light font weight. This is a
rather small point size, and you should probably increase it a bit, if you can. Whether changing
the font size works or not will depend on your printer and its capabilities. For the purposes of
this example, leave the point size unchanged, but change any other type specifications you
desire. For instance, you may want to change the Font Weight specification to Normal or Bold.
Unless you have a color printer, there is not much sense in changing the Text Color setting.

Picking Label Content


After you have specified which font to use, click your mouse on the Next button. Access
displays the dialog box shown in Figure 8-12.
Figure 8-12 Indicating label content.

The Label Wizard lets you specify how you want your label to appear. At the left side of the
dialog box you can choose different fields from your table. You can also enter free-form text
which will appear on every label. You will want to do this to insert spaces, commas, periods,
and the like.

Since you only have six lines to work with, you need to plan how you want your label to
appear. The Wizard will use two lines for space at the top and bottom of each label, which
leaves you only four lines to work with. You know that the company name and address will
take three lines. This means you have an additional line to play with. It might be helpful (to the
account) if you used the top line of the label to display the account number.

To create a label in this format, follow these steps:

1. In the Prototype label box, enter the text Your account number is. (Don't forget to add a
trailing space at the end of the text. This space will separate the text from the actual account
number.)
2. Select the Account Number field in the field list, and then click your mouse on the
> button. This moves the account number to the end of the first line in the label. You are now
done with the first line.
3. Press the ENTER key. This finishes the first line and moves to the second line of the label.
4. Click your mouse on the Company Name field in the field list, and then click your mouse on the >
button.
5. Press the ENTER key.
6. Click your mouse on the Address 1 field in the field list, and then click on the > button.
7. Press the ENTER key.
8. Click your mouse on the City field in the field list, and then click on the > button.
9. Type a comma followed by a space.
10. Click your mouse on the State field in the field list, and then click on the > button.
11. Type two spaces.
12. Click your mouse on the Zip Code field in the field list, and then click on the > button.

You are now done designing your label, and it should appear as shown in Figure 8-13. Take a
moment to look over your label to make sure it appears correct. If it does not, you can select
the line you want to change and press the DEL key to remove the line. You can then
reconstruct the line properly.

Figure 8-13 The finished label layout.

Sorting Your Labels


When you are satisfied with the label layout, click your mouse on the Next button. Access
displays the dialog box shown in Figure 8-14.
Figure 8-14 Selecting a sorting order.

Typically, you will want to sort mailing labels by ZIP Code, but you can use any field you desire.
In this example, we will do a two-level sort: first by ZIP Code, and then by company name. To
do this, select each of these fields, in turn, followed by the > button. Both fields should appear
on the right side of the dialog box.

Finishing Your Labels


You are now ready to finish your labels. Click your mouse on the Next button. Access displays
the dialog box shown in Figure 8-15.
Figure 8-15 Finishing your labels.

Because it is a good idea to see your mailing labels as they will look printed, there is nothing
you need to change in this dialog box. Click your mouse on the Finish button, and Access
displays a print preview of your mailing labels. Figure 8-16 shows what they should look like.
Figure 8-16 Previewing the mailing labels.

When you are done reviewing the report, close the print preview window.

Chapter 8: Creating Simple Reports


(This is section 5 of 5 in this chapter)

Summary
Access has some impressive report capabilities. In fact, about the only limit on what you can
do with reports is your imagination. In this chapter, you have learned how to create two simple
reports with the Report Wizards built into Access. Although these reports are simple in nature,
they are useful in everyday life. The process of developing these reports has taught you skills
you can use to develop other reports.

Before you move on to Chapter 9, make sure you understand the following key concepts:
• In Access, a report is much more than a simple printout. Reports give you complete control over
what Access prints and how it appears on the page.
• You can create reports using either the Report Wizards or the report Design window.
• You can start a Report Wizard either from the Reports section of the Database window or by
choosing Reports from the Insert menu.
• Report Wizards can be used to create many types of sample reports. These reports are simple in
nature, and not nearly as customized as what you can create by using the report Design window.
• Both simple reports and mailing labels are easy to create with the Report Wizards.
• The Label Wizard supports many types of standard labels from many manufacturers,
automatically formatting your information to fit on the labels.

If you want to know more about creating custom reports, refer to Chapter 14. In Chapter 9, you
will venture into the world of form design.

Chapter 9: Creating Custom Forms


(This is section 1 of 4 in this chapter)

Throughout this book, you have entered and edited information in your tables. In this lesson,
you will learn how to use Access forms for data input and editing. Forms let you go one giant
step beyond regular data entry. In short, forms provide custom interfaces that let you work
with data in the most natural way.

For example, if you are working with an employee database, you can create a form that
matches an employee record. Depending on your company, you may have several different
departments that use employee records. Using Access forms, you can create a custom
interface for each department. Each department's form, in turn, will present only those fields
that employees in that department need to use.

By the time you finish this chapter, you will understand the following key concepts:

• What Access forms are and their benefits


• Ways you create forms
• How you start and use the Forms Wizards
• How you create forms from scratch
• How you use the form design toolbox
• How you can use the Access color palette within your forms
• How to place objects on your form
• How properties apply to objects and forms
• How to save your form within your database

Understanding Forms
In Chapter 2, "Access in an Hour," you used the Datasheet to display the contents of a table.
(Datasheets can also be used to present the results of a query, as you learned in Chapter 6,
"Using Queries to Examine Your Data.") Using the Datasheet, you can enter and modify
information easily. Unfortunately, Datasheets are not particularly user friendly. For example, in
Chapter 4, "Creating Another Database," you developed a table to track your business
customers. That table contains information about when your customers opened their accounts,
what their credit limits are, and when they placed their last orders. It is not pertinent that
everyone have access to this information.

That is where forms come in. You can create forms that display part (or all) of your table. In
addition, a form can contain information designed to aid input, such as on-screen help,
buttons, or custom tools. There are many benefits to using forms. For example, the form
shown in Figure 9-1 is one you will create later in this chapter. Notice that the form is much
more attractive and useful (from a user's perspective) than the Datasheet.

Figure 9-1 A sample form.

To use a form for input, all you need to do is select the Forms button in the Database window.
If there are any forms available in your database, Access will list them. Select the form you
want to use and then click your mouse on the Open button. You close a form in the same way
you close any other window: you click your mouse on the Close icon in the upper-right corner
of the form window.

Since forms are database objects, you can manipulate them in the same way that you
manipulate other database objects such as tables, queries, and reports. This means you can
use Access menu options to do things like copy, rename, and delete forms.

Chapter 9: Creating Custom Forms


(This is section 2 of 4 in this chapter)

Creating a Form Using the Form Wizards


Note: This section uses the Customer database you have used in several chapters of this
book, most recently in Chapter 8, "Creating Simple Reports." If you do not have that
database available, you may want to use the Customer 3.mdb database located on the
CD-ROM. You should copy the file to a directory on your hard drive and rename it
Customer.mdb.

As with may other database objects, Access provides Form Wizards you can use to create your
forms. To see the full range of the Form Wizards available, choose the Form option from the
Insert menu. Access displays the New Form dialog box, shown in Figure 9-2.

Figure 9-2 The New Form dialog box.

This dialog box should look very familiar. You have used the same sort of dialog box to create
both queries and reports. Your first task is to use the pull-down list at the bottom of the dialog
box to select a table or query whose data you want to use for the form. You should select the
Business Customers table.

At the top of the dialog box are seven choices which define the different resources you can use
to create a new form. The choices are as follows:

• Design View. Allows you to create a report using the report Design window. This is discussed in
more detail later in this chapter.
• Form Wizard. Creates a form using the basic Form Wizard. This is the same Wizard you access if
you double-click your mouse on the Create Form By Using Wizard option in the Forms area of the
Database window.
• AutoForm: Columnar. The form displays all the fields in your table in a single column, with the
field's Caption property to the left of the field.
• AutoForm: Tabular. The form displays all the fields in your table horizontally, with each record
occupying a single row.
• AutoForm: Datasheet. The form looks very similar to the Datasheet view of the table or query.
• Chart Wizard. The form displays a graph based on your table data.
• PivotTable Wizard. Access creates a form that includes a PivotTable. These may be familiar to
users of Excel; they allow information to be viewed in a condensed form that is helpful for some
types of data analysis.
The only basic difference between these forms is the layout of the information within the form.
There is no intrinsic difference in what the forms do or how they do it. In the following sections,
you will learn how to use the Form Wizards to create several of these types of forms.

Creating a Basic Form


To create a basic form, make sure you select the Form Wizard option from the New Form
dialog box, and then click your mouse on the OK button. (You can also double-click your mouse
on the Create Form By Using Wizard option in the Forms section of the Database window.)
Access displays the Form Wizard dialog box, shown in Figure 9-3.

Figure 9-3 The Form Wizards dialog box.

Notice that the dialog box includes the Business Customers table as the data source for your
form. (Remember; you should have selected this in the New Form dialog box.) At the bottom
left side of the dialog box you can see the different fields available in the data source. All you
need to do is select which ones you want included in your form, and use the controls to the
right of the list to transfer them to the Selected Fields area.

For example, let's say you want to create a data input form that can be used when setting up a
new account. There are only a few fields that are necessary for this type of form. You should,
in turn, select each of the fields except Account Number (this is assigned automatically),
Account Opened (that is today), Credit Limit (you want that set by a different department),
Last Order (there are no orders yet), and Active (this should be set automatically).

Select the desired fields, and then click your mouse on the > button. The field names appear in
the right side of the dialog box. When you are done, the dialog box should appear as shown in
Figure 9-4.
Figure 9-4 After selecting a few fields.

When you are ready to proceed, click your mouse on the Next button. Access displays the
dialog box shown in Figure 9-5.

Figure 9-5 Selecting a layout.


Here you are presented with four different layouts from which you can choose. The Columnar,
Tabular, and Datasheet layouts are essentially the same as what you can create with the third,
fourth, and fifth options in the New Form dialog box (see Figure 9-2). As you select the option
button associated with each type of layout, notice that the preview of the form changes. This
gives you a general idea of how your form will appear. For this example, make sure the
Columnar option is selected. You can then click your mouse on the Next button. Access
displays the next step in the Wizard, as shown in Figure 9-6.

Figure 9-6 Selecting a form style.

Here you have the option of selecting from any of ten different form styles. As you select each
style, you can see what the effect is in the dialog box. The styles offer quite a bit of variety in
data presentation, which reflects the wide range of data that can be represented in Access.
Since this is business data we are working with (the Business Customers table), select the very
conservative Standard style. You can then click your mouse on the Next button. The Form
Wizard displays the final dialog box, as shown in Figure 9-7.
Figure 9-7 Finishing up your form.

That's basically all there is to creating your basic form. All you need to do now is provide a
form title. This title will appear at the top of the form itself, and it is used to save the form
definition in the database. Since the default form suggestion is acceptable, click your mouse
on the Finish button. The Wizard creates the form according to your specifications and then
displays it on the screen. Figure 9-8 shows what this form looks like.

Figure 9-8 Your completed form.


You will find an input form such as this much friendlier than a Datasheet. At the top of the
form, in the form's title bar, is the title you specified. At the bottom of the form is the control
area where you can navigate from record to record in the table. You can either review and edit
existing records, or you can go to the end of the file and add new records.

Note: Form Wizards don't always do the best job creating forms. For instance, notice in
Figure 9-8 that the phone number fields are too small, resulting in phone numbers that
are cut off. For this reason, many people use the Wizards to create a "starting point" for
forms. They can then fine tune them to meet their specific needs. Later in this chapter
you learn how to create a form from scratch. The same techniques are used to edit a
form you previously created and saved.

Creating an AutoForm Form


If you examine the New Form dialog box (Figure 9-2), you can see that Access allows you to
create three types of AutoForms: Columnar, Tabular, and Datasheet. AutoForms (regardless of
the version) are the simplest type of form you can create. The Wizard makes all the decisions
for you; all you need to do is specify a table or query to use as the source of data used in the
form.

As an example of how to use an AutoForm Wizard, display the New Form dialog box. Make sure
that Business Customers is selected as the data source (at the bottom of the dialog box). Then
select the AutoForm: Tabular option and click your mouse on the OK button. The Wizard, in
turn, creates a form that includes all your table fields in tabular format. You don't get the
opportunity to select any formats, styles, fields, or other items that may affect how the form
appears. Figure 9-9 shows an example of the form created by the AutoForm: Tabular Wizard.
Figure 9-9 A completed AutoForm.

When you are through working with the form, you can close it. Access asks you if you want to
save the form. If you click your mouse on Yes, you are given the opportunity to provide a name
for the form. Provide a name, such as AutoForm Example, and click your mouse on the OK
button. Access will save the form and update the Database window.

Chapter 9: Creating Custom Forms


(This is section 3 of 4 in this chapter)

Defining Your Own Forms


When the Wizard's forms don't meet your needs, you can use the form Design window to
create your own form or edit an existing form. While the form Design window gives you much
greater control over how your form works than the Wizards do, using the form Design window
is a much more involved process than using the Wizards.

Note: This section uses the My Friends.mdb database you have used in several chapters
of this book, most recently in Chapter 8, "Creating Simple Reports." If you do not have
that database available, you may want to use the Friends 2.mdb database located on the
CD-ROM. You should copy the file to a directory on your hard drive and rename it My
Friends.mdb.

To create your own form, click your mouse on the Forms button in the Database window. Then
double-click your mouse on the Create Form in Design View option. Access displays the form
Design window shown in Figure 9-10.

Figure 9-10 The form Design window.

There are several items you should notice in this window. First, notice the toolbar has some
new tools on it. You will learn the purpose of each tool later in this chapter. Second, notice the
form Design toolbox. You will use the toolbox to put together your form. As such, the toolbox is
described very shortly.

The main part of the Design window contains a grid. This grid becomes your form. The idea is
to design your form by placing objects on the grid. Objects can be fields or things such as
labels, buttons, controls, or other items. You will learn how to place objects on the form grid
later in this chapter. These objects have properties which specify how they appear and
behave.
Editing Existing Forms You can edit existing forms using the same techniques you
use to create new ones. Select the form name from the Database window, and then
click your mouse on the Design button. Many people use the Forms Wizards to create
a base form, and then use the Design window to change the form to meet their
needs.
Notice that the form grid is not very large; it is only two inches high by five inches wide. If you
want to increase the size of the grid (and thereby increase the size of the form you are
creating), move the mouse pointer over one of the outside grid borders. Next, hold down the
mouse button and drag the border to a new position. When you release the mouse button, the
grid remains enlarged.

Note: You can enlarge or reduce the size of the form grid at any time. You will need to
enlarge the grid to add new objects, and, before you reduce the size of the grid, you
must remove any objects that appear in the part of the grid you are eliminating.

Attaching a Data Source


If you are not editing an existing form, chances are good that the form you are creating does
not have a data source identified for it. The first task in creating a new form from scratch is to
identify a data source. Follow these steps:

1. Click your mouse on the Properties tool on the toolbar. As an alternative, you can choose
Properties from the View menu. Access displays the Properties dialog box for your form.
2. Make sure the Data tab is selected. Access displays the Properties dialog box as shown in Figure
9-11.

Figure 9-11 The Properties dialog box for the new form.

3. Examine the Record Source property. If there is something in the property, then you already have
a data source defined for your form. In that case, you can skip the next step.
4. Select the Record Source property and use the pull-down arrow at the right of the property to
select My Friends as the record source. (Remember; My Friends is the name of the table you
created in the My Friends database.)
5. Close the Properties dialog box by clicking your mouse on the Close button in the upper-right
corner of the dialog box.
Notice that the Record Source is a property for your form. Later in this chapter you learn more
about how to change properties for your form.

The Form Design Toolbox


Somewhere on your screen is the form Design toolbox. (In Figure 9-10, it is located at the right
side of the screen.) This toolbox contains objects which you can place in your form. These
objects are often called controls. You can alternately hide or display the toolbox by clicking
your mouse on the Toolbox tool on the toolbar or by choosing Toolbox from the View menu.
The toolbox contains the 20 tools detailed in Table 9-1.

Tool Description
Select Objects The arrow, used to select existing objects on the form.
When selected, Access uses Wizards to help you create controls
Control Wizards
on your form.
Label Places text on the form.
Obtains some sort of user input or displays an existing value,
Text Box
such as the contents of a field.
Groups toggle buttons, option buttons, and check boxes
Option Group together. Any of these objects within an option group is mutually
exclusive (only one can be selected in the group).
An on or off button. When it is selected, it is considered a True
Toggle Button
value.
Sometimes called a radio button. Appears as a circle; when
Option Button
selected, it is filled in.
Check Box Appears as a square; when selected, it has an × in it.
Combo Box A list box with a text box at the top of it.
A box containing a series of values from which the user can
List Box
choose.
Command Button Runs a macro or Access Basic module.
Image Inserts an image in the form.
Unbound Object Links and displays a picture, graphic, or other OLE object. The
Frame object is not stored within a table or query.
Bound Object Same as an object frame, except the object is stored in a table
Frame or query.
Page Break Splits a form into two screens.
Used to add tabs to a form, just like many dialog boxes contain
Tab Control
tabs.
Subform/Subrepor Adds another form or report to the existing form or report.
t Typically displays information in related tables.
Line Draws a straight line.
Rectangle Adds a rectangle or square.
More Controls Allows you to add additional controls the the Toolbox.
Table 9-1 Tools in the toolbox (from top to bottom and left to right).

Note: You can use your mouse to move the toolbox or change its size. Point to the title
bar of the toolbox and use the mouse to drag it to a new position. Point to the toolbox
border and use the mouse to drag it to a new size.
To place a control on your form, click your mouse on the tool that represents the control you
desire and use the mouse to indicate where you want the control on the form. For instance, if
you want to place a text box, first click your mouse on the Text Box tool. Then, use the mouse
pointer to indicate where you would like a corner of the box. When you click and hold the
mouse button, Access anchors the corner of the box. As you drag the mouse, the text box gets
larger. When the box is the size you desire, release the mouse button. The text box will remain
on the form. You can place any other control in the same manner.

Once you place an object on a form, you can move it or resize it by using your mouse. Every
object, when selected, is surrounded by handles. These are small squares that reside around
the perimeter of the control. You can use your mouse to drag these handles to new positions,
which resizes the object. If you simply point to the edge of the object and hold down the
mouse button, you can drag the entire object to a new position on the form. When you release
the mouse button, the object stays at the new position.

Note: You can tell when you can move an object because the mouse pointer changes to
a hand. On some objects, the hand appears when you pass over the edge of the object
(not where a handle is located). On other objects, the hand appears when the mouse
pointer is in the center of the object. Just move the mouse around until the hand
appears, and then you can use the mouse to drag the object to a new position.

Placing Objects on Your Form


Assume you want to create a form so you can review the records in the My Friends table one
at a time. Further, you want to give the form some "personality." You start this task by using
the form Design window in much the same manner as you would use a paint or drawing
program. You place an object, refine how it looks, and then place another object. You repeat
this process until you achieve the desired effect.

Your first task in creating your form is to adjust the size of the form grid to the size you think
you will need. You do this using the mouse, as described earlier. You can then change the
background color of the form as a whole. To assign the form's background color, select the
form (just click your mouse on the form grid) and then adjust the color using the Fill/Back Color
tool on the toolbar. (This tool looks like a small paint bucket.) Click your mouse on the down-
arrow to the right side of the tool, and Access displays a color palette. You can set any color
you desire, but it seems that light gray is typically in fashion these days. Click your mouse on
the color desired. If you pick a color other than the current color, notice that Access shades the
entire grid with that color.

Placing a Label Object


Next, you will probably want to have some sort of a title on your form. To assign a title, place a
Label object. In the toolbox, click your mouse on the Label tool (the one with the capital A in
it). Place the label box near the form's upper left corner and size it all the way across the form.
At this point, the Design window will look like what is shown in Figure 9-12.
Figure 9-12 After placing the Label box.

Access is now waiting for you to type the text that should appear in the label. Type the words
My Friends, and then press ENTER. The text should appear at the left side of the box and
handles will appear around the box. You can now set colors for the object. To make the box
itself seem to disappear, so all you see is the text, set the background color (using the Fill/Back
Color tool) and border color (using the Line/Border Color tool) either to the same color you
used for the background of the form or to Transparent. You can then set the text color using
the Font/Fore Color tool to something such as red.

Notice the toolbar at the top of the screen. When you have selected an object that contains
text, the text controls are active. You can set attributes such as text alignment, font, point
size, and so on. You should probably change the text attributes for this label so the text looks
more like a heading for your form. Figure 9-13 shows how the Design window appears after
changing to 14-point bold Tahoma, centered in the box.
Figure 9-13 The finished heading for the form.

Placing Fields on the Form


Now you are ready to place your fields on the grid. To begin, select the Field List option from
the View menu. This displays the field list for your data source (the My Friends table). Next,
use the mouse to select a field and drag it onto the form. For instance, click your mouse on the
FirstName field and then drag it onto the form grid. When you release the mouse button,
Access places two objects on the form: a Label and a Text Box. The Label contains the Caption
property for the field, and the Text Box contains the name of the field itself, as shown in Figure
9-14.
Figure 9-14 Placing a field on the form.

You can use the mouse to individually position the Label and Text Box objects on the screen.
(If you move the Label some and move the Text Box so it is separated only slightly from the
Label, you will find they look better.) Use the color and formatting controls on the toolbar to
adjust the objects so they blend nicely on the form. When you are done, the Label and Text
Box objects should appear similar to what you see in Figure 9-15.
Figure 9-15 Formatting controls.

It would be nice to change the caption in the Label object so it only says Name instead of First
Name. In this way, users can input an entire name to the right of the Label object. To do this,
select the Label object. As you move the mouse pointer over the Label text, notice that the
pointer changes to an insertion point. Click the mouse button, and you can change the text in
the Label object quite easily. When you press ENTER, Access makes your change.

Note: Whenever you change the text in a label, you may also want to change the size of
the label object or the text alignment. Make any adjustments you feel necessary to make
the objects look their best.

Now you are ready to place the field for the middle initial. You do this in the same manner that
you placed the field for the first name. Simply click your mouse on the field name (Middle
Initial) in the field list and drag the name onto the form grid. Position the mouse pointer so it is
just a little to the right of the Text Box used for the FirstName field. When you release the
mouse button, Access places the two objects on the form, as shown in Figure 9-16.
Figure 9-16 Placing a second field.

Notice that the Label object overlays the previous field you placed. Since you don't really need
the middle initial label anyway (since the previous label object, Name, is adequate for the
entire row), use the mouse to select it and then press the DEL key. The Label box disappears,
but the Text box remains. You can now position the Text box and change its attributes and size
so it looks good with the other objects.

You can now go through the same process to place the LastName field. The resulting Design
window is shown in Figure 9-17.
Figure 9-17 The first line of the form is complete.

That's basically all there is to placing fields on your form. You should go ahead and place the
rest of your fields, positioning them and changing their attributes so they look good. Use the
same techniques you learned in placing the first three fields. (Don't place the Christmas Card
field yet; it will be covered in the next section.) Figure 9-18 shows what the completed Design
window should look like (minus the Christmas Card field, of course).
Figure 9-18 A form that is almost completed.

Placing a Check Box


The final field you need to place is the Christmas Card field. You may remember from Chapter
2, "Access in an Hour," that this is a Yes/No field that indicates whether you should send a
Christmas card to an individual. Represent Yes/No fields with any of the following objects:

• Toggle Button
• Option Button
• Check Box

Any of these controls can indicate a Yes/No or On/Off condition--the only difference between
them is their appearance. Their effect on a user may be quite different, however. For instance,
a toggle button indicates if something is on or off, whereas the other two more accurately
represent yes or no. The actual object you use is up to you, but for this example, place a Check
Box object.

To place a check box for the Christmas Card field, click your mouse on the Check Box tool in
the toolbox. Then, drag the Christmas Card field from the Field List to your form. When you
release the mouse button, Access places two objects on the form: the Check Box object and a
Label object. This is shown in Figure 9-19.
Figure 9-19 Placing a check box.

Notice that, unlike when you placed the other fields, Access put the Label object on the right
side of the Check Box object (instead of on the left). Access uses the right side to keep with the
regular interface guidelines for Windows. Go ahead and position the form's objects and format
them so they look proper. You will also want to change the text in the Label object so it reflects
the purpose of the check box; you could change it to something like Send Christmas card?

Understanding Properties
By this point, you should already be familiar with the concept of properties. You already know
that Access uses properties to describe how an object appears or how Access is to treat it. You
know that fields possess properties, both in tables and queries. Objects you place on a form
can also have properties. The exact properties available depend on the object you have
selected.

In general, properties describe attributes of an object. For instance, the height, width, and
position of an object are all attributes. So are things like colors and font. As you worked
through the previous section, you set properties for various objects, although you may not
have been aware of it.

Changing Object Properties


You can view and change an object's attributes by either of these two methods:

• Double-click your mouse on the object.


• Select the object and click your mouse on the Properties tool on the toolbar.
When you do either of these things, Access displays the Properties dialog box for that object.
For example, Figure 9-20 shows the Properties dialog box for the first Label object you placed
in the form (the one used for the heading of the form).

Figure 9-20 The Properties dialog box.

In all, there are 38 properties for this one object. For some objects, there may be more
properties; for some, there may be less. The number is not particularly important, but it is
important to know how to change a property.

To change a property, first display the Properties dialog box. Next, use the mouse to select the
property category from the tabs in the dialog box. You can then use the mouse to select the
property you want to change. You can either type in a new value or (if it is available) use a
pull-down arrow or builder to select an appropriate value. When you change a property, the
effect is immediate.

Note: When changing some properties, it is easier not to use the Properties dialog box.
For instance, it is much easier to use the toolbar to change colors. If you can, use a
different method of changing properties whenever one is available.

Since there are so many different properties available, you may begin to wonder what a
particular property is used for. The easiest way to find out is to select the property and then
look at the Access status bar. There you will find information that provides quick help on what
the property does. If you need additional help, you can use the regular Access online Help
system. The Help system thoroughly describes the purpose and use of various properties.

As an example of how to change properties, select the Check Box object you placed on the
form at the end of the previous section. Notice that the properties in the Properties dialog box
change to reflect the new object you have selected. When you select the Other tab in the
dialog box, it should appear as shown in Figure 9-21.

Figure 9-21 The Properties dialog box.

A helpful property you can change is the Status Bar Text property. This is the property that
specifies what Access should display on the status bar when the Christmas Card control is
selected. All you need to do is choose the Status Bar Text property and start typing the text
you want displayed. For this example, type the text Should this person receive a
Christmas card? When you are done with the Properties dialog box, go ahead and close it.

Note: Many of the properties for form objects are the same as properties for other
Access items, such as fields. You may want to refer to Chapter 3, "Taking a Closer Look,"
for more information about some properties.

Changing Form Properties


Your form (the entire thing) also has properties. You can view these properties by selecting the
form. To select a form, click your mouse on the small gray block just to the left of the
horizontal ruler at the top of the form Detail window. If the Properties dialog box is open, you
will see the properties for the entire form. There are 81 properties applicable to forms, and
Access sets many of them automatically when you edit your form. You changed one of the
form properties earlier in the chapter when you changed the Record Source property for the
form.

Many properties are useful only for advanced programming. However, you can use some of
them immediately. For example, you may want to change the wording that appears in the title
bar for your form. By default, the title bar will display the word "Form" followed by a colon and
the name of the form. However, since you are working with the table that contains all your
friends, you might want the title bar to display your name.

To make this change, simply modify the Caption property for the form. Whatever you put in
the Caption property will appear in the form's title bar. When I changed the Caption property to
my name, Access changed the title bar of the form, as shown in Figure 9-22.
Figure 9-22 Properties control many appearance items.

Note: Access does not change the title bar until you actually open the form. If you are
using the Design window, the form uses the default title bar.

Saving Your Form


When you are done creating or changing a form, you need to save it. Access automatically
gives you the chance to do this when you close the form Design window. If you have made
changes to the form (or if you are designing the form for the first time), Access will ask if you
want to save your changes. The effect of clicking your mouse on the Yes button varies,
depending on whether you are editing or creating a form. If you are editing, Access saves your
changes under the same form name as you used previously. If you are creating a form, Access
will ask you to provide a form name, as shown in Figure 9-23.

Figure 9-23 You can specify a name for your form.

In this instance, Access suggests a name based on the caption I supplied for the form. (You
remember; this was set when changing the form properties.) This name can be changed in any
way desired. You should use a name that represents the purpose of the form. In this case I
changed the form name to Reviewing Friends. When you press ENTER, Access saves the
form and returns you to the Database window.

Note: Access saves forms with your database in the same way that it saves other
database objects. Forms are an integral part of the database; they are not saved in a
separate file. You can see what forms are available with a database by clicking your
mouse on the Form button in the Database window.

Chapter 9: Creating Custom Forms


(This is section 4 of 4 in this chapter)

Summary
Forms provide a convenient and attractive way to both present information and solicit input
from the user. If you are developing an application using Access, it is not unusual to have
several different forms, each with a different purpose. Through effectively using forms, you
increase the usability of your database tremendously.

This chapter has taught you how to develop your own forms. Before you move on to Chapter
10, make sure you understand the following key concepts:

• Forms are a tool you can use to change or add information in a table or query. From a user's
perspective, forms are much more usable than the Datasheet.
• You can create forms using the Form Wizards, or you can create them from scratch.
• You can create only a limited number of forms with the Form Wizards. You greatly increase your
options if you create your forms from scratch.
• You use the form design toolbox to select objects that can be placed in your form.
• As with most other objects in Access, you can set properties for objects in your forms. These
properties define the attributes which control the object.

In Chapter 10, you will learn how to use some of the additional tools provided with Access to
make your data more valid.

Chapter 10: Using Additional Tools


(This is section 1 of 5 in this chapter)

In many ways, Access is more than just a plain database manager. One of the biggest
evidences of this is the additional tools that Microsoft chose to include with Access. These tools
are not necessarily related to making your data easier to use, but to making it easier to create.
Thus, the tools can be viewed as helping you improve the validity of your data by making it
more correct than it would be without the use of the tools.

By the time you finish this chapter, you will understand the following key concepts:

• How to use Access' built-in spell checker


• How the AutoCorrect feature can make inputting data faster
• Why analyzing a table may result in more efficient databases
• How to use the Performance Analyzer tool

Using the Spell Checker


Although Access can be viewed as an individual program, in reality it is part of the Office 2000
suite of products. As such, it shares several tools in common with other Office products. One of
these tools is the spell checker, which allows you to check the spelling of words in your
database.

The spell-checking program used in Microsoft Office (and therefore in Access) does not just
allow you to check the spelling in a table. You can, in addition, check the spelling of any
database object that is ultimately based on a table. Thus, you can check the spelling of a table,
query, view, or form.

The next couple of sections describe how to utilize this tool.

Spell Checking Your Data


Before you can check the spelling of your data, you must first select the database
object that you want to spell check. For instance, if you want to check the spelling of data in a
particular table, you must first select the table. You can select the object at the Database
window, or you can open the object before starting the spell checker.

If you want to only spell check a particular portion of your data, you can also select the rows or
columns before initiating the spell checker. This, obviously, is best done when viewing the
Datasheet for a table or query.

Once you have selected what you want checked, there are three ways you can start to use the
spell checker. Any of the following will do the trick:

• Choose Spelling from the Tools menu.


• Click your mouse on the Spelling tool on the toolbar.
• Press F7.

Regardless of the method you choose, Access begins to compare the text of the data in your
database object to its built-in list of words. If Access finds an error, it highlights the word in the
Datasheet or form, displays the Spelling dialog box, and waits for your response. Figure 10-1
shows an example of what you would see if you started to spell check the My Friends table
developed in earlier chapters of this book.
Figure 10-1 Access includes a full-featured spell checker.

The Spelling dialog box shows you the word Access suspects as being incorrect, along with any
suggestions for changing. The buttons in the dialog box provide several different ways for you
to proceed:

• Ignore Field. Use this button to cause Access to continue the spell check, but ignore any data in
the noted field.
• Ignore. Use this button to ignore the suggested change. Access moves on to the next incorrectly
spelled word.
• Ignore All. Use this button to ignore the suggested change. Access moves on to the next
incorrectly spelled word, but ignores any other occurrences of the highlighted word.
• Change. Use this button if you want to change the highlighted word to the selected suggestion
(the one in the Change To box). Access makes the change and moves on to the next incorrectly
spelled word.
• Change All. Use this button if you want to change all occurrences of the highlighted word to the
selected suggestion (the one in the Change To box). Access makes the change (and any
additional identical changes) and moves on to the next incorrectly spelled word.
• Add. Use this button to add the highlighted word to the dictionary. This option is discussed in
greater detail in the next section.
• Suggest. Use this button to cause Access to suggest additional words that could be used to
correct the misspelled word.

Most often you will select one of the proffered suggestions and then click your mouse on
Change, or you will simply click your mouse on the Ignore button. The Ignore All button is
another commonly used button; it is great for commonly recurring names, which are easily
flagged as being misspelled. After clicking your mouse on a button, Access continues on its
quest for misspelled words. If any other problems are found, you are given the same
opportunity to make changes.

Adding Custom Words


Chances are good that your individual use of Access will be somewhat different than the way
in which other people use the program. This is nowhere more evident than in the use of the
spell checker. You may use words in your data that are unique to your work or circle of friends.
Fortunately, Access provides a way you can easily build your own dictionary of custom words.

Take a look back at the Spelling dialog box in Figure 10-1. Notice that there is an Add button in
the dialog box. If you click your mouse on this button when Access is suggesting a spelling
correction, the word that Access thought was incorrect is added to your custom dictionary. You
will not be asked again if the word is incorrect.

It is a good idea to add words to the custom dictionary as necessary. In this way you can force
Access to match your spelling needs without requiring you to always ignore errors that Access
thinks it has found.

Note: Any words you add to your custom dictionary are automatically remembered and
used by other Office 2000 applications. Thus, any words you add to the custom
dictionary in Access will also be available in Word, and vice versa.

Chapter 10: Using Additional Tools


(This is section 2 of 5 in this chapter)

Using AutoCorrect
If you are a user of Word, Microsoft's popular word processor, you may already be familiar with
the AutoCorrect feature. This handy tool has been adapted to Access to help you become more
productive in your data entry.

The purpose of AutoCorrect is to automatically change things you type, as you type them. This
may sound strange, but it can really be a benefit. For instance, if you know you always
misspell a certain word, you can force Access to recognize that word and replace it with the
proper one. Similarly, you can define short codes that can be automatically replaced with long
words or phrases.

It is this last use of AutoCorrect that is perhaps the most powerful when entering data. For
instance, let's say you work for Amalgamated Widgets Worldwide, and you have to enter that
name frequently in your data. You could define an AutoCorrect entry that every time you typed
aww, it was automatically replaced with Amalgamated Widgets Worldwide.

Adding Entries
To add information to AutoCorrect, choose the AutoCorrect option from the Tools menu. Access
displays the AutoCorrect dialog box, as shown in Figure 10-2.

Figure 10-2 The AutoCorrect dialog box controls all the features of this popular tool.

At the top of the dialog box you can control some of the automatic changes which AutoCorrect
can make for you; these are pretty much self-explanatory. Near the bottom of the dialog box is
a list of AutoCorrect entries. Each entry is made up of two parts; the part on the left is what
you would type as you are entering data in a Datasheet or form, and the part on the right is
what Access automatically uses instead of what you typed.

For instance, in Figure 10-2 you can see an entry which has two words: abbout and about. If
you were to type "abbout" in your text, Access would automatically recognize it and replace it
with "about." If you scroll through the list you can see an extensive number of changes which
Access is already configured to make.

To add your own custom AutoText entries, you do it using the Replace and With boxes. All you
need to do is type in the Replace box what you want Access to recognize and in the With box
what you want it replaced with. Continuing the example started in the last section, you would
place "aww" in the Replace box and "Amalgamated Widgets Worldwide" in the With box. When
you click your mouse on the Add button, Access adds the entry to the AutoCorrect list it uses.
Removing Entries
Just as you can add entries to the AutoCorrect list, you can also delete them. To do this, simply
select the entry in the AutoCorrect dialog box (Figure 10-2), and then click your mouse on the
Delete button. Access removes the entry from the list and no more automatic changes are
made using it.

You should note that Access does not ask you to verify your deletion; it just does it. The
deleted information remains in the Replace and With fields right after the deletion, however.
This means that if you discover you deleted something you didn't want to delete, you can
immediately click your mouse on the Add button to put the entry right back in the AutoCorrect
list.

Chapter 10: Using Additional Tools


(This is section 3 of 5 in this chapter)

Analyzing a Table
Access includes a very powerful tool that you can use to analyze the data in one of your tables.
The purpose of the analysis is to determine if there is a less redundant way to store the data in
the table. "Less redundant" means that Access tries to remove any data that is stored in the
table more than once. For instance, it may discover that a "company name" field should be
pulled out of the original table and placed in a new table. Even though the result would be two
tables (the original and a new table), the database would be more efficient since Information
would not be duplicated in the original table.

An example is perhaps the best way to demonstrate the analysis process. The example in this
section is based on the database Accounts.mdb, which is supplied on the companion CD. The
database contains a single table, named Invoices, that has a bit over 1,000 invoices in it. A
minimal number of fields are maintained in the table, but there is quite a bit of redundancy in
the data.

Starting the Analysis


With the Accounts database loaded, click your mouse on the Tables button in the database
window. Click your mouse on the Invoices table to select it. Then choose the Analyze option
from the Tools menu. Access displays a submenu from which you should choose Table. Shortly
Access displays the Table Analyzer Wizard, as shown in Figure 10-3.
Figure 10-3 The Table Analyzer Wizard dialog box.

The first couple of screens in the Wizard are explanation of the purpose of the Table Analyzer
Wizard. You can read through the information, if desired, clicking your mouse on the Next
button whenever you are ready to proceed. Eventually (on the third dialog box) you come to
the actual start of the action. This dialog box is shown in Figure 10-4.
Figure 10-4 Selecting a table to analyze.

In many databases there may be more than a single table. Fortunately, this one only contains
a single table named Invoices. Since this is the default table selected, click your mouse on the
Next button. Access displays the dialog box shown in Figure 10-5.
Figure 10-5 Letting Access do the work.

In this step you need to decide whether you want to let the Wizard decide which table fields
should be moved, or you want to do it manually. Since the job of a Wizard is to make your life
easier, go ahead and let the Wizard do the deciding. Even if the Wizard makes a bad choice or
two, you can countermand the decision at the next step in the Wizard.

Confirming Table Splitting


When you are ready to proceed, click your mouse on the Next button. Access displays the
dialog box shown in Figure 10-6.
Figure 10-6 Verifying the table splitting.

Note: The Table Analyzer Wizard sets up relationships between tables. You will learn
more about how relationships work in Chapter 13, "Understanding Data Relationships."

At this point, the Wizard is showing you what it is proposing to do. In the case of the original
Invoices table, the Wizard is proposing splitting it into three tables. Looking at the fields it
suggests moving to each table, it is easy to see that one will contain invoice transactions,
another customers, and the third products. Using this dialog box, you have the opportunity to
name each of the tables.

To see how this works, make sure Table1 is selected (it is in Figure 10-6). Then click your
mouse on the Rename button, as indicated near the upper-right corner of the dialog box.
Access displays a small dialog box that allows you to specify a new name for the table. In the
case of Table1, the name should be Invoice Transactions. Enter this, then click your mouse
on the OK button. Access updates the name shown in the title bar for the table to your new
name.

You should repeat this same general process to name both Table2 and Table3 to Customers
and Products, respectively. Click your mouse on the title bar for each table, and then rename
it. When you are done, the tables should appear as shown in Figure 10-7.
Figure 10-7 The tables have been renamed.

The other thing you can do in this dialog box (besides naming the tables) is to override how
the Wizard has split the tables. When doing an analysis like this on your own tables, you will
want to make sure that each proposed table contains the relevant fields from the original
table. In the case of this example, the Wizard did a very good job of making the decisions. For
instance, it figured out that what we have named the Customers table should contain a unique
customer ID, as well as the customer name and discount.

If you needed to override the Wizard's splitting decisions, all you need to do is click your
mouse on a field name and drag it from one table to another. No such dragging is necessary in
this example, however.

Confirming Primary Key Selections


When you click the mouse on the Next button, Access displays the next step of the Wizard, as
shown in Figure 10-8.
Figure 10-8 Setting primary keys.

This dialog box looks remarkably similar to the one used in the previous section. The
difference, however, is in the control buttons at the top of the dialog box. The Wizard is asking
you to confirm that each table has a primary key defined. The primary keys for the Customers
and Products table are fine; they were created by the Wizard. However, the Wizard has
somehow forgotten that the ID field should be a primary key in the Invoice Transactions table.

To specify the ID field as a primary key, first click your mouse on the field name. Then click the
mouse on the tool that has the key on it. Access responds by placing a small key to the left of
the ID field in the Invoice Transactions table.

Correcting Typographical Errors


When you click your mouse on the Next key, the Wizard analyzes the data in the proposed
tables and displays what it may believe are typographical errors. Access does this for each
new table being created by the Wizard. Since two new tables (Customers and Products) are
being created by the Wizard in this example, this means Access displays two typographical
correction dialog boxes. The first of these is shown in Figure 10-9.
Figure 10-9 Correcting typos in the Customers table.

Here the Wizard has displayed five customer names it believes may be mistyped. It figures this
out using an internal algorithm. If the spelling of the data is close enough to other data in the
table, then it is flagged as a potential error. All you need to do is use the pull-down list in the
Correction column to select either a correct spelling or the (Leave As Is) setting.

Note: If you are analyzing a large table that has been worked on by many people over a
long time period, it is very possible you will have many misspellings in the file. Make sure
you take the time to go through the necessary corrections in this step; it is easier than
tracking down mistakes later.

In the case of this example Customers table, there are no misspellings. You should change the
Corrections column for all five records so the (Leave As Is) setting is selected. When you have
done this, click your mouse on the Next button. The Wizard then displays the potential
corrections for the Products table, as shown in Figure 10-10.
Figure 10-10 Correcting typos in the Customers table.

It just so happens that there is only one record identified as a possible error in this step. In
your own tables, of course, there may be more. You go through the correction process exactly
as you did for the Customers table. In this case, you select the (Leave As Is) option for the
single record shown.

Finishing the Analysis


When you click your mouse on the Next button, the Wizard displays its final step, as shown in
Figure 10-11.
Figure 10-11 The final analysis step.

The final step of the Table Analysis Wizard is where you specify if you want to create a query
that looks like your original table. In this case, it means that the Wizard would create a query
that is an amalgamation of the three tables, combined to look like the original Invoices table.

Whether you create a query is up to you. In this instance, it doesn't hurt, so you can click your
mouse on Finish to complete the analysis process. Shortly Access displays the new query on
screen, as shown in Figure 10-12.
Figure 10-12 The new query created by the Table Analysis Wizard.

Notice that there are some odd-looking fields in the new query. In this case, the Lookup to
Customers field and the Lookup to Products field seems a little odd. In reality, these are
nothing but the links that the Wizard established between the Invoice Transactions table and
the other tables. You can easily turn these off by editing the query (as described in Chapter 6,
"Using Queries to Examine Your Data") to not display the field.

Chapter 10: Using Additional Tools


(This is section 4 of 5 in this chapter)

Improving Database Performance


As you get to know more about databases in general, and Access in particular, you may come
across ideas that can be used to improve the performance of objects in your database. For
instance, you may discover new ways of examining or processing your data to get the desired
results.

In recognition of the fact that most databases can be "tweaked" to be better in some ways,
Access includes a performance analyzer that you can use to provide helpful hints. To see how
the performance analyzer works, load the Customer database used earlier in this book. Then
choose the Analyze option from the Tools menu. From the resulting submenu, choose the
Performance option. Access displays the Performance Analyzer dialog box, as shown in Figure
10-13.

Figure 10-13 The Performance Analyzer dialog box.

The Performance Analyzer allows you to examine virtually any object in your database. You
can use the tabs in the dialog box to display the different objects available. To see how the
Performance Analyzer works, select the Business Customers object by clicking your mouse on
the check box to the left of the object name. You should then click your mouse on the OK
button.

Shortly, the Performance Analyzer displays the results of its analysis, as shown in Figure 10-14.
The analysis can contain three different types of results: Recommendations, Suggestions, and
Ideas. This particular results screen shows only Ideas.
Figure 10-14 The Performance Analyzer results screen.

You can see the reasoning behind a specific Recommendation, Suggestion, or Idea by selecting
that particular item on the results screen. The information at the bottom of the screen
indicates the considerations in making the change, as well as how you go about the change. If
the result is either a Recommendation or a Suggestion, you can select the result and click your
mouse on the Optimize button to make the change. For Ideas, the Optimize button is not
available. Instead, you must simply follow the instructions at the bottom of the screen.

When you are through making your changes based on the Performance Analyzer results, click
your mouse on the Close button to return to working with Access.

Chapter 10: Using Additional Tools


(This is section 5 of 5 in this chapter)

Summary
Access includes many tools which you can use to augment your database management tasks.
These tools run the gamut, making it easier to both input information, maintain it, and work
with tables as a whole. In this chapter you have learned how to use a number of those tools.
While understanding how to use them is not critical to managing databases, doing so can
make Access more valuable to you in the long run.

Before you move on to Chapter 11, make sure you understand the following key concepts:
• Access includes a spell checker that you can use to review and correct the spelling of words in
your data.
• The spell-checking tool is shared with other Microsoft Office applications.
• You can add words to the dictionaries maintained by the spell checker. Those words are then
available not only to Access, but also to other Office programs.
• The AutoCorrect tool allows you to specify words which should be replaced with other text as the
words are typed.
• AutoCorrect can help you improve the quality of what you type, as well as make the entry of long
words or phrases easier and faster.
• The table analysis tool looks at the data in a table and suggests different ways for that data to be
organized. It can perform the reorganization, based on your approval.
• The Performance Analyzer tool examines your tables and other database objects to provide
Recommendations, Suggestions, and Ideas on how those objects can be improved.

In Chapter 11, you will learn how you can use the information in your tables and queries with
Word for Windows.

Chapter 11: Using Your Data with


Word and Excel
(This is section 1 of 4 in this chapter)

Access is designed to work well with other Microsoft Office programs. You
can use Access with these programs to perform very powerful operations with your data. For
example, you can use information in your Access tables with documents you have created in
Word. Specifically, you can use Access and Word to create a mail merge that places the values
stored in an Access table into appropriate locations within a Word form letter. In this way, you
can quickly create a custom letter for each of your accounts.

In this chapter, you will focus on how you can make these two programs--Access and Word--
function together well. By the time you finish this chapter, you will understand the following
key concepts:

• Why you would want to use Access with Word and Excel
• How to use the Microsoft Word Mail Merge Wizard
• How to insert merge fields into a Word document
• How to merge Access data with the Word document
• How to output the contents of an entire table or query to Excel
• How to output a portion of a table or query to Excel
• How to establish an active link between Excel and Access
• What relationship there is between information that has been transferred and your original Access
information

Why Use Other Programs with Access?


Access is great at managing your data. You can use it to maintain just about any information
you may want. It is not, however, a word processor or a spreadsheet program. Recognizing
that fact, Microsoft made sure that you could use your Access data with both Word and Excel,
both of which are members of the Microsoft Office family of products (Access is also part of
that family).

Why would you want to use data from Access with Word or Excel? Primarily because "that's
where the information is." In other words, if you are already using Access to maintain raw
information, there should not be a need to duplicate that information in Word or Excel. Instead,
you should be able to transfer the information you need when you need it.

Now that you understand why it is preferable to use your Access information in other
programs, at times, you are ready to turn your attention to how this is done. The rest of this
chapter focuses on how you get your information from Access into both Word and Excel.

Note: It is not the purpose of this book to give detailed information on how to use any
program besides Access. It is assumed that you have at least some familiarity with the
other programs discussed in this chapter. If you need help, you might refer to a book that
is geared specifically to teaching you how to use Word or Excel.

Chapter 11: Using Your Data with


Word and Excel
(This is section 2 of 4 in this chapter)

Sharing Data with Word


The primary reason to have Access and Word work together is to create mail-merge
documents. These are documents into which you merge information when the document is
printed. For example, you can merge names, address, account balances, or any other
information you can think of. Possible uses for mail-merge documents include the following:

• Form letters
• Mailing labels
• Catalogs
• Order forms

Actually, the list of the merged documents you can create is limited only by your imagination!
Regardless of your eventual use of the mail-merge document, the steps you go through are all
the same.

The Scenario
The scenario is this: You have recently moved, and you want to send letters to all your friends
to make sure they have your new address. You have the names and addresses of your friends
in the My Friends table you created earlier in this book. Using Access and Word together, you
can quickly and easily create the letter and get it ready to mail.
In preparation, you prepare an upbeat note in Word (see Figure 11-1). Your letter is formatted
just the way you want it, and you have left room to later insert your friends' names and
addresses. You save this document on your hard drive as Moved.doc.

Figure 11-1 The letter you want to send to all your friends.
Note: The file Moved.doc is included on the companion CD-ROM. You should copy it to
one of your Word document directories before proceeding.

Using the Word Mail Merge Wizard


The first step is to use the Word Mail Merge Wizard, which is provided with Access. This Wizard
helps you transfer information into a format you can use with Word. To start the Wizard, follow
these steps:

1. Open the Friends.mdb database you created earlier in this book.


2. If you want to use information from a table, click your mouse on the Tables button in the
Database window. If you want to use information from a query, click your mouse on the Queries
button in the Database window.
3. Select the name of the table or query you want to use.
4. Choose the Office Links option from the Tools menu, and then choose Merge It with MS Word from
the resulting submenu.

Access, in turn, starts the Microsoft Word Mail Merge Wizard, displaying the dialog box shown
in Figure 11-2.

Figure 11-2 The Microsoft Word Mail Merge Wizard.

This is the only step you need to perform in Access. All you need to do is choose whether you
are using an existing document or a new one. Since you have already created the file in Word,
select the first option and then click your mouse on the OK button.

Loading the Word Document


Access will now display the dialog box shown in Figure 11-3, asking you for the name of the
Word document you are going to merge with the Access data. This is a standard Open dialog
box, with which you should be well acquainted. Use the controls in the dialog box to select the
file Moved.doc, and then click your mouse on the Open button.
Figure 11-3 The Select Microsoft Word Document dialog box.

The Access Mail Merge Wizard causes Word to run and load the document Moved.doc. Once
Word is running, you should notice the Word task on your taskbar, even if you cannot see the
Word program window on your screen. To display your document, switch to Word by clicking
your mouse on the Word task on the taskbar. You may then need to maximize the Word
program window so you can fully see the document on which you are working.

By this point, the link between your Access data and the Word document is complete. You still
need to specify where you want your Access data printed, however. The vehicle for doing this
is the Mail Merge toolbar near the top of the Word program window, just above the document.
Figure 11-4 shows what your screen should look like.
Figure 11-4 After Moved.doc is loaded.

Inserting Merge Fields


Now you need to let Word know what information you want used from the My Friends table. To
indicate which Access fields you want Word to insert in the document, follow these steps:

1. Position the cursor at the beginning of the first line after the date.
2. Click your mouse on the Insert Merge Field button. You will see a list of fields in the My Friends
table, as shown in Figure 11-5. Notice that if there were originally spaces in a field name, Access
has replaced the spaces with an underscore. The underscore is required by Word. Access knows
this and takes care of the conversion automatically.
Figure 11-5 Selecting fields to insert.

Field Name Conversion


Word may not understand all the field names you have defined in Access. This is because
Word is much more strict on what field names it can accept. To compensate for this, the
Microsoft Word Mail Merge Wizard converts field names automatically. The following rules
are followed:
1. Field names longer than 20 characters are truncated (cut off).
2. If a field name contains any characters other than letters, numbers, and underscores,
these characters are converted to underscores.
There are no changes to the original field names stored in Access. The change affects
only the communication between Access and Word.

1. Select the FirstName field. Word inserts the field in the document.
2. Press the SPACE BAR. This space will separate the first name and last name.
3. Click your mouse on the Insert Merge Field button and select the LastName field. Word inserts the
field in the document.
4. Advance to the next line in the document.
5. Click your mouse on the Insert Merge Field button and select the Address field. Word inserts the
field in the document.
6. Advance to the next line in the document.
7. Click your mouse on the Insert Merge Field button and select the City field. Word inserts the field
in the document.
8. Type a comma and a space. These will separate the city and the state.
9. Click your mouse on the Insert Merge Field button and select the State field. Word inserts the field
in the document.
10. Press the space bar twice. These two spaces will separate the state and the ZIP Code.
11. Click your mouse on the Insert Merge Field button and select the Zip_Code field. Word inserts the
field in the document.
12. Position the insertion point on the next line, after the word Dear but right before the comma.
13. Click your mouse on the Insert Merge Field button and select the FirstName field. Word inserts the
field in the document.

You are now done putting your merge document together. Figure 11-6 shows how your screen
should look.

Figure 11-6 The finished merge document.


Merging the Document and the Data
At this point, you have several options:

• You can save the document and print it later.


• You can create a brand new document that is the result of the merge document and the data
being joined together.
• You can print the merged documents directly to the printer.

For right now let's choose the second option. To do this, click your mouse on the Merge To New
Document tool (this is the fifth tool from the right on the Mail Merge toolbar). Word creates a
brand new document, with each page an exact copy of your one-page letter. The only
difference is that each page is addressed to a different person. Your mail-merge operation has
been a success!

What About Updates?


The Microsoft Word Mail Merge Wizard creates a dynamic link between your Access data and
the Word document. This link means that any time you modify the data in the Access table,
the updates are automatically available in your Word document. All you need to do is merge
the information again from within Word. This is done in the following manner:

1. Start Word.
2. Open the Moved.doc document.
3. Click your mouse on one of the merge buttons on the Mail Merge toolbar.

That's all there is to it! If, for some reason, you need to update the Access data while you are
using Word, you can click your mouse on the Edit Data Source tool on the Mail Merge toolbar.
This opens the Access program window and displays the Datasheet for the table (My Friends).
Again, any changes you make are immediately available to Word.

Chapter 11: Using Your Data with


Word and Excel
(This is section 3 of 4 in this chapter)

Sharing Data with Excel


When it comes to analytical capabilities, Access is somewhat lacking. If you really want to
analyze numerical data in your database or create a top-notch chart, you need to use a
spreadsheet program. This is where Excel comes in handy. Excel lets you analyze your data in
ways it is impossible to do in Access. Recognizing that fact, Microsoft made sure you can easily
use your Access data with Excel.

The following sections detail how you can use your Access data in an Excel workbook.

Transferring Data to Excel


Access makes it very easy to transfer an entire table to Excel. To do this, open a database
such as Customer.mdb, which you created earlier in the book. To then export a file to Excel,
follow these steps:

1. Display the Database window.


2. If you want to use information from a table, click on the Tables button. If you want to use
information from a query, click on the Queries button.
3. Select the name of the table or query you want to use.
4. Choose the Office Links option from the Tools menu, and then choose Analyze It with MS Excel
from the resulting submenu.

Access will transfer the information in the selected table or query into an Excel file format.
Excel will then automatically start and load the new file (see Figure 11-7). This is the only step
you need to take in Access; everything else happens in Excel.

Figure 11-7 Your table loaded in Excel.

Notice that the file uses a name (Business Customers.xls) derived from the name of your
Access table. The name of the table was Business Customers; the name of the Excel file is
Business Customers.xls.
Sometimes, you will want to transfer only part of a table or query. For example, you may want
to export only records 5 through 13 of the Business Customers table. To export only part of a
table or query, perform these steps:

1. Open the Datasheet for the Business Customers table.


2. Select (highlight) rows 5 through 13 or the data you desire.
3. Display the Database window.
4. Choose the Office Links option from the Tools menu, and then choose Analyze It with MS Excel
from the resulting submenu.

Notice that the steps are essentially the same as those you used when transferring an entire
table. The only difference is that you select a portion of a table or query, instead of the whole
thing. Access and Excel take care of the rest, transferring the desired data and displaying it in
Excel.

Linking Information Between Access and Excel


So far you have learned how to output information from Access to Excel. There may be times
when you want to establish an actual link between information in Access and Excel. Links are
established using OLE (object linking and embedding), a standard for sharing information
among Windows programs.

The easiest way to establish a link between Excel and Access is to use Windows cut-and-paste
capabilities. To establish a link between Access and Excel, perform these steps:

1. In Access, select the table or query you want linked to Excel. (Note that you cannot establish an
active link between Excel and only a portion of an Access table or query.)
2. Choose the Edit menu Copy option or press CTRL+C. Access will copy the information to the
Clipboard.
3. Open your Excel window and select the spreadsheet cell where you want the link to begin.
4. Choose the Edit menu Paste Special option. Excel will display the Paste Special dialog box, shown
in Figure 11-8.
Figure 11-8 The Paste Special dialog box.

1. Make sure you select Paste Link at the left side of the dialog box. This forces a link between Excel
and Access.
2. In the As list, select a data format option. (See the sidebar for additional information on data
formats.)
3. Click on OK.

Access pastes the information in the Clipboard into the Excel spreadsheet and establishes a
link between the information and the original table or query. Your screen will look similar to
what is shown in Figure 11-9.

Figure 11-9 Excel, after linking part of an Access database.

Data Formats When Pasting in Excel


When you paste your Access information in Excel, you may have noticed that there are a
number of different data formats you can use (see Figure 11-8). Excel offers these
choices when pasting Access information:
Biff5. This is the Microsoft Excel Binary Interchange File Format, version 5. (That is a
mouthful, isn't it?) This format allows information to appear as close to the original
format as possible.
HTML. Excel pastes information in HTML format, which is the native format of the Web.
Unicode Text. The text of the original information is pasted using Unicode (two-byte)
characters. All other attributes (formats, appearance, etc.) are left up to Excel. You would
use this format if the original information contains foreign language symbols.
Text. Excel pastes the text of the original information. All other attributes (formats,
appearance, etc.) are left up to Excel.
CSV. Excel interprets the incoming data as "comma-separated values," meaning that it
tries to break fields based on locations of commas in the text. This is not necessarily a
good format to use when pasting information from other Microsoft Office programs.
The format you choose should be based on how you want your information to ultimately
appear in Excel.

What Is Transferred?
Regardless of whether you are transferring an entire table or query or only part of one, Access
transfers more than just raw data. Access also transfers the following formatting information to
Excel:

• Font information
• Row height information
• Column width

However, if you use the Clipboard method of linking information and you choose a text-based
data format, Access transfers only the data.

Access also transfers a header row which it may format with shaded text (refer back to Figure
11-7). Access provides this row for information purposes only; if you created an output file as
discussed in the previous section, Transferring Data to Excel, you can safely delete the row. If
you established a link between Excel and Access and there is a header row, you cannot delete
it.

What About Updates?


If you simply output Access information into an Excel file format, there is no relationship
between the Excel data and what is in Access. In this instance, whenever there is a change in
the original Access information, you will need to again output it to an Excel file.

If you establish a link between Excel and Access, the information in Excel is updated
automatically as you change the Access data. Specifically, Excel updates the information when
you open the Excel spreadsheet.

You can also update the information manually by following these steps:

 In Excel, choose the Links option from the Edit menu. Excel displays the Links
dialog box shown in Figure 11-10.
Figure 11-10 The Links dialog box.

1. If necessary, select the link you want to update.


2. Click on the Update Now button.
3. Click on the Close button to close the dialog box and return to your spreadsheet.

Chapter 11: Using Your Data with


Word and Excel
(This is section 4 of 4 in this chapter)

Summary
Even though Access does a great job of managing data, it is not good at some other tasks. For
those purposes, you use programs such as Word and Excel, which join Access as members of
the Microsoft Office family of productivity software. Combining the capabilities of Access and
both Word and Excel was the focus of this chapter. Before you move on to Chapter 12, make
sure you understand the following key concepts:

• Word can use the information in an Access table in a mail merge document. You can use mail
merge documents for a variety of purposes including form letters, mailing labels, envelopes,
catalogs, and order forms.
• To use the Microsoft Word Mail Merge Wizard, you first select the table or query you want to
merge with the document, choose Office Links from the Tools menu, and then choose Merge It
with MS Word from the submenu.
• You can merge Access data with either an existing Word document or a new document.
• Once the Word document is displayed on your screen, the Access data is already linked. All you
need to do is indicate where the merge fields (Access table or query fields) should be inserted in
the document.
• After you position the merge fields, there are several ways you can process the Word document.
You can print to the printer, create a new document, or save the file to disk.
• To output the contents of an entire table or query in Excel format, first select the table or query
you want output, choose Office Links from the Tools menu, and then choose Analyze It with MS
Excel from the submenu.
• To output a portion of a table or query, you select the portion you want output (rows, columns, or
selection), choose Office Links from the Tools menu, and then choose Analyze It with MS Excel
from the submenu.
• You can establish a link between Excel and Access by copying an entire table or query to the
Clipboard and then using the Paste Special option from Excel's Edit menu.
• You can update links manually by choosing the Links option from Excel's Edit menu and then
clicking your mouse on the Update Now button.

In Chapter 12, you will learn how you can take advantage of the World Wide Web within Access

Chapter 12: Using Web Features


(This is section 1 of 4 in this chapter)

A couple of years ago Microsoft made a big push to provide Internet


features for all of their products. Access is no exception; it includes several features which
provide close ties with the Internet and the World Wide Web, in particular. Like several other
Microsoft products, Access now has close ties to the Internet. In this chapter you will learn how
to take advantage of the majority of Access's Web-specific features. Here you learn the
following:

• What the Web is and how it works


• How to use hyperlinks in your databases
• How to create Web pages in Access
• How to conduct a Net meeting

What is the Web?


There is a very good chance that if you are reading this book, you are already familiar with
what the Web is, although you may not understand exactly how it works. While this chapter
does not provide a detailed treatise or history of the Web, it does provide some background
information you will find helpful as you try to figure out how Access is working with the Web.

Believe it or not, the Web is relatively new. It has only been around for the past five or six
years, and only really popular for the past four. The World Wide Web (or Web, for short) is only
a portion of the Internet, although many people use the two terms (Web and Internet)
interchangeably. The Internet is a world-wide network of computers that enables the common
use of helpful tools, including (but not limited to) the following:

• e-mail
• FTP
• telnet
• gopher
• World Wide Web
• WAIS
• Internet telephony

Notice that the Web is only a single tool, although it is a very popular tool. In fact, only one
other tool (e-mail) is more popular than the Web.

How the Web Works


The Web functions using a type of technology referred to as client/server. This
simply means that somewhere there is a computer program that is functioning as a server,
and elsewhere there is one functioning as a client. The client talks to the server, and the server
provides information requested by the client. This symbiotic relationship means that each
program can specialize in a portion of the communication necessary to make the Web work.

The server portion of this equation is supplied, oddly enough, by a program known as a Web
server. These programs run on computers that are connected to the Internet around the clock.
They are constantly "listening" to their Internet connection to see if there are any clients out
there who need information from them. There are literally millions of Web servers available
through the Internet.

The client portion of the equation is provided by a program known as a Web browser. You
probably have such a program installed on your computer. These go by names such as
Internet Explorer (developed by Microsoft) or Netscape Navigator (developed by Netscape
Communications). Figure 12-1 shows an example of such a Web browser.
Figure 12-1 Browsers are used to display Web pages.

When you are accessing the Web from your computer, your browser (the client) is
communicating with some Web server (the server) to request, retrieve, and display the
information you see on your screen. Each "batch" of information returned by the Web server
and displayed by your Web browser is referred to as a Web page. Each Web page has a unique
address (discussed in the next section) and no set size. Instead, the size is determined by the
person that developed the Web page, and can be as large or small as they feel necessary.

Web Addressing
It was mentioned in the previous section that every Web page you can access has a unique
address. These addresses are necessary in order for your Web browser to locate and request
the Web page from the proper Web server. Remember, there are millions of Web servers
accessible through the Internet, and each one may have dozens or thousands of Web pages
which it can provide to your Web browser.
If you take a look at the top of your Web browser, chances are good that you can see the
address you are currently viewing. Looking back at the top of Figure 12-1, you can see the
address, as shown in Figure 12-2.

Figure 12-2 Every Web page has an address.

While this address may look confusing if you are just starting to become familiar with the Web,
it is almost second nature to long-time users. It doesn't take long to understand addresses,
once you know how they are put together. Every address is composed of the same basic parts,
as follows:

• Protocol designator. This indicates what communications standard should be used by your Web
server. In Figure 12-2, this portion of the address is the characters "http://". For many modern
Web browsers, this portion of the address is considered optional. If you don't provide it, the Web
browser assumes you meant to and provides it for you.
• Server name. This indicates the name of the server responsible for the Web page you want. In
Figure 12-2, this is the "www.vitalnews.com" portion of the address. This name is unique, and is
registered with a world-wide directory service that ensures no one else can use it.
• Directory path. This indicates the directory path and optional name of the file in which the
desired Web page is stored. In Figure 12-2, this is the "/WordTips/" portion of the address. If no
file name is provided (which is the case here), the Web server provides a default file designated
for the directory specified.

Note: You may have heard people refer to a URL before. This is an acronym for Uniform
Resource Locator, and is simply a fancy name for a Web address.

Web addresses are the key to using the Web. Without them, your Web browser doesn't know
what you want to do. With them, it can retrieve information from all over the world. Access, as
you will shortly see, can also recognize and use Web addresses.

Chapter 12: Using Web Features


(This is section 2 of 4 in this chapter)

Using Hyperlinks
If you have been using the Web for any length of time, you are probably familiar with
hyperlinks, even though the name may not be familiar. Hyperlinks are areas in a Web page
where you can click your mouse and subsequently visit a different place on the Web. A
hyperlink can be text, or it can be a graphic. In Figure 12-1, the hyperlinks that are easiest to
recognize are those which show up as underlined text. If you move the mouse pointer over
these, it changes to a pointing hand. Click the mouse button and the Web browser displays the
page pointed to by the hyperlink.

The whole purpose of hyperlinks is to make it easy to navigate the Web. You can literally "click
and go" to jump to related or interesting information anywhere in the world. This navigation
process is referred to as "surfing the Web."

Access allows you to include hyperlinks in your database. These hyperlinks don't just need to
refer to Web pages available through the Internet. Indeed, they can refer to other locations in
an Access database, or even locations in documents maintained by other Microsoft Office
products.

The Hyperlink Data Type


You learned about data types in Chapter 4, "Creating Another Database." One of the data
types supported by Access is the Hyperlink data type. This is a special data type that Access
uses to identify addresses which should be treated as links. The links can be either to other
data or to Web addresses.

Information stored in a Hyperlink field consists of four parts, as follows:

• Text to display. The text that represents the hyperlink. This is analogous to the underlined text
on a Web page (see Figure 12-1).
• Address. The address that serves as the target of the hyperlink. (You learned about addresses
earlier in this chapter.)
• Subaddress. A location within a document specified by the Address portion of the hyperlink.
• Screentip. The ToolTip displayed when the mouse pointer hovers over the hyperlink.

The only part of these four that is mandatory is the address; the others are optional. Each part
of a complete hyperlink is separated from the others by a # sign. Thus, the following is a valid
Hyperlink field, in the eyes of Access:

My Link#http://www.web.com/Stuff/ThisPage.htm##Cool location!

This example does not include the optional subaddress, so that portion is left blank. All the
other portions are included.

While you can construct your hyperlinks by hand (using the four parts described previously),
you don't have to. Fortunately, Access offers an easy way to insert hyperlinks into a Hyperlink
field, as described in the following section.

Defining a Hyperlink
Before you can define a hyperlink in Access, you need to know the address you want to use for
the hyperlink. Remember that hyperlinks are designed to be "clickable," and when someone
clicks their mouse on one, they are taken to the target of the hyperlink. This target is nothing
more than an address, which you learned about earlier in the chapter.

Fortunately, Access allows you to discover the address you want used for your hyperlink after
you start the insertion process. First, select the field in a Datasheet or a form that will contain
the hyperlink. This field should use the Hyperlink data type, as defined in the previous section.
Then choose Hyperlink from the Insert menu. Access displays the Insert Hyperlink dialog box,
as shown in Figure 12-3.

Figure 12-3 You can insert a hyperlink in Access.

The Insert Hyperlink dialog box may look overwhelming at first, but it is really quite
manageable if you remember that there are only two things you need to provide: text for your
hyperlink and an address. In fact, if the field you selected before displaying the Insert
Hyperlink dialog box had any text in it, the Text To Display field should already be filled in. The
text you specify (or accept) in this field is what ends up underlined and "clickable" in the field.

The other field in the dialog box is where you specify the address for your hyperlink. If you
already know the address, simply type it in using the full and proper format, as described
earlier in the chapter. If you don't know the address, or you are unsure of how it should be put
together, you can use the controls in the dialog box to help find the address.

For example, let's assume you wanted to create a hyperlink to a form in a different database.
To do this, all you need to do is click your mouse on the File button. This displays the Link to
File dialog box, as shown in Figure 12-4.
Figure 12-4 You can select a file to use for your hyperlink target.

This dialog box is very similar to a standard Open dialog box. All you need to do is use the
controls in the dialog box to help locate the file you want to use for the target of your
hyperlink. When you have found the file and selected it, click your mouse on the OK button.
Access places the Web address of the file (even if it is on your machine) into the address field
of the Insert Hyperlink dialog box.

You are still not done, however. Remember that you wanted your link to specify a form in the
database. To specify a particular query, click your mouse on the Bookmark button. Access
displays the Select Place in Document dialog box, as shown in Figure 12-5.
Figure 12-5 Picking an object from a database.

Here you can use the tree structure in the dialog box to select an object in the document. (Yes,
Access refers to databases using the generic name "document.") Simply click your mouse on
the plus sign beside the Forms category to see the forms defined in the database. Then select
the desired form from those listed.

When you click your mouse on the OK button, Access modifies the address in the Insert
Hyperlink dialog box so it shows the database file name and object name in the database.
Figure 12-6 shows what the dialog box looks like with the address filled in.
Figure 12-6 Access determines an address based on your specifications.

If you had not filled in anything previously in the Text to Display field, Access would have
automatically filled it with the same hyperlink address you just put together. You can still
change the text in the field, using any text you desire.

When you finally click your mouse on OK, Access inserts the hyperlink in your document, in the
field you indicated.

Activating a Hyperlink
As you learned earlier in the chapter, when you are using a Web browser and you move your
mouse pointer over a hyperlink, it changes to a pointing hand. When you click on the mouse
button, the Web browser jumps to the Web address that is the target of the hyperlink.

Access is no different. You use your newly defined hyperlinks by moving the mouse pointer
over them. The pointer changes to the same pointing hand you use in your Web browser.
When you click your mouse on the hyperlink, Access jumps to the location. If necessary,
Access even opens the application program required to display the target. For instance, if the
hyperlink is to a location on the Web, your Web browser is opened. If the hyperlink is to a Word
document, then Word is opened.

It is interesting to note that you can move the mouse pointer over a hyperlink, and if you leave
it poised there (when it is shaped as a pointing hand), a ToolTip appears beside the pointer to
indicate the target address associated with the hyperlink. This is a handy way to tell where
clicking your mouse on a hyperlink would take you, before actually taking the plunge.

Editing a Hyperlink
It is not uncommon to need to change either the text used by a hyperlink or the hyperlink
target. Access allows you to change both of these. The easiest way is to simply right-click your
mouse on the hyperlink, choose Hyperlink from the Context menu, and then choose Edit
Hyperlink from the submenu. Access displays the Edit Hyperlink dialog box, as shown in Figure
12-7.

Figure 12-7 The Edit Hyperlink dialog box.

The Edit Hyperlink dialog box looks almost exactly like the Insert Hyperlink dialog box used
earlier in the chapter. All you need to do is change either the text or the target, as desired.
When you are satisfied with your changes, simply click your mouse on OK.

Deleting a Hyperlink
There may come a time when you no longer need a particular hyperlink in your worksheet.
Fortunately, deleting a hyperlink in Access is very easy to do. There are two ways you can go
about it. First, you can right-click your mouse on the hyperlink, thereby displaying a Context
menu. From the Context menu, choose the Hyperlink option. This displays a submenu from
which you should choose Remove Hyperlink. Access dutifully removes the hyperlink. This
method of deleting a hyperlink is handy if you like to work almost exclusively with the mouse.

If you are more of a keyboard-oriented person, all you need to do is select the field in which
the hyperlink is located and press the DEL key. You cannot select the field, however, by
clicking on it with the mouse; trying to do so is the same as activating the hyperlink. Instead,
you must select a field adjacent to the hyperlink field, and then use the arrow keys to select
the field whose hyperlink you want to delete.
Chapter 12: Using Web Features
(This is section 3 of 4 in this chapter)

Creating Web Pages


One of the major ways in which Internet capabilities have been melded into Access is in its
ability to create Web-page output. Using Access you can create three types of Web pages. The
type you should create depends on what type of data you are using and what you ultimately
want to do with that data. Access allows you to create these types of Web pages:

• Static HTML. This is the simplest form of Web output you can create. The pages represent a
single view of your data at the time the pages are created.
• Server-generated HTML. This type of Web output allows you to work with a specific Web server
to create dynamic output that presents your data in a table format. Information in the Web page
is generated as of the time the user accesses the page.
• Data Access Pages. These are actually database objects (just like tables, forms, and queries)
that allow the complete sharing of information over the Web.

You should note that even though Access makes creating a Web page relatively easy, getting
others to see your information on the Web may not be as easy. The biggest hurdle, for many
people, is getting access to a Web server where their information can be made available. If
your company has such a server, or you have rented space on someone else's Web server, you
will need to transfer your Access-created Web materials to the server before they can be
accessed by others. In the case of the more dynamic page-creation methods (server-generated
HTML and data access pages), you should discuss what you want to do with the Web
administrator. They may need to make some changes in how the server functions before you
can use these types of pages.

Creating a Static HTML Web Page


Creating a static HTML Web page from an existing database is very easy in Access. All you
need to do is either select the database object you want used as the basis for your Web page,
or display the information you want used. Then choose Export from the File menu. This
displays the Export dialog box shown in Figure 12-8.
Figure 12-8 The Export dialog box.

At the bottom of the Export dialog box, you should make sure that you are saving your files as
HTML documents (see Figure 12-8). You should also make sure the Save Formatted check box
is selected; this ensures that Access writes the information out in fully functional HTML format.
You can then use the other controls in the Export dialog box to specify a file name for the Web
page you are creating, as well as a location.

Once you click your mouse on Save, Access quickly displays the HTML Output Options dialog
box, shown in Figure 12-9.

Figure 12-9 The HTML Output Options dialog box.

Access is asking for the location of an HTML template file. This is a file, peculiar to Access, that
defines how a Web page should be constructed. Template files can help enhance the
appearance of your Access Web pages. Unfortunately, the template files are something you
must create by hand; they are not created automatically by Access. On the plus side, they are
not mandatory to the creation of Web pages using Access.

Note: For more information on HTML template files, use the index of the Access online
Help system to search for "HTML template." Using the information provided there, along
with your knowledge of how to hand-code HTML files (or a very good HTML tutorial book),
you can create your own template file, if desired.

Once you have designated which template file (if any) you want to use, click your mouse on
the OK button. (If you don't have a template file, as in this instance, leave the HTML Template
box blank and click your mouse on the OK button.) Access then generates the Web page
according to your specifications. As an example, Figure 12-10 shows an example query
Datasheet in Access, while Figure 12-11 shows the Web page generated by Access from that
query.

Figure 12-10 A sample query Datasheet in Access.


Figure 12-11 The same information from an HTML file, in a Web browser.

You should note that the Web page shown in Figure 12-11 was viewed on a system that did not
even have Access 2000 loaded on it. This means that anyone with a Web browser will be able
to view your information without any problem.

Note: Exactly how your information is displayed may differ from one browser to another.
Standards within the Web leave it up to the browser to determine how characteristics are
displayed. Thus, one browser may display columns or fonts or bold text a bit differently
than is done in a different browser. It is impossible for Access to anticipate and overcome
these differences.

Creating Server-generated HTML Web Pages


One of the enhanced Web pages you can create with Access is referred to as server-generated
HTML Web pages. Notice that these are server-generated pages. That should give you the first
clue that the display of the information is dependent on the server, not on Access itself. In a
Microsoft-centric world, this means that you must use one of Microsoft's Internet Information
Server (IIS) platforms on a Windows NT Server system in order for others to access your data
using these types of pages. As long as you are using that type of Web server, you can use
these types of Web pages.

Note: Make sure you don't confuse the server with the browser. The key component
here is the Web server; as long as the server is IIS, any browser can access server-
generated HTML Web pages from Access.

Because generation of this type of Web page is server-dependent, most of the work in making
the information available on the Web must be done by your Web administrator, not by you. If
your administrator needs help in this area, any good Internet Information Server book should
include help on setting up and publishing ASP or IDC/HTX pages from Access data.

Creating Data Access Pages


Data access pages are a new feature in Access 2000. These pages are not dependent on a
particular Web server (as you learned about in the previous section), but are instead
dependent on the use of Internet Explorer 5, the latest version of Microsoft's Web browser. (IE5
is provided with Microsoft Office 2000, of which Access 2000 is a component.)

In reality, data access pages are saved as an object in your Access database, just like your
tables, queries, and forms. There are two ways you can create data access pages: using a
Wizard or from scratch. The following sections detail both approaches.

Using a Page Wizard


To create a data access page, first display the Database window and click your mouse on the
Pages button. You can then double-click your mouse on the Create Data Access Page by Using
Wizard option. Shortly Access displays the Page Wizard dialog box, as shown in Figure 12-12.

Figure 12-12 The Page Wizard dialog box.


At the left side of the Page Wizard dialog box, you can use the drop-down list to specify what
Access should use as the source for this new data access page. Remember that you can use
either tables or other queries as your source. In Figure 12-12, the Business Customers table is
selected. (This is a table developed earlier in this book.)

In the lower-left portion of the dialog box is a list of all the fields defined in the selected table
or query. If you change the data source in the pull-down list, then the available fields change,
as well. You can use the list, and the controls just to the right of the list, to indicate which fields
you want included in the data access page you are creating.

For the purposes of this example, select the Company Name, Address 1, Address 2, City, State,
and Zip Code fields. Make sure that after selecting each one, you click your mouse on the >
button. Access then displays the name of each field in the Selected Fields list at the right side
of the dialog box. When you are done selecting these fields, the dialog box appears as shown
in Figure 12-13.

Figure 12-13 The Page Wizard dialog box after selecting some fields.

With the fields selected, you are ready to proceed to the next step in the Wizard. Click your
mouse on the Next button, and Access displays the dialog box shown in Figure 12-14.
Figure 12-14 Picking which fields to group by.

Your next step is to determine if you want your information grouped in any particular order.
Grouping is routinely done in reports, and should be done based on the intended use of your
data. For instance, if you were creating a data access page showing sales for a particular
company, you might want the information in the report grouped by month, by salesperson, or
by territory.

In this example, it might be helpful to group your customers by state. To do this, simply choose
the State field at the left side of the dialog box and click your mouse on the > button. Access
changes the Report Wizard dialog box to show how your grouping will now occur, as shown in
Figure 12-15.
Figure 12-15 Grouping helps you organize the output in a data access page.

Notice that the State field is moved to the top of the sample layout, and the Grouping Options
button becomes active. For some types of output you may want to change the grouping
options. Doing so allows you to specify how Access should analyze the field by which you are
grouping. In this case, changing the grouping options is not necessary.

To proceed to the next step, click your mouse on the Next button. Access displays the dialog
box shown in Figure 12-16.
Figure 12-16 Picking which fields to sort by.

Now you need to decide how you want your information sorted. Access allows you to specify
up to four fields by which sorting can be done. In most instances you will use only one or two
fields. It makes sense that if you are creating a list of your customers, you would want them in
alphabetical order by name. Thus, you should choose the Company Name field.

Use the pull-down list for the first sort field to select the Company Name field. If desired, you
can click your mouse on the order button to the right of the field to indicate whether Access
should sort the field in ascending order (the default) or descending order.

When you are done picking the fields you want to sort by, you can click your mouse on the
Next button to proceed to the next step. Access displays the dialog box shown in Figure 12-17.
This is the final dialog box in this Wizard.
Figure 12-17 The final dialog box for the Page Wizard.

Here you can enter a name that you want used to save your data access page. The suggested
name is simply the table name on which the page is based (Business Customers). Change the
name to Customer Addresses, by State. Next, click your mouse on the Open the Page
option button, then click on the Finish button. Access displays the results of your page, as
shown in Figure 12-18.
Figure 12-18 The results of the Page Wizard.

This viewing is being done solely in Access, not in a browser. When you are done looking at the
information in the page window, close it by clicking your mouse on the Close icon in the upper-
right corner of the window. Access asks you if you want to save changes to the data access
page. If you click your mouse on Yes, you will see the Save As Data Access Page dialog box,
shown in Figure 12-19.
Figure 12-19 Saving your HTML page.

Here you need to provide a name for the data access page you are creating. This is the name
that will be used for the actual HTML file you will publish on your Web server. You should
supply the name, then click your mouse on Save. Access generates the page and saves it in
the Database window.

Later, someone can access the file from within Internet Explorer 5 (see Figure 12-20). Notice
that the controls look almost exactly the same as what you see in Figure 12-18. The user can
now use these controls to navigate through the data in the table.
Figure 12-20 Viewing a data access page in the Web browser.

Designing Pages from Scratch


To create a data access page from scratch, first display the Database window and click your
mouse on the Pages button. Then double-click your mouse on the Create Data Access Page in
Design View option. Access displays the Design view window for data access pages, as shown
in Figure 12-21.
Figure 12-21 Creating a data access page from scratch.

Notice that this Design view page is very similar to what you use to create both reports and
forms from scratch. You can use many of the same techniques you learned in Chapter 9,
"Creating Custom Forms," and that you will learn in Chapter 14, "Creating Complex Reports,"
in creating data access pages from scratch.

The first task you need to do is bind a data source to the data access page. This data source
can be either a table or a query. You do this by first choosing Properties from the View menu.
Access displays the Properties dialog box for your page. Click your mouse on the Data tab in
the dialog box, and Access displays it as shown in Figure 12-22.
Figure 12-22 The Properties dialog box.

When you select the RecordSource property, a pull-down list becomes available. Using the pull-
down list, pick a table or query you want to use. For this example, I selected the query named
"Active Davis Accounts Over $1,000," which was developed earlier in this book. Access then
displayed a field list for the query, as shown in Figure 12-23.

Figure 12-23 The Field List dialog box.

To add fields to the data access page, select the fields desired and click your mouse on the
Add To Page button in the Field List dialog box. Once the desired fields are added, you can
close the Field List dialog box and focus on the layout of your page. You do this by using the
tools in the Toolbox to add elements to the page, as desired.
When you are through designing your data access page, click your mouse on the Close icon in
the upper-right corner of the Design window. Access asks you if you want to save the page.
When you click your mouse on Yes, you are given the opportunity to specify a name and
location for the page, using the Save As Data Access Page. (See Figure 12-19.) Once saved,
your page appears in the Database window of Access as a Page object. The page can also be
viewed using Internet Explorer 5 by anyone that has access to the page.

Conducting a NetMeeting
Microsoft NetMeeting was originally a module used with Internet Explorer. It has been
integrated into Office 2000 programs to facilitate the sharing of files over the Internet. Much of
the technical information about using NetMeeting is beyond the scope of this book, but it is
helpful to understand the basics and how you can use NetMeeting with Access.

Access makes it easy for you to both schedule and be involved in online meetings. If you want
to schedule a NetMeeting, using Outlook, you simply need to choose Online Collaboration from
the Tools menu, and then choose Schedule Meeting. The exact steps you may go through from
this point depend on many variables, including how you have Outlook configured on your
system. If you are familiar with Outlook, however, you should be able to follow the on-screen
directions to schedule your meeting.

Note: The NetMeeting portion of Access relies very heavily on modules originally in other
Microsoft programs such as Internet Explorer and Outlook. If you have not used those
programs, it will be very difficult for you to understand and use the features originally
belonging to those programs, even if they are now accessible from Access. For more
information, refer to any good Outlook or Internet Explorer book.

If you use Outlook in your office, you may have received a reminder concerning an online
NetMeeting. To join the meeting, all you need to do is click your mouse on the Start
NetMeeting button. If you want to decline the meeting, click your mouse on the Dismiss
button. (Both of these buttons are available in Outlook.)

If you don't use Outlook, but you have NetMeeting running in the background on your system,
you may have received a notice that you are invited to a meeting. If this is the case, click your
mouse on Accept to join in the meeting. Running Microsoft NetMeeting in this way (in the
background) is done not from within Access, but directly from the Windows desktop.

Participants in a NetMeeting can see and comment on the database under discussion. If you
are the host of an online meeting (the person that started the meeting), you have ultimate
control over the database. You can allow others in the meeting to make changes to the
database, as desired. Others in the meeting can see any changes being made, as they are
made.

Chapter 12: Using Web Features


(This is section 4 of 4 in this chapter)

Summary
In this chapter you have learned how you can take advantage of the Web, without even
leaving Access. Many Web-centric features with which you may already be familiar are also
implemented in Access. For instance, you can use hyperlinks to jump from one location to
another. In this chapter you have learned the following:

• The World Wide Web is just a portion of the Internet, second only in popularity to e-mail.
• Access allows the insertion of active hyperlinks in a table field.
• Once hyperlinks are in place, you can easily edit or delete them.
• Hyperlinks are activated in Access in the same way they are activated in a Web browser.
• You can use Access to generate Web pages in three different ways: static HTML, server-generated
HTML, and data access pages.
• You can participate in a NetMeeting while you are using Access.

In Chapter 13, you will learn how you can relate tables to each other.

Chapter 13: Understanding Data


Relationships
(This is section 1 of 3 in this chapter)

So far in this book, you have focused primarily on using simple, straight-forward data
structures to maintain your information. Access is not restricted, however, in how you can
organize your data. It also lets you set up relational databases. In this chapter, you will learn
what a relational database is and how to create one in Access.

By the time you finish this chapter, you will understand the following key concepts:

• What a relational database is


• How information in tables can be related
• Why keys are important in a relational environment
• How to create a relationship between two tables
• What referential integrity means

Understanding Data Relationships


You may have heard or read somewhere that Access is a relational database. In general, a
relational database is a table-based database in which the information in one table relates
(corresponds) to information in another table. For example, you may have a database which
you use to keep track of your music collection. In one table, you have all your CDs. In another,
you have all the music artists in your collection. The information in the one table relates to the
information in the other since every CD has at least one musical artist.

Relationships within a database are often based on relationships between objects in everyday
life. For instance, the relationship between a CD and a musical artist is one that exists in the
real world. Likewise, a real-world relationship exists between inventory products and the
companies that make those products. In a database, you may have one table that contains
inventory products and another that contains vendors. When you tie the two tables together,
you create a relational database.

The idea behind relational databases is to limit the amount of redundant information in a
database. Consider the inventory example again. If you want to keep track of your inventory,
you might have a table that includes the following items:

• Item ID
• Description
• Color
• Weight
• Cost
• Price
• Quantity On Hand
• Reorder Level
• Vendor Name
• Vendor Address
• Vendor City
• Vendor State
• Vendor Zip Code
• Vendor Phone

For most inventories, you need to maintain this information for each item. The problem occurs
when you start ordering more than one item from a given vendor. Pretty soon, you have a lot
of redundant information in your table. Redundant information simply consumes disk space.
Consider how much space could be wasted by thirty occurrences of the same vendor address
and phone number! Multiply that wasted space by several dozen vendors, and you can begin
to see the magnitude of the problem.

Wasted space is only one problem. Another is that redundant interaction increases the chance
of error. For instance, when employees enter new inventory items, it is possible that they will
enter typos when they put in vendor names, addresses, and phone numbers. Down the road,
when you need to refer back to the information, how do you determine which names,
addresses, and phone numbers are correct?

Still another problem is that redundant data increases your update and processing time. For
instance, if you need to change the phone number of a vendor, you must pull up each
inventory record and retype the information. As you can guess, such changes can take quite a
bit of time. If you use a command (such as the Replace command in the Datasheet), the
command may not change some numbers if they were initially entered incorrectly.

All in all, the redundant data increases your personal management tasks. Luckily, using a
relational database, you can use two related tables, one containing inventory items and one
containing vendor information. For instance, consider the following two tables:

Vendor
Item ID
ID
Description Name
Color Address
Weight City
Cost State
Price Zip Code
Quantity On
Phone
Hand
Reorder Level
Vendor ID
Notice that the Vendor ID field exists in both tables. Access uses the Vendor ID field to tie the
information in the inventory table to the information in the vendor table. By setting up your
database in this way, you don't have any redundant information and thus you eliminate many
of the problems inherent in the other layout:

• Less storage space. Since there is only one record for each vendor, you eliminate the
redundancy inherent in the other layout.
• Less chance for error. Since vendors are not being entered more than once, human error is less
likely to creep into the table.
• Faster processing time. One record per vendor means you can make universal changes
quicker. (Actually, there is no universe to change--there is only one record.) Also, you can do
other changes faster, such as an across-the-board price increase.

What Type of Relationships Can Exist?


Information in two tables can relate in any of three different ways. These ways are based on
the number of possible relations between the records. These three types of relationships are:

• One-to-one
• One-to-many
• Many-to-many

A one-to-one relationship indicates that for each record in the first table, there is one
corresponding record in the second table. For instance, you might have two tables, one with
general customer information and another with detailed customer information. For each record
in one table, there is a corresponding record in the other. For security reasons, you might want
to set up a one-to-one relationship; the general information may be open to anyone within
your company, but the detailed information may be available to only those with a particular
security clearance.

A one-to-many relationship indicates that for each record in one table there are many records
in the other table. For instance, in the example given in the previous section, for each record in
the inventory table there is only one corresponding record in the vendor table. This is because
each inventory item has only one supplier. However, for each record in the vendor table, there
could be many records in the inventory table--because a particular vendor may supply more
than one inventory item.

The many-to-many relationship is the most complex relationship. For any record in either
table, there can be many corresponding records in the other table. The classic example of a
many-to-many relationship is the relationship between a table that contains invoices and one
that contains inventory. Each invoice record can refer to many different inventory items, and
each inventory item can refer to many different invoices.
Revisiting Keys
In Chapter 2, "Access in an Hour," you learned about primary keys. You learned that keys
provide a method for Access to quickly organize and retrieve data. In a relational environment,
however, keys can do much more than that. Keys, in effect, become the tie that binds two
tables together. For instance, in the inventory example provided earlier, the key in the vendor
table is Vendor ID. This key field is also used in the inventory table to tie it to the vendor table.
In the vendor table, the Vendor ID is unique; in the inventory table it is not.

Characteristics of Keys
A key for any given table possesses three attributes which are important to remember:

• It must be unique
• It cannot be undefined (null)
• It is, by definition, indexed

A key can be an account number (as in a Vendor ID), social security number, license number,
part number, or any other numeric value or combination of characters that are unique. That is
the important thing--the key is unique. No other row in the table can have the value of the key.
However, other tables may share the same set of key information, as was pointed out in the
inventory example.

Text names (such as company names or titles) are not generally unique and cannot be used in
math operations; therefore, they do not make good keys. You should instead put together your
own unique value.

Note: Access provides a data type which is ideally suited to being a key value--an
AutoNumber data type. This sequential numeric value is guaranteed to be unique, and
the user cannot change it once Access assigns it to a record.

Types of Keys
There are three types of keys which you can use in a table:

• Simple key
• Complex key
• Foreign key

You have actually used a simple key throughout this book. A simple key contains the value of a
single column, such as an account number. Access also supports complex keys, which use the
values of more than one column. For instance, you might not have a single column that
uniquely identifies a record. But if you combine the contents of two columns, you can achieve
the purposes of a key.

As an example, assume you are developing a billing system for your company. There are
different departments in your company, and each can generate their own invoices. When you
look at what you can bill for, you find that it is highly possible that there will be an overlap
between departments. In other words, two departments could sell and bill for the same item.
Since you want to maintain separate inventories for each department, you can't simply
combine them. Your solution is to use a complex key that is composed of the department ID
and the part number, together.

A foreign key is one that does not belong to the current table, but instead provides a link to
another table. A good example of a foreign key is the inventory and vendor tables described
earlier. The Vendor ID is a simple key for the vendor table, but it is also contained in the
inventory table. To the inventory table, it is a foreign key.

Chapter 13: Understanding Data


Relationships
(This is section 2 of 3 in this chapter)

Establishing Relationships
Note: This section uses the Customer database you have used in several chapters of this
book. If you do not have that database available, you may want to use the Customer
4.mdb database located on the CD-ROM. You should copy the file to a directory on your
hard drive and rename it Customer.mdb.

You now know what database relationships are and how they are put together. It is time to put
this information to good use by designing your own relational database. You will do this by
expanding the Customer.mdb database you developed earlier in the book. You will recall that
this database contains a single table--Business Customers.

If you take a look at that table, you will notice there is some redundant data in it. The
Salesperson field contains the name of an in-house sales rep that is repeated over and over
again in the records. To remove this redundancy, you can put the salespeople in their own
table and simply use a pointer to a Sales ID field. To accomplish this effectively, you must
perform these steps:

• Derive the unique names of existing sales people


• Create the table for the sales people
• Modify the Business Customers table
• Establish links between the two tables
• Check your links

Note: If going through this optimization process seems like a lot of work to you, you
might try using the table analysis tool discussed in Chapter 10, "Using Additional Tools."

Pulling Out Unique Names


To pull out the unique names in the Salesperson field of the current Business Customers table,
you can use a query. (You learned how to put queries together in Chapter 6, "Using Queries to
Examine Your Data.") If you use an action query, you can create a new table with the results;
that is what you will accomplish in this step.
First, you need to create a base table which can receive the results of your query. You will call
this table Sales Staff. The table will serve as the basis for your work in the following section.
Create this table now; it should contain the following two fields:

• Sales ID. This field has an AutoNumber data type. Use this field as the primary key.
• Name. This field has a Text data type, with a length of 50.

That's it. When you save the table, do so under the name Sales Staff. The table should
appear in the Database window.

Note: If you need a refresher on how to create tables from scratch, you may want to
refer back to Chapter 4, "Creating Another Database."

You are now ready to put together your query. To create your query, perform these steps:

1. Click your mouse on the Queries button in the Database window.


2. Double-click your mouse on the Create Query in Design View option. Access will display the query
Design window overlaid by the Show Table window.
3. In the Show Table window, double-click your mouse on the Business Customers table name.
Access displays a field list for the table in the query Design window.
4. Close the Show Table window by clicking your mouse on the Close button.
5. Choose the Append Query option from the Query menu. Access displays the Append dialog box,
as shown in Figure 13-1.

Figure 13-1 The Append dialog box.

6. Use the Table Name drop-down list to select the name of the table you just created--Sales Staff.
Make sure the Current Database option is selected, and then click your mouse on OK.
7. In the field list for Business Customers, double-click your mouse on the Salesperson field. Access
will display the field in the QBE grid at the bottom of the dialog box.
8. Specify that the field should be sorted in ascending order.
9. Use the pull-down list in the Append To cell of the QBE grid to select the Name field. This is the
field in the Sales Staff table to which you want the Salesperson name appended.
10. Double-click your mouse in any part of the gray area to the left or right of the Business Customers
field list. Access will display the Query Properties dialog box, as shown in Figure 13-2.
Figure 13-2 Properties dialog box for your query.

11. Select the Unique Values property; change it to Yes. This ensures that the query returns only
unique values, meaning that you will only get one occurrence of each salesperson.
12. Close the Properties dialog box by clicking your mouse on the Close icon in the upper-right corner.
13. Close the query Design window by clicking your mouse on the Close icon in the upper-right
corner. Access asks you if you want to save the query.
14. Click your mouse on the Yes button. Access displays the Save As dialog box, as shown in Figure
13-3.

Figure 13-2 The Save As dialog box.

15. Enter the name Pull Sales People and click your mouse on the OK button. Access saves the
query.

That's it. In a few short steps, you have created a query that will pull the desired information
from one table and put it in another. You can run the query by selecting the query name in the
Database window, and then clicking your mouse on the Open button. Shortly, Access will
display a dialog box reminding you that your query will modify data in a table and asking you if
you are sure you want to run it. Click your mouse on the Yes button, and Access runs the
query.

Note: If you get an error message, it means that you didn't create the Sales Staff base
table, as discussed earlier in this section.

When the query is completed successfully, Access displays a dialog box informing you that it is
about to append ten rows. This refers to the fact that ten salespeople names were pulled from
the Business Customers table, and are about to be appended to the Sales Staff table. Click
your mouse on the Yes button and Access completes the query, returning you to the Database
window.

You can check how you did by opening the Sales Staff table. It should look like what you see in
Figure 13-4.

Figure 13-4 The Sales Staff table with the appended records.

Notice that the table lists each salesperson in alphabetical order. As you can see, Access has
assigned each salesperson a unique Sales ID. You are now ready to really create the Sales
Staff table.

Note: The query you created (Pull Sales People) has served its purpose. You can now
delete the query, if you desire. There is no reason to save it.

Creating the Sales Staff Table


You now have a base table you can use for your sales people. However, the table is by no
means complete. You still need to add fields for other record keeping and calculations. Take
another look at Figure 13-4. Notice that there are only two fields identified for the table (that's
all you created). Modify the table so it has the following additional fields:

• Last Name
• First Name
• Office
• Commission Rate

Again, these are just possible fields. The Office field lets you specify the office number in which
the salesperson is located. The properties of the new fields are shown in Table 13-1.
Field Properties
Text data type, length of 25, field is
Last Name
required
Text data type, length of 25, field is
First Name
required
Office Text data type, length of 10
Commission
Number data type, Format is Percent
Rate
Table 13-1 Properties for the new table fields.

When you are done, switch back to Datasheet view. Access will ask you if you want to save the
table. Answer Yes. Access will then display the dialog box shown in Figure 13-5.

Figure 13-5 A warning from Access.

Access displays this message because you have added some fields which are required (Last
Name and First Name). Whether a field is required or not is part of the validation rules for a
table. Click your mouse on the No button. Access will change the table structure and display
the Datasheet view, as shown in Figure 13-6.

Figure 13-6 The Datasheet for the updated table.

At this point you need to manually split up the names of the salespeople. Since there are only
ten records, this will only take a minute or two. When you are done, switch back to Design
view and delete the Name field. This field is no longer necessary since you have updated the
table with the other two fields (Last Name and First Name). When you are done deleting the
field, switch back to the Datasheet. Your final table should look like what is shown in Figure 13-
7.

Figure 13-7 The final Sales Staff table.

At this point, you can add information to the other fields, if desired. For this example, there is
no need to do so right now. As such, you are ready to modify the Business Customers table.
Close the Sales Staff table before moving on to the next step.

Modifying the Business Customers Table


Because you have placed the Salesperson information into its own table, your next step is to
modify the design of the Business Customers table. The modification will not be as extensive
as what was done with the Sales Staff table. To modify the Business Customers table, perform
these tasks:
 Rename the old Salesperson field. This is necessary so you can use the name
for the new field.
 Create a new Salesperson field. This is necessary so you can establish a link
between your tables.
You accomplish both of these tasks from the Design window. From the Database window, click
your mouse on the Business Customers table name and then click on the Design button.
Access will display the Design window, containing the layout for the Business Customers table.
Change the name of the Salesperson field to something like Old Salesperson.

Next, select the row that contains the Comments field, and then select the Rows option from
the Insert menu. Access adds a new row right above the Comments field, as shown in Figure
13-8.

Figure 13-8 After inserting a row.

Enter Salesperson as the field name. In the Data Type column, make this field a Number. It is
then very important that you set the Field Size property to Long Integer. If you omit this
change, you cannot create a link between this field and the Sales ID field in the Sales Staff
table (as discussed in the next section), because both fields in both tables must be of the same
data type.

You are now done modifying the Business Customers table. Close the table by clicking your
mouse on the Close icon in the upper-right corner of the Design window, saving your changes
as you do so.

Establishing Links
As you determine how to place the links between the two tables, it is important to remember
the type of relationship that exists between the two. For each record in the Business
Customers table, there is one corresponding record in the Sales Staff table. This is natural; our
company assigns only one salesperson to each customer. Looking at it from the perspective of
the Sales Staff table, however, there can be multiple records from the Business Customers
table that correspond to each record in Sales Staff. Again, this is natural. There can be multiple
accounts assigned to each salesperson. Understanding how the records relate, it is easy to see
that this is a one-to-many relationship.

In a one-to-many relationship, the linking column is contained in the "one" table. Thus, you use
the key column for the Sales Staff table to link together the two tables. Access places values
from this key in the Salesperson field of the Business Customers table. To the Business
Customers table, this becomes a foreign key.

To establish links in Access, you begin at the Database window. Make sure you have the Tables
button selected; you should see your two tables displayed in the Database window. Now
choose Relationships from the Tools menu. Your screen should appear similar to Figure 13-9.
Figure 13-9 After opening the Relationships window.

Notice that Access lists both of the tables in your database in the Show Table window. You use
this window to select the tables or queries between which you want to establish relationships.
All you need to do is select each table, in turn, and then click your mouse on the Add button.
Access will display field lists for each table in the Relationships window. When you have added
both tables, click your mouse on the Close button. The Relationships window will now appear
as shown in Figure 13-10.
Figure 13-10 The Relationships window.

To establish a relationship between the two tables, drag the linked field from one table to the
other. Remember that the relationship between the two tables is one-to-many (as discussed
earlier in this chapter). In this case, you should start with the "one" side of the relationship,
meaning the field in the Sales Staff table. Use the mouse to point to the Sales ID field, hold
down the mouse button, and drag it over the top of the Salesperson field in the Business
Customers field list. When you release the button, Access will display the Edit Relationships
dialog box shown in Figure 13-11.

Figure 13-11 The Edit Relationships dialog box.


Notice that the left side of the grid (in the Table/Query column) shows the Sales Staff table;
this is where you pulled the Sales ID field from. The other side (in the Related Table/Query
column) shows the Salesperson field in the Business Customers table; this is where you
dropped the field. This is the relationship you want to create.

The only other option you can choose here is to select the Enforce Referential Integrity check
box. When you select this option, Access will automatically make sure that anything you enter
in the Salesperson field of the Business Customers table is a valid record in the Sales ID field of
the Sales Staff table. This is a powerful feature which helps to maintain the validity of your
data. You should select this option.

When you select the Enforce Referential Integrity check box, notice that the options at the
bottom of the dialog box become available. That is because these options indicate how Access
is to apply the integrity rules.

• The Cascade Update Related Fields check box only has relevance if the field on the "one" side
of the relationship can be edited. This is not the case with the Sales ID field; it is an AutoNumber
data type, which cannot be edited. If the Sales ID field were a data type which you could edit,
selecting this box would cause Access to automatically update any related records in the "many"
tables whenever you made changes to the Sales ID field. Since this feature has no relevance to
your table, leave this check box unchecked.
• The Cascade Delete Related Records check box indicates if you want records in Business
Customers deleted when you delete the Sales ID record in Sales Staff table. This check box
provides you with a quick way to make sure Access deletes any records belonging to a
salesperson when you delete the salesperson's record. In most organizations, you don't want to
do that, however. Instead, you want to reassign those accounts to a different salesperson. Leave
this check box unchecked.

Now, to establish the relationship you have specified, click your mouse on the Create button.
Access closes the Edit Relationship dialog box and again displays the Relationship window.
Figure 13-12 shows this window with the updated link.
Figure 13-12 The updated link.

You can now close the Relationship window by clicking your mouse on the Close icon at the
upper-right corner of the window. Access will ask you if you want to save your change to the
table layout. Click your mouse on the Yes button, and Access will save your work, returning
you to the Database window. Your two tables are now related.

Checking Your Link


There are two things you still need to do with the Business Customers table. One is to check
your link to make sure it is in place. The other is to get rid of the Old Salesperson field. Open
the Datasheet for the Business Customers table. If you display the Salesperson column, you
will notice it is empty (rightly so; you haven't put any data in it yet). Try entering a value that
is out of the range of valid Sales IDs. You know the valid IDs are in the range of 1 through 10,
so try putting in a 62 or some such number. When you try to leave the field, you should get an
error message, as shown in Figure 13-13.

Figure 13-13 Access doesn't permit invalid reference numbers.


Access won't let you put in an invalid value. Click your mouse on the OK button to clear the
message, and you can try again.

There is one thing you can do to make putting in the IDs for the sales staff easier. Remember
that when you exported the names of the sales staff, you did it in alphabetical order. Thus,
Sales ID 1 is at the first of the alphabet, and Sales ID 10 is at the last. Select the Old
Salesperson field and click your mouse on the Sort Ascending tool. This puts the records in
order, by the salesperson's name. In the Salesperson column, you can now enter 1 for the first
salesperson, 2 for the second, and so on. When you are through, you can switch to Design
view and delete the Old Salesperson column. Your database now fully utilizes relational tables.

Chapter 13: Understanding Data


Relationships
(This is section 3 of 3 in this chapter)

Summary
Access lets you set up very complex and very powerful data relationships. The ability to
implement relationships between tables lets you reap many benefits which can make you
more productive and your database more efficient. This chapter has introduced you to both the
concepts of relational databases and the steps necessary to put them into action.

Before you move on to Chapter 14, make sure you understand the following key concepts:

• A relational database is a database in which you establish links between data in one table and
data in another.
• You establish a one-to-one relationship when a record in one table can have only one
corresponding record in another table.
• You establish a one-to-many relationship when a record in one table can have more than one
corresponding record in another table.
• You establish a many-to-many relationship when any record in one table can have more than one
corresponding record in another table, and vice versa.
• Within index tables, keys establish links with information in other tables.
• Keys need to be unique and cannot be undefined (null). In the table that owns the key, the key
field is called a primary key. If a key field is used to establish a link with another table, then in the
other table it is a foreign key.
• In Access, you use the Relationships option from the Tools menu to create links between tables.
• Referential integrity means that the use of keys across a link is both consistent and correct. You
can instruct Access to enforce referential integrity.

In Chapter 14, you will revisit creating Access reports. There you will learn how to use the
report Design window, in detail.
Chapter 14: Creating Complex
Reports
(This is section 1 of 4 in this chapter)

In Chapter 8, "Creating Simple Reports," you learned how you can use the Report Wizards to
create reports. You also learned, however, that the reports you create with the Wizards are
generally very simple reports. Normally, the Wizard's reports serve as a starting point for your
own custom reports. In this chapter, you will learn how to create your own reports from
scratch.

By the time you finish this chapter, you will understand the following key concepts:

• How to display the report Design window


• How the report Design window relates to other Design windows
• What the different sections of a report are
• What report properties mean and how you use them
• How to design each section of your report
• How to group data in your report
• How to view your report as you design
• How to save your report within your database

Creating a New Report


Note: This section uses the Customer database you have used in several chapters of this
book. If you do not have that database available, you may want to use the Customer
5.mdb database located on the CD-ROM. You should copy the file to a directory on your
hard drive and rename it Customer.mdb.

To create a report, first display the Reports section of the Database window and double-click
your mouse on the Create Report in Design View option. Access will display the report Design
window shown in Figure 14-1.
Figure 14-1 The report Design window.

This window may look familiar; it is very similar to the form Design window you used in
Chapter 9, "Creating Custom Forms." In fact, you will find that you are able to apply much of
your knowledge about forms to the development of reports. The relevant difference between
forms and reports is that forms are destined for the screen and reports are destined for the
printer.

Access lets you use many of the same objects and controls on reports that you use with forms.
The only real difference is in the actual use of the Design window itself.

Note: The toolbox works much the same in reports as it does in forms. If you need a
refresher on how the toolbox works, you may want to refer back to Chapter 9.

The first task you need to do is to indicate what table or query you want to use as the data
source for your report. You do this by following these steps:

1. Choose Properties from the View menu. Access displays the Properties dialog box for the report.
2. Click your mouse on the Data tab.
3. Use the pull-down list for the Record Source property and select Business Customers. Access
displays the Business Customers field list on your screen.
4. Close the Properties dialog box by clicking your mouse on the Close icon in the upper-right corner
of the dialog box.

You are now ready to begin exploring the report Design window and actually creating your
report.

Chapter 14: Creating Complex


Reports
(This is section 2 of 4 in this chapter)

Understanding the Design Window


Notice that the Design window consists of a grid that is divided into three sections. Actually,
the window contains three sections, each of which contains its own grid. Later in this chapter,
you will learn about the different report sections.

You use the grids to specify what you want to appear in each section of the report. The idea is
to design your report by placing objects on the grid, in the section where you want them to
appear. Objects can be fields or things such as labels, buttons, controls, or other items. You
will learn how to place objects on the grid later in this chapter. These objects have properties
which tell Access how they should appear and behave.

Notice that the grids in each section are not very large. The default size for the page header
and footer is .25 inches, and the detail section is only two inches high. Regardless of the
section, the grid is the same width: five inches. If you want to increase the size of a grid, move
the mouse pointer over one of the outside borders of a grid. Next, hold down the mouse button
and drag the border to a new position. When you release the mouse button, the grid remains
enlarged.

Parts of a Report
You can see from looking at the Design window that a report is divided into sections. There are
five sections in any Access report:

• Report header
• Page header
• Detail
• Page footer
• Report footer

Each of these sections is independent of the others. You can place any object in any one of
these sections; it is up to you. Notice that when you first start to create a report, Access only
displays three of the five sections. You can control which sections Access displays using
choices under the View menu. If you choose Page Header/Footer, Access displays both the
page header and footer. Likewise, if you choose Report Header/Footer, Access displays those
sections. When you look at the Format menu, you may notice a check mark beside one or both
of these menu items. If the check mark is present, Access is displaying the section. To turn the
check mark off, select the option again. In response, Access removes the section from the
screen.

Report Header and Footer


This report section defines what appears at both the beginning and end of a report. The report
header information appears at the very beginning, before anything else--including the page
header. It might include preface information or information about who created the report.

The report footer appears at the end of a report, after the body but before the page footer. The
report footer is typically used for things like grand totals or final messages.

Page Header and Footer


Each page of your report can also have a header and footer. Headers and footers contain
information that you want to appear at the top and bottom of each page. The one exception is
the first page, where the page header appears after the report header information.

In the page header, you might include things like a page number or column heads. To increase
the amount of space that appears after the page header, but before the report detail, increase
the amount of white space on the grid after the last item in the page header. The opposite is
true for the page footer--to leave space between the detail and the page footer, increase the
amount of white space before the first item in the page footer.

Detail
You define the body of your report in the detail section. Within the report body, you list what
you want to appear for each record Access prints in the report. You will do most of your work in
the detail section.

Access also lets you create groups within the body of your reports. Basically, groups are a way
of sorting your report and creating subtotals. You can specify exactly how Access should group
your data, and whether Access should include additional headers and footers around a group.

Report Properties
As you know, Access uses properties to describe how an object appears or how Access is to
treat it. You also know that fields possess properties and that objects in forms have properties.
In addition, objects you place in your reports also have properties. The exact properties
available (and there can be dozens of them) depend on the object.

Note: Many of the properties for report objects are the same as properties for other
objects, such as fields. You may want to refer to Chapter 3, "Taking a Closer Look," for
more information about some properties.

In general, properties describe an object's attributes. For instance, an object's height, width,
and position are all properties. So are things like colors and font. Many of these properties
change as you simply place and work with the object.
There are two properties that are peculiar to objects on reports: Can Grow and Can Shrink
properties. When you place a Text Box object in the detail section of a report, Access assumes
you want the field or value assigned to the object to be printed. Access also assumes that you
want the object to take the amount of space you set aside by the size of the Text Box. The Can
Grow property tells Access to treat the Text Box differently. With this property set to Yes, the
vertical (up and down) size of the Text Box will grow on a record-by-record basis, if necessary.
This means that Access will not truncate the value in the Text Box. This is a great feature,
particularly if you are printing long strings or the contents of a Memo field.

The Can Shrink property works in the opposite manner. If there is nothing to print in the Text
Box, Access will close up any vertical space it can. Setting this property to Yes is helpful in
making your report look more professional--there won't be any glaring gaps in your report.

Note: If you want to discover how you can use a particular property, display the
Properties dialog box, select the property, and view the information in the status bar of
the Access program window. You can also use the Access online Help system to find
more information about properties.

Chapter 14: Creating Complex


Reports
(This is section 3 of 4 in this chapter)

Designing Your Report


Assume you want to create a report that lists all the accounts in the Business Customers table
you developed earlier in the book. To do this, you use the report Design window in much the
same way as you would use a paint or drawing program, and in a very similar manner to how
you created forms in Chapter 9, "Creating Custom Forms." You place an object, refine how it
looks, and then place another object. You repeat this process until you achieve the desired
effect.

Setting Up the Detail Section


To create your report, you first need to define the report's body. This may sound strange to
some, since there are other parts of the report that Access prints before the body. The reason
for this is quite simple, however. The position of information in the body of the report will
dictate the position of information in headers. With that in mind, you need to first decide what
you want Access to print in the report.

For this report, you will use the following fields:

• Company Name
• Address 1
• Address 2
• City
• State
• Zip Code
• Main Phone
• Account Opened

You could have included other fields , but this report is for general information. The other fields
are too specific for a general audience. Further, you may want to group the report by state. If
you group your customer data by state, your sales representatives can quickly identify their
regions' customers without having to sort or query the state.

With this information in mind, you can start to place the fields on your report. You do this by
using the mouse to select and drag a field from the Business Customers field list into the detail
section of your report. For instance, click your mouse on the Company Name field, and then
drag it onto the detail section of the report. When you release the mouse button, Access places
two objects on the form: a Label and a Text Box. The Label contains the Caption property for
the field, and the Text Box contains the name of the field itself, as shown in Figure 14-2.

Figure 14-2 Placing a field on the report.

When you place the field, Access automatically selects both objects (the Label and the Text
Box). Make sure that only the Label object is selected (when it is selected it will have the
handles around it), and then press the DEL key. This gets rid of the Label object. This is a good
idea since you don't want labels printed with every single record in the table. Instead, you will
later want them to appear as column headers in the page header section of the report.

After you delete the Label object, you should accomplish these tasks:

• Position the Text Box object so it is near the top left corner of the detail section.
• Make the Text Box object wide enough that it can print the widest company name in your table.
• If your printer will support them and you want to use them, change colors or other attributes of
the Text Box.

That's basically all there is to placing fields in your report. You place them, format them, and
go on to the next one.

Note: The placement and sizing of objects within your report is important. If an object
such as a text box or a label is not the right size, the text within the object will not print
fully. Make sure your objects are an appropriate size for what you want them to print.

You are now ready to place the address on the report line. You could place individual fields for
both Address 1 and Address 2, just as you did when you placed the company name, but that
would take quite a bit of space on the line. Instead, you can use an expression to combine the
two fields together and print them in a single text box. To create an expression, select the Text
Box tool from the toolbox. Then place the Text Box in the detail section of your report. Notice
that placing the Text Box automatically places a Label object, the same as when you drag-and-
drop field names. Delete the Label and select the Text Box. Then, display the Properties dialog
box for the Text Box, as shown in Figure 14-3.

Figure 14-3 Properties dialog box for a Text Box object.

To combine the two address fields, you must change the Control Source property. This is the
property that controls what Access displays in the Text Box. Normally, you would set this to
the name of a particular field in your table. In this instance, you are going to use an
expression. Select the property and enter the following:

=[Address 1] & IIf(IsNull([Address 2]),"",", " & [Address 2])

This expression may look complicated, but it is not really. Access lets you create expressions
based on field names (enclosed here within brackets) and functions. You will learn more about
functions in later chapters, when you learn more about macros and Visual Basic for
Applications. This particular expression simply tells Access that you want to display the
contents of the Address 1 field and (if Address 2 is not empty) a comma, a space, and the
contents of the Address 2 field. At this point, you can change the formatting of the Text Box in
the same manner as you did earlier for the company name.
You can apply the same sort of idea to the display of the next part of the address: the city and
state. Perform the steps you just finished to place the Text Box on the screen. Next, enter the
following expression in the Control Source property:

=[City] & ", " & [State]

This expression is much shorter; it combines the contents of both fields. This is perfectly
acceptable in this instance since you can feel reasonably sure that there will be a state listed
for each of your customers.

Place the text boxes for the remaining fields (Zip Code, Main Phone, and Account Opened). If
you desire, you can set the Format property of the Account Opened field so it displays a fuller
date on the report.

Note: If you need a refresher about the Format property, refer to Chapter 9, "Creating
Custom Forms."

When you are through placing fields and adjusting them, you should have six of them on the
screen. Adjust the details section grid so it does not take so much vertical room. Remember
that Access uses the size of the grid area to determine how much room to leave for each
record in the body of your report. As you placed the objects in the detail section, you should
also have adjusted the width of the report to fit your needs. Figure 14-4 shows what your
report Design window should look like.

Figure 14-4 The detail section of the report is complete.

Grouping Your Data


To finish out the body of your report, you still need to group your data by state. To group your
data, choose Sorting and Grouping from the View menu, or click your mouse on the Sorting
and Grouping tool on the toolbar. When you do, Access displays the Sorting and Grouping
dialog box shown in Figure 14-5.
Figure 14-5 The Sorting and Grouping dialog box.

Next, specify the field you want to use to control the grouping. Click your mouse on the pull-
down arrow at the right side of the cell and select the State field from the drop-down list. When
you do, Access displays a set of group properties at the bottom of the dialog box. These
properties control how Access handles the group. If you accept the default properties, Access
only sorts the report. You can, however, also instruct Access to include a group header or
footer. To see how these work, change the Group Footer property to Yes and then close the
Sorting and Grouping dialog box by clicking your mouse on the Close icon in the upper-right
corner of the dialog box. You will notice there is a new section on the report, as shown in
Figure 14-6.

Figure 14-6 After a group footer section has been added.

The group footer section (or the group header section, for that matter) is just like any other
header or footer. You use it to tell Access what you want printed at the end of every group. For
instance, you could print a count of the number of customers in each state. To do this, add a
Text Box at the right side of the group footer section. In the Control Source property for the
Text Box, you need to enter the following expression:

=IIf(Count([State])=1,"There is 1 customer in this state","There are " &


Count([State]) & " customers in this state")

This may seem like a long expression, but it displays proper grammar (There is versus There
are), depending on the number of customers in a state. With the entry of this expression, you
are done with the body of your report.

Setting Up the Page Header


You already know that a page header contains information you want Access to print at the top
of every page of your report. With this in mind, you should include information in the page
header such as recurring headings, page numbers, and column headings. For your customer
list, a page number and column headings will do fine. You can place most of these items using
the Label object.

Click your mouse on the Label tool (the one with the capital A in it). Next, start the label box
directly above the Company Name field, near the lower left corner of the page header section.
Make the label box wide enough to hold the column heading for the Company Name field; you
can always resize the box later. At this point, the Design window will look like what you see in
Figure 14-7.

Figure 14-7 After placing a Label object.

Access is waiting for you to type the text that should appear in the label. Type the words
Company Name and then press ENTER. The words should appear at the left side of the box
and handles will appear around the box. You can now format the label to your liking. You may
want to set each of these:

• Click your mouse on the Bold tool so the text is printed bold.
• Change the font or point size of the text.
• Change the color or shading of the text (if your printer supports those features and you want to
use them).

After you are through defining this label object, you can use the same technique to set the
other label objects in the page header section. Place labels for each of the following columns:

• Address
• City & State
• Zip Code
• Phone Number
• Customer Since

Don't forget to position the label boxes so they appear directly above the actual fields in the
detail section. Figure 14-8 shows what your Design window should look like when you are
done.

Figure 14-8 After adding the column heads.

There is still something uninspiring about the page header. In order to liven things up a bit,
you should place a line under the column headers. The line will serve to separate the headings
from the body of the report. To create the line, you use the Line tool in the toolbox. Select the
line tool, and then use the mouse to define the line. Hold down the mouse button at one end of
the line and release it when you have moved the mouse point to the other end. After you place
the line, you can use the tools on the toolbar to specify the line's thickness and type.

Using Other Objects


You have a pretty good idea of how the Label and Text Box objects will print on a report,
but it might not be quite clear how the other objects in the toolbox will print. For
example, you may not know how a check box or a toggle button will print.
When you print a report, Access is quite literal. If you place a check box on the report
grid, Access prints it on the report exactly like you placed it. The difference between the
use of these objects on a report and a form is simple. On a form, these objects let you
review and change data. On a report, the objects show the current state of your data.

Setting Up the Page Footer


Finally, you should add a page number to the report. Although there are a number of places a
page number can appear, the bottom right corner of every page is very acceptable for this
report (this is in the page footer area). Put a line at the top of the page footer area, and
position a Text Box at the bottom right corner of the page. (You can again delete the Label
object that Access always places with a Text Box.) Within this text box, place the following
expression in the Control Source property:

= "Page " & [Page] & " of " & [Pages]

This expression results in the current page number and the total page numbers printing on
every page (Page 1 of 13, Page 2 of 13, etc.). You can format the text with any font or point
size you want. You should also align the text so it is at the right side of the text box. To justify
the text at the right edge of the Text Box object, click your mouse on the Align Right tool. At
this point, your Design window should look like that shown in Figure 14-9.

Figure 14-9 The completed report.

Setting Up the Page


Even though your report is essentially done, you have one more minor item to complete. You
probably noticed that as you set up your report, each record required a fair amount of
horizontal space to fit everything. If you look at Figure 14-9, you can see that according to the
ruler at the top of the report Design window, the last field ends at just short of 9.5 inches. That
is too wide for a report that is printed in portrait mode; you need to instruct Access to print the
report in landscape mode.
To change the orientation of your page, simply choose Page Setup from the File menu. This
displays the Page Setup dialog box. Make sure the Page tab is selected, as shown in Figure 14-
10.

Figure 14-10 The Page Setup dialog box.

Click your mouse on the Landscape option button to inform Access how you want the report
printed. You should also adjust the other settings in the dialog box, particularly the margins, to
make sure that your 9.5-inch wide report will print on the page with no problems. You can then
change the other settings, if desired. When you are done, click your mouse on the OK button.

Viewing Your Report


To take a look at how your report is turning out, click your mouse on the View button on the
toolbar. Access displays what your report looks like in a manner that is very similar to print
preview. Figure 14-11 illustrates a sample of how this report will appear.
Figure 14-11 Reviewing the report.

When you are done reviewing the sample report, click your mouse on the View tool again to
return to the Design window. Many people, as they design reports, will switch back and forth
between the preview and Design windows to see how their design is progressing.

If you want to see what the report will look like when Access prints it, choose the File menu
Print option. Specify a printer and other print specifications, as you learned to do in Chapter 8,
"Creating Simple Reports." Access will send your report to your printer and will return you to
the Design window. Figure 14-12 shows an example of the printed report.
Figure 14-12 A printout of the report's first page.

Saving Your Report


When you are done creating or changing a report, you need to save it. When you close the
report Design window, Access will ask you if you want to save your report. The effect of
clicking your mouse on the Yes button varies, depending on whether you are editing or
creating a report. If you are editing, Access saves your changes under the same report name
as you used previously. If you are creating a report, Access will ask you to provide a report
name, as shown in Figure 14-13.

Figure 14-13 The Save As dialog box.

Type in a report name and select OK. Access will save the report, returning you to the
Database window.

Note: Access saves reports in your database in the same way that it saves other
database objects. Reports are an integral part of the database; Access does not save
them in a separate file. You can see what reports are available with a database by
selecting the Reports button in the Database window.

Chapter 14: Creating Complex


Reports
(This is section 4 of 4 in this chapter)

Summary
Access includes a built-in report designer that lets you easily and quickly define exactly what
you want in a report. This chapter has taken you beyond the simple reports you can create
with the Report Wizards. In this chapter, you have learned the full range of what Access can do
when you create reports from scratch.

Before you move on to Chapter 15, make sure you understand the following key concepts:

• You can display the report Design window by selecting the Reports button in the Database
window and then double-clicking your mouse on the Create Report in Design View option.
• You control the report Design window in much the same way as you control other Design windows
in Access. It also shares many of the same features, such as a toolbox, field list, and toolbar tools.
• There are two general categories of sections in a report: detail and header/footer. In the
header/footer category, there are three different types: report, page, and group.
• Objects you place in a report have properties which control how Access handles and displays
them.
• You can sort and group data in your report by clicking your mouse on the Sorting and Grouping
tool on the toolbar.
• To see how your report looks before you actually have it done, click your mouse on the View tool.
• Access automatically gives you the opportunity to save your report when you close the report
Design window.
In Chapter 15, you will learn about getting information into Access (importing) and getting it
out (exporting).

Chapter 15: Importing and Exporting


Information
(This is section 1 of 3 in this chapter)

One of the marks of a good neighbor is a willingness to cooperate with those around you.
Access is a good neighbor--using Access import and export capabilities, you can easily share
information with virtually any other program you can think of. In this chapter, you will learn
how to use those capabilities.

By the time you finish this chapter, you will understand the following key concepts:

• What data importing is


• What types of files Access can import
• How to import a file
• What data exporting is
• What types of files Access can export
• How to export a database object

Using Information from Other Databases


There are many different database programs on the market, and it is not unreasonable to
expect that some of these other programs have been used to accumulate quite a bit of data. If
you have some of this older data, you may want to convert it to an Access format. Also, you
may need to work with data stored in a different format by someone else in your company or
by one of your clients. Regardless of the reason why you have data in a different format,
Access will let you import information from a variety of formats into an Access database.

Importing data is the process of combining information from an external source (such as a
dBASE file) with information in the current database. To import data, you must already have an
Access database open; this is where Access will place the imported data. You also need to
know the format of the data you plan to import.

Picking a Source Format


To import data into an open database, choose Get External Data from the File menu. This
displays a submenu from which you should choose the Import option. Access, in turn, displays
the Import dialog box, as shown in Figure 15-1.
Figure 15-1 Picking a source file.

The Import dialog box is very similar to the standard Open dialog box used by Access. Perhaps
the most important feature, however, is the Files Of Type pull-down list at the bottom of the
dialog box. Using this pull-down list, you can specify which types of files Access should show in
the rest of the dialog box. Table 15-1 shows the various choices you can make with the pull-
down list.

Option Meaning
Microsoft
Source is another Access database
Access
Text Files Source is a text file
Microsoft Excel Source is an Excel spreadsheet
Exchange Source is a Microsoft Exchange address book
Outlook Source is a Microsoft Outlook address book
Lotus 1-2-3 Source is a Lotus 1-2-3 file
Lotus 1-2- Source is a Lotus 1-2-3 file from a DOS version of the
3/DOS program
Paradox Source is a Paradox database file
HTML
Source is a Web page
Documents
dBASE III Source is a database created in dBASE III format
dBASE IV Source is a database created in dBASE IV format
dBASE 5 Source is a database created in dBASE 5 format
ODBC
Source is any database that utilizes ODBC
Databases
Table 15-1 Import format selections supported by Access.
Select the option that corresponds to your source data. If you don't know, you may need to ask
whoever gave you the data. After you select a source format, use the controls in the rest of the
dialog box to select the file you want to convert. When you are ready to proceed, click your
mouse on the Import button.

The dialog boxes you see from this point forward will depend on the type of source file you are
importing.

Importing Access Files


Access lets you import objects from another Access database. If you are importing an Access
file, you will see the Import Objects dialog box, as shown in Figure 15-2.

Figure 15-2 Importing Access objects.

You use this dialog box to specify which objects you want to import. As mentioned earlier, you
can specify any type of database object you want. All you need to do is click on one of the tabs
that represents the category of object you want to import. The dialog box then displays any
objects of that category that are in the other database. You can then select the actual object to
import.

If you don't want to import an entire object, you can click on the Options button. Access
expands the Import Objects dialog box, as shown in Figure 15-3.
Figure 15-3 Controlling what is imported.

Using the controls in the bottom of the expanded dialog box, you can specify exactly how data
should be imported to the current database.

When you are ready to proceed, click your mouse on the OK button. Access copies the
specified information to your database.

Importing Delimited Text Files


There are two types of text files you can import into Access: delimited and fixed-width. These
file types differ only in how they separate fields. A delimited file has some special character,
such as a tab or comma, between fields. A fixed-width file uses a specific number of characters
for each field, often separating fields with spaces. This section covers how you import a
delimited file; importing fixed-width files is covered in the following section.

Note: If you are using a database program other than those which Access can import
directly, you can probably save information from the database in some sort of text or
ASCII format. If you can, you can easily import it into Access.

Access imports text files using a Wizard. When you specify a text file as your import source,
the Wizard is automatically started. Figure 15-4 shows the first dialog box used by the Wizard.
Figure 15-4 The Import Text Wizard.

Access has determined that the file contains delimited text. All you need to do is click your
mouse on the Next button. The Wizard displays the next step, as shown in Figure 15-5.
Figure 15-5 Specifying table information.

The exact composition of any delimited text file depends on the program used to create the
file. Some programs use tabs to separate fields, while others use a different character or
sequence of characters. This dialog box allows you to specify exactly which character is used
to separate the fields in your file.

You can also indicate whether the first row of the file contains the names of the fields in the
file. If this is the case, you should select the check box at the left side of the dialog box.

When you are ready to proceed, click your mouse on the Next button. The Wizard displays the
dialog box shown in Figure 15-6.

Figure 15-6 Where to store the information.

Here you are asked to specify how you want Access to treat the imported information. The
default is for Access to create a new table. Quite honestly, this is the best option to choose
unless you are very sure of the quality of the data you are importing. Remember, you can
always merge two tables together after you are sure the import worked properly. When you
are satisfied with your selection, click your mouse on the Next button. The Wizard displays the
dialog box shown in Figure 15-7.
Figure 15-7 Controlling individual fields.

This dialog box allows you to control how Access imports each field from the source file. You
can step through the fields and specify at the top of the dialog box how that particular field
should be treated. You can even tell Access to ignore a particular field (select the check box) if
you don't want to use it.

Stepping through the individual fields and indicating what data types should be used and other
characteristics may seem like a time-consuming task. It does take a while, but your data will
be in much better shape after the import if you take the time to provide the specifications now.

When you are satisfied with how the importing of fields is to be done, click your mouse on the
Next button. The Wizard displays the next dialog box, shown in Figure 15-8.
Figure 15-8 Picking a key.

Access gives you the opportunity to use keys in your data tables. You learned about keys in
some detail in Chapter 13, "Understanding Data Relationships." This dialog box allows you to
specify how a key should be handled for the import file. You have three choices, controlled by
option buttons at the top of the dialog box:

• Let Access decide. This option causes Access to add a key field that utilizes the AutoNumber
data type. This is a common way to create key fields.
• Pick a field. This option allows you to specify which field from the import table should be
considered a key field.
• Ignore the key. This option means that no key field is specified for the table.

When you have made your selection, click your mouse on the Next button. The Wizard displays
the final dialog box, shown in Figure 15-9.
Figure 15-9 Indicating a table name to use.

The major purpose of this dialog box is to provide a way for you to specify the name to be
assigned to the table created by the Wizard. Indicate a table name, and then click on Finish to
complete the importing. When the import is complete, Access informs you it is done.

Note: At the bottom of the dialog box shown in Figure 15-9 is a check box that allows
you to analyze your imported data table. This option, if selected, runs the table analysis
feature described in Chapter 10, "Using Additional Tools."

You may have noticed that each dialog box used by the Import Text Wizard included an
Advanced button at the bottom. This button, if selected, allows you to set additional
parameters which Access will use when importing the textual information. When you click your
mouse on the Advanced button, the Wizard displays the dialog box shown in Figure 15-10.
Figure 15-10 The Specifications dialog box.

You use this dialog box to set the complete specifications for importing a particular type of text
file. You can see in Figure 15-10 that the dialog box contains all the specifications set by
working through the previous steps in the Wizard.

The value of setting specifications for a file type is evident if you routinely import a consistent
type of text file created by a different application. You can save the specifications in a file
(notice the Save As button), and then recall them as a group when you need to import the next
file. In most instances, you will not need to change these import options.

Importing Fixed-Width Text Files


A fixed-width text file is one that uses spaces to separate columns. These types of files are
common if you have a program that produces reports destined for an older monospace printer.
(Monospace means that every character has the same width as every other character.) If you
are importing a fixed-width text file, the process is very similar to when you import a delimited
text file. The first Import Text Wizard dialog box you see is shown in Figure 15-11.
Figure 15-11 Importing a fixed-width text file.

Access has figured out that the file is fixed-width in nature, and is asking for your concurrence.
All you need to do is click on the Next button. The Wizard displays the dialog box shown in
Figure 15-12.
Figure 15-12 Confirming column breaks.

In this dialog box you are asked to confirm the column breaks that Access has figured out. The
vertical lines in the bottom of the dialog box indicate column breaks. When the actual
importing is done, Access considers each column an individual field in the resulting table. All
you need to do is scroll through the table and make sure that the column breaks, as noted, are
correct. You can move column marks by clicking on them with the mouse pointer and dragging
them left or right. You can delete a column marker entirely by double-clicking your mouse on
it.

When you are satisfied with the position of the column marks, click your mouse on the Next
button. The Wizard displays a dialog box asking you to indicate where the imported
information should be stored. This is the same dialog box shown in Figure 15-6. From this point
on, the Wizard is exactly the same as the Import Text Wizard for a delimited text file. You can
refer to the previous section to continue the importing.

Importing Excel Files


When you choose to import an Excel spreadsheet file, and you have specified a file name,
Access displays the Import Spreadsheet Wizard dialog box, as shown in Figure 15-13.
Figure 15-13 The Import Spreadsheet Wizard dialog box.

All you need to do in this dialog box is indicate which worksheet or named range of cells you
want to import to Access. The dialog box lists each available worksheet or range, and you can
see what they contain by clicking your mouse on them. The contents appear at the bottom of
the dialog box.

When you have selected what you want to import, click your mouse on the Next button. The
Wizard displays the dialog box shown in Figure 15-14.
Figure 15-14 The Import Spreadsheet Wizard dialog box.

At the top of the dialog box, you can indicate whether the first row of the worksheet contains
field names. Select or clear the check box, as appropriate, then click your mouse on the Next
button. The Wizard displays the dialog box shown in Figure 15-15.
Figure 15-15 Where to store the information.

Here you can indicate whether you want Access to create a new table with the imported
information. For most worksheets, this will be the only option you can choose. The exception is
when the worksheet you are importing has the same number of columns as there are fields in
one of your existing Access tables. You can simply click your mouse on the Next button to
proceed to the next dialog box, shown in Figure 15-16.
Figure 15-16 How to process fields.

This dialog box allows you to control how Access imports each column from the worksheet. You
can step through the columns--which correlate to fields in Access terminology--and specify at
the top of the dialog box how that particular field should be treated. Simply click on a column,
then change the settings at the top of the dialog box. You can even tell Access to ignore a
particular field (select the check box) if you don't want to use it.

When you are satisfied with how the importing of columns is to be done, click your mouse on
the Next button. The Wizard displays the next dialog box, shown in Figure 15-17.
Figure 15-17 Picking a key.

Access gives you the opportunity to use keys in your data tables. You use this dialog box to
specify how a key should be created for the table Access is creating. You have three choices,
controlled by option buttons at the top of the dialog box:

• Let Access decide. This option causes Access to add a key field that utilizes the AutoNumber
data type. This is a common way to create key fields.
• Pick a field. This option allows you to specify which column from the worksheet should be
considered a key field.
• Ignore the key. This option means that no key field is specified for the table.

When you have made your selection, click your mouse on the Next button. The Wizard displays
the final dialog box, shown in Figure 15-18.
Figure 15-18 Indicating a table name to use.

The major purpose of this dialog box is to provide a way for you to specify the name to be
assigned to the table created by the Wizard. Indicate a table name, and then click your mouse
on Finish to complete the importing. When the import is completed, Access lets you know it is
finished.

Importing Lotus Files


Lotus 1-2-3 is a popular spreadsheet program that is still widely used. Because Lotus 1-2-3 is a
spreadsheet program, Access lets you import its files in much the same fashion as when you
import Excel files.

When you start to import a Lotus 1-2-3 file, the import Wizard asks you to specify what you
want to import from the file. In the various dialog boxes used by the Wizard, you specify the
information to import, indicate how it should be converted, instruct Access what to do about a
key for the table, and then provide a table name.

When you are done importing, you will be able to use the Lotus 1-2-3 data in Access, the same
as you would any other database table.

Importing Paradox and dBASE Files


Importing these types of files is perhaps the easiest importing you can do. This is because
after you select a file name and click on the Import button, Access imports the file right away--
there are no other dialog boxes to work through. Access stores the file in a table with the same
name as the file you are importing. Access then returns you to the file selection dialog box.
You can select another file, or you can click on Close to return to the Database window.
Chapter 16: Ensuring Data Security
(This is section 1 of 7 in this chapter)

As you work with Access, over time you invest quite a bit into your databases. You develop
forms, reports, and queries that allow you to manage your data just as you desire. These
efforts take time. You validate your data and make sure that it is correct and that all
redundancy is removed. These efforts take more time. In addition, the data itself takes time
and money to acquire.

The result is that at some time you are going to realize that your data has value--real value--to
your company. At some point you are going to be faced with the necessity of safeguarding
your database. Fortunately, Access includes some security features you can use to heighten
the security of your data. In this chapter, you learn how to use those features.

By the time you finish this chapter, you will understand the following key concepts:

• Different levels of security you can use in Access


• How to set a database password
• What it means to encrypt a database file
• How to configure user-level security
• How to work with accounts and permissions
• How to use the User-Level Security Wizard

Setting a Database Password


If your databases are used primarily in a single-user environment, then a good place to begin
your security efforts is with a password for your database. By "single-user environment," I
mean that your database is used by a single person at a time, not necessarily the same
person. Thus you could work on it this morning, and a coworker could use it later in the
afternoon, but you are not both using it at the same time.

If, instead, there are multiple users working with your data at the same time, then you will
need more powerful and flexible security measures, as covered later in the chapter in the
section on users and groups. If you are developing a single-user database, then you should
apply the ideas in this section. You can always increase security measures at a later time.

Note: Password-protecting your database is also a good option if the database contains
sensitive data. For instance, personnel pay records or your company's secret formulas.

Setting a password for your database is analogous to adding a deadbolt to the front door of
your house. The purpose is to keep unauthorized people from entering the house. Once the
deadbolt has been bypassed, however, the full contents of the house are open to the intruder.

It is the same way with a database password. The entire purpose of the password is to make it
more difficult for someone to open your database. Once open, however, the data in the
database is entirely open to the user. (Later in this chapter you will learn how you can actually
encrypt your database, which is a much more secure method of protecting your data, instead
of just protecting the front door.)
Because the database password opens all the data to a user, this means that the password is
just as important as the key to the deadbolt on your house. You should not leave it lying about
where others can see it and figure out what it is for. You should also be sure that you use a
password that is at least moderately difficult for someone to guess.

Adding the Password


You can define a password for a database by first closing the database. Make sure you stay in
Access, but close the database that you want protected. Then choose the Open option from
the File menu. This displays the familiar Open dialog box, as shown in Figure 16-1.

Figure 16-1 Picking a database to protect.

You should use the controls in the dialog box to select the file you want to protect. Simply click
your mouse on the file so it is selected or the name appears in the File Name box; do not
actually open it yet. Then click your mouse on the down-arrow to the right of the Open button.
This displays a menu of four different ways you can open the database file you have specified.

Select the Open Exclusive option. Access opens the database, as directed. So far, however,
there is nothing different about the database. You can work with it as you would any Access
database. You now need to inform Access of the password you want to use. Do this by
selecting the Security option from the Tools menu. This displays a submenu from which you
should choose Set Database Password. Access displays the Set Database Password dialog box,
as shown in Figure 16-2.
Figure 16-2 Specifying a password.

In the Password box, enter the password you want to use. Pay particular attention to the way
you type the password, as uppercase and lowercase are considered important. You will also
need to enter the same password again in the Verify box. When you are ready to proceed, click
your mouse on the OK button.

The password is now set. You can continue using the database as you normally would. When
you are done working with the database, simply close it.

Using the Password


Once you have password-protected a database, that database cannot be opened unless you
first supply the password. The password is stored with the database, so if you copy the
database elsewhere or move it to a new location, the password is moved as well. When
someone tries to open the database, Access displays the dialog box shown in Figure 16-3.

Figure 16-3 You must enter a password before opening a database.

At this point, simply enter the password. This should be entered exactly as when first defined.
Thus, if you entered the password of "MyPassword", you should not try to use "mypassword."
Upper- and lowercase is significant in your password. If you enter the wrong password, Access
displays a dialog box warning, as shown in Figure 16-4. You can then click your mouse on OK
and try to enter the password again.

Figure 16-4 Access informs you if you use the wrong password.
Once you successfully enter your password, you can use the Access database as you normally
would. If you close the database, you will again need to reenter the password before working
with the database.

It is particularly important to realize that if you forget the password you assigned to a
database, you simply won't be able to use the database. Microsoft provides no method or
utility that will help you gain access to a database for which you don't know or have forgotten
the password. This has important ramifications in a corporate environment where an employee
could password-protect a database, and then leave the company or become unavailable after
an accident. If others may eventually need access to a database, it is best to write down
passwords and store them in a secure place.

Note: If you absolutely need access to a file for which the password has been lost, you
may be able to find a third-party utility that will remove the password. Search the
Internet for such utilities by using keywords such as "Access" and "password" and
"removal."

Removing the Password


At some point you may wish to remove a password you assigned to a database. For instance,
the data may no longer be considered sensitive, or you may want to remove the password and
reassign a new one. To remove a password, you need to open the database for exclusive
access. Close the database, and then choose Open from the File menu. This displays the Open
dialog box, as shown earlier in Figure 16-1. Select the database whose password you want to
remove, then click your mouse on the down-arrow to the right of the Open button. From the
resulting menu, choose Open Exclusive.

At this point you are asked to enter the password for the database. Enter it as you normally
would, and Access opens the database, as expected. Now all you need to do is choose Security
from the Tools menu, and then choose Unset Database Password from the resulting submenu.
Access displays the dialog box shown in Figure 16-5.

Figure 16-5 You need the password in order to remove the password.

Enter your password in the Password box, and click your mouse on the OK button. Access
dismisses the dialog box, and your database is unprotected.

Note: Anyone who has the password for a database can remove that password. Thus, if
you share a database password with a coworker, both you and the coworker can remove
the password.
Chapter 16: Ensuring Data Security
(This is section 2 of 7 in this chapter)

Using Database Encryption


One of the drawbacks of password protection (which you learned about earlier in this chapter)
is that it protects only the front door of your database. If someone chooses to not use the front
door, often they can uncover the data stored in your database. For instance, someone could
load your database into a third-party utility or a word processing program and see the raw
data stored there.

One way around this problem is to use data encryption. This simply means that the information
in a database is "scrambled" using a mathematical algorithm so that it cannot be understood
by any application other than Access. This option is particularly useful if you are going to send
the database to a different user, and you want to make sure it is secure during transmission or
transport.

Note: Encryption, by itself, does not stop someone from opening a database in Access.
Thus, encryption does little good if it is used without some other form of protection, such
as a database password. Make sure you use encryption with some other form of
protection, as well.

To encrypt a database, make sure you don't have any databases open. You cannot encrypt a
database if it is open. Choose the Security option from the Tools menu. Access displays a
submenu from which you should choose Encrypt/Decrypt Database. Access then displays the
Encrypt/Decrypt Database dialog box, as shown in Figure 16-6.
Figure 16-6 Picking a database to encrypt.

All you need to do is use the controls in the dialog box to select the database you want to
encrypt, and then click your mouse on the OK button. Access then displays the Encrypt
Database As dialog box, shown in Figure 16-7.

Figure 16-7 Specifying a name for the target file.

Here you need to supply a name (and optionally a different location) for the encrypted
database that Access is going to create. The original database is not affected; only the newly
created file is encrypted. Once a name has been provided, clicking your mouse on the Save
button starts the actual encryption process. When completed, you have two versions of the
database: one encrypted and one not. From this point you should use one or the other, but not
both. Remember that you can still use an encrypted database in Access, the same as you
would use a regular database.

Chapter 16: Ensuring Data Security


(This is section 3 of 7 in this chapter)

Working with Users and Groups


Access includes an advanced form of user security that is based on essentially the same
concepts used in protecting computer networks: users and groups. You can define users,
organize those users into groups, and then assign different permissions to the groups.
Microsoft refers to this approach to security as user-level security. In reality, this type of
security is built-in to Access, and turned on all the time. You may not realize it, of course,
because everyone starts out as an Administrator, able to do anything in Access. When you fully
implement user-level security, you are simply "demoting" certain users from their original
Administrator status to a regular user status, and limiting what they can do in the databases to
which they have access.

When you use user-level security, you have complete control over who has access to not only
databases, but also individual objects within a database. Users are required to supply both a
user name and password to access information. The simplicity or complexity of the security
system is left entirely up to you.

Note: User-level security is typically set up on a company-wide level. If your company


has standardized on Access for data management tasks, you may already have a user-
level security system in place. In this case, the information in the balance of this chapter
will be of little use. If you want to better understand the security system you are using,
speak with your network administrator.

Understanding Workgroup Information Files


In implementing user-level security, Access relies on workgroup information files. When you
first install Access, a default workgroup information file is created on your system. Later, if you
set up user-level security on the system, you can modify the default workgroup information file
or create a new workgroup information file for a particular database. The file indicates which
users and groups have which permissions for a particular database and its objects.

Changes to a workgroup information file are done using the Workgroup Administrator program.
A workgroup information file contains the following predefined accounts:

• Admin. This is the default user account, and is exactly the same for every copy of Access.
• Admins. This is a group account whose members are allowed to administer the Access database.
There must be at least one user account in the Admins group at all times. When first created, the
Admins group contains only a single user account, which is the Admin account.
• Users. This is a group account whose members are allowed to use the Access database. When a
new user account is created by an administrator, that user is added to the Users group
automatically.

You can add additional user accounts or group accounts to any workgroup information file,
provided you have Administer permissions for the database. Because the Admin account is
available in every copy of Access, the first step in securing any database is to create additional
administrator accounts and then remove the Admin account from the Admins group. In this
way, anyone using the Admin account (any plain-vanilla Access user) will belong to the Users
group instead of the Admins group.

Understanding Permissions
Access to specific databases and the objects in a database are granted based on what
permissions have been granted to a user. There are two types of permissions understood by
Access: explicit and implicit permissions. Explicit permissions are those granted directly to a
user account, while implicit permissions are those inherited by a user account based on its
membership in a particular group.
The rights which a user enjoys are defined by the least restrictive of a user's explicit and
implicit permissions. Thus, if a user is permitted to view a particular database object by virtue
of belonging to a particular group, but an explicit permission granted to the user allows him or
her to modify that object, then the modification permission is least restrictive, and the one that
is enjoyed by the user.

For most purposes, it is best to stick strictly with implicit permissions. These are the most
flexible type of permissions, and the easiest to administer. For instance, if you have user
groups set up along company organizational lines, you may have different groups for sales and
marketing. When a person changes jobs at the company and moves from sales to marketing, it
is a simple matter to move their user account from one group to the other. The account then
inherits the permissions of the group of which it is a member. If you instead used explicit
permissions, you would need to modify the individual permissions granted to the user when
the switch was made.

There are a number of different permissions which can be used in Access. The exact
permissions which are available depend on the object in question. Some permissions are
applicable to databases as a whole, while others are applicable only to individual objects within
a database. Table 16-1 details the different permissions you can use in Access.

Permission Meaning Applicable Objects


Databases, forms,
Open/Run Allows user to open an object
reports, macros
Open Allows user to open an object for exclusive
Databases
Exclusive access
Read Allows user to look at objects in Design Tables, queries, forms,
Design view reports, macros
Modify Allows user to look at and change objects Tables, queries, forms,
Design in Design view reports, macros
Databases, tables,
Allows user complete control over an
Administer queries, forms, reports,
object
macros
Read Data Allows user to look at data Tables, queries
Update Allows user to look at and change existing
Tables, queries
Data data, but not add or remove records
Allows user to look at existing data and
Insert Data Tables, queries
add new records
Allows user to look at existing data and
Delete Data remove records, but not change existing Tables, queries
data or add records
Table 16-1 Permissions in Access.

A member of the Admins group for a particular database can change permissions for any
object in that database. In addition, permissions for a particular object can be changed by the
owner of that object (generally the person that created the object) or by anyone who has
Administer permission for the object.

Chapter 16: Ensuring Data Security


(This is section 4 of 7 in this chapter)

Using the User-Level Security Wizard


As you can probably imagine, setting up user-level security can be an overwhelming task.
Fortunately, Access includes a User-Level Security Wizard which can pay attention to the
details for you and get you started. The Wizard implements a rather simple security system,
based on only two groups: Administrators and Users. For many implementations of Access,
particularly in small companies, this may be more than adequate. If you have more complex
security needs, then using the User-Level Security Wizard can provide a good starting point for
your security efforts.

To start the Wizard, make sure you have opened the database you want secured. Then choose
the Security option from the Tools menu. On the resulting submenu, choose the User-Level
Security Wizard option. The Wizard begins, displaying the first dialog box, shown in Figure 16-
8.

Figure 16-8 The Security Wizard dialog box.

Here you are asked if you want to create a new workgroup information file for your database.
Typically, this is a good idea. In fact, if this is the first time you are using the User-Level
Security Wizard, it may be the only option you can choose (see Figure 16-8). Click your mouse
on the Next button to proceed to the next step, as shown in Figure 16-9.
Figure 16-9 Specifying a workgroup ID.

As you will learn later in this chapter, when you create a workgroup information file, you must
assign it a unique workgroup ID (WID). The WID must be between 4 and 20 characters in
length, and you can set it to any value you desire. When you use the User-Level Security
Wizard, Access can create a WID for you automatically, as you can see in Figure 16-9. This
dialog box gives you the opportunity to change the WID if you so desire. For now, you should
accept the default WID. Later in this chapter you will learn how to create workgroup
information files for yourself, and the ramifications of selecting a WID.

You can also specify in this dialog box other information about how the workgroup information
file should be created and how Access should treat it. If you want, you can specify the new file
to be the default workgroup information file (not a particularly good idea), or you can create a
desktop shortcut to open this secured database (this is quite handy).

To continue, click your mouse on the Next button. Access displays the dialog box shown in
Figure 16-10.
Figure 16-10 Picking objects to be secured.

When you run the User-Level Security Wizard, it assumes you want to secure all the objects in
the database you had open when you ran the Wizard. The purpose of this dialog box is to give
you the opportunity to specify which objects you don't want secured. You should use the tabs
in the dialog box, along with the check boxes beside each database object, to indicate any
objects you don't want secured. Unless you have a compelling reason to not secure an object,
it is generally a good idea to leave them all secured. If you need to change the permissions for
a specific object at a later time, you can do so using the information provided later in this
chapter.

Click your mouse on the Next button to proceed to the next step of the Wizard. Access displays
the dialog box shown in Figure 16-11.
Figure 16-11 Creating optional user groups.

Earlier in this chapter you learned a bit about user groups. The User-Level Security Wizard
allows you to easily create additional user groups that have different permissions to use your
database. This dialog box allows you to specify which additional groups are to be created.
Remember that the Wizard automatically creates both an Admins group and a Users group,
besides those you select here.

You can select which ever groups you feel compelled to use. If you do not envision assigning
any users to a particular group, then it makes no sense to create that group. Make your
selections and click your mouse on the Next button to go to the next step. Access displays the
dialog box shown in Figure 16-12.
Figure 16-12 Assigning permissions to the Users group.

The default Users group created by the Wizard has a certain number of permissions granted to
it. You can modify which permissions the Wizard assigns by using the dialog box shown in
Figure 16-12. Click your mouse on the Yes option button to change the permissions, and then
use the tabs and the check boxes to make your changes. (You may want to refer back to Table
16-1 to refresh yourself on what each permission does.) When you are done, click your mouse
on the Next button to proceed to the next step. Access displays the dialog box shown in Figure
16-13.
Figure 16-13 Creating users in the workgroup information file.

Using this dialog box you can identify the names of the individual users you want created for
your workgroup information file. By default, you are created as a user, but no one else is
identified. If you know the names of the people that will be working on this particular database
file, create user accounts for each of them here. All you need to do is enter the user name in
the User Name box, and supply a password in the Password box. It is best to let Access
generate the PID (personal ID) for each user you define, although you can override the PID
with one of your own choosing.

Another task you should do is to select your own user account in the dialog box and change
the password for that account. The default is for the Wizard to set up your account without a
password, but good security practice dictates that you set up a password. The reason is quite
simple. Anyone who does a little bit of study of how Access handles security (for instance, if
they read this chapter), understands that the administrator's account is set initially to be the
name of the person that runs this Wizard. (In Figure 16-13 you can see that this is me, Allen.)
Someone could figure out my name and simply provide that name when they log in to Access.
Without a password, there is nothing to stop them from doing this. Not setting a password for
this account would be a huge hole in your security plans.

It is good to remember that you can always add users to the workgroup information file at a
later time, if desired. Once all your users are defined and you have set your own password,
click your mouse on the Next button to proceed. Access displays the dialog box shown in
Figure 16-14.
Figure 16-14 Assigning users to groups.

Now you get to assign users to specific groups. If you did not create any optional user groups,
this step is very easy. By default, users belong to the Users group, so the only thing you need
to do is pick which other groups they belong to. The easiest way to do this is to choose the
Select a Group and Assign Users to the Group option button. Then you can use the pull-down
list to pick each of your groups in turn. The check boxes in the body of the dialog box are then
used to signify which users belong to each of the groups.

When you are done, click your mouse on the Next button. Access displays the final step of the
Wizard, as shown in Figure 16-15.
Figure 16-15 Naming your backup file.

In this step you simply indicate the name you want to use for your backup database file. The
backup is created, of course, in case you want to delete the new secure database and start
over with the unsecured version. (It also comes in handy in case the power goes out while the
Wizard is applying your security settings to the database.)

In most cases you can simply select the default backup file name. When you click your mouse
on the Finish button, Access secures the database. Access also creates a report that shows
what security was applied to the database. Access displays this in a print preview window, as
shown in Figure 16-16.
Figure 16-16 The Wizard's security report.

It is interesting that the name of the report is "One-step Security Wizard Report." Not only is
this not the name of the Wizard (it is the User-Level Security Wizard), but there was more than
one step involved in using the Wizard. Regardless, the information in the report is very
beneficial. Thus, it is a good idea to print the report and file it in a secure location. That way
you always know how security was applied to the database.

Chapter 16: Ensuring Data Security


(This is section 5 of 7 in this chapter)

Opening a Secured Database


Once you have applied user-level security to a database, the database can only be opened in a
very specific way. The database is still available from the Open dialog box, but it cannot be
accessed from that dialog box. If you try to do so, Access displays an informational dialog box,
as shown in Figure 16-17.
Figure 16-17 You cannot access a secured database directly.

Instead, you must access the database using the shortcut the Wizard created on your desktop.
When you double-click your mouse on the shortcut, Access is started and the proper Logon
dialog box is displayed (see Figure 16-18). All you need to do is provide your name (if it is
different than what is shown) and your password. You can then click your mouse on the OK
button and access the database according to the permission levels granted you.

Figure 16-18 Logging in to a secure database.

Chapter 16: Ensuring Data Security


(This is section 6 of 7 in this chapter)

Managing Security Accounts


As you are working with the user-level security features of Access, there will be many times
when you will need to perform management tasks to fine-tune the security. The following
sections describe many of the security-related tasks you can perform.

Creating a New Workgroup Information File


There may be times when you want to create a new workgroup information file for use in
Access. For instance, you might want to create one from scratch that will be used in a
database you are creating in the future. When you installed Access, a special program was also
installed that allows you to create workgroup information files. This is called, oddly enough, the
Workgroup Administrator program. To run the program, follow these steps:

1. Exit Access completely.


2. Locate the file wrkgadm.exe on your hard drive. You may need to use the Find feature of Windows
to locate the file.
3. Run the program. Figure 16-19 shows what the program interface looks like.
Figure 16-19 Creating a workgroup information file from scratch.

To create your new workgroup information file, click your mouse on the Create button.
Workgroup Administrator asks you for three pieces of information:

• Name. Your name.


• Organization. Your company name.
• Workgroup ID. This is the WID discussed earlier in the chapter. This can be any unique string,
between 4 and 20 characters in length. You need to take care that you remember what WID you
assign to a particular workgroup information file, as it is needed to do some administrative tasks.
It is your knowledge of what the WID is that identifies you as an authorized person to perform
some tasks.

When you have supplied all this information, click your mouse on the OK button. Workgroup
Administrator asks you to specify where the file should be created and under what name. You
can indicate any location desired, although the Workgroup Administrator suggests the location
of the other workgroup information files on your system. When you click your mouse on the OK
button, Workgroup Administrator displays the information you entered (see Figure 16-20) and
asks you to confirm it.

Figure 16-20 Confirming your workgroup information file specifications.


When you click your mouse on the OK button, Workgroup Administrator creates the requested
workgroup information file and informs you it is done. When you are done with the program,
simply click your mouse on the Exit button.

Adding an Account
You can add an account to a database that has been secured relatively easily, provided you
logged on to the database using an administrator account. All you need to then do is choose
Security from the Tools menu and then choose User and Group Accounts from the resulting
submenu. Access displays the User and Group Accounts dialog box, as shown in Figure 16-21.

Figure 16-21 The User and Group Accounts dialog box.

To add a new account, click your mouse on the New button. Access displays the New
User/Group dialog box, which asks for two pieces of information:

• Name. The name of the new user account you are adding.
• Personal ID. This is a unique identification string, between 4 and 20 characters in length. It
serves to internally identify the account to Access.

When you have supplied the information, click your mouse on the OK button. Access adds the
user account, as directed.

Adding a new group account is very similar. All you need to do is click your mouse on the
Groups tab in the User and Group Accounts dialog box (Figure 16-21), and then click on the
New button. The same two pieces of information are requested for new group accounts as are
requested for new user accounts. Supply the information and click your mouse on OK to add
the account.

Removing an Account
To remove an existing user account, you start from the same User and Group Accounts dialog
box shown in Figure 16-21. Using the pull-down Name list, select the account you want to
delete. Then click your mouse on the Delete button. Access asks you to confirm your deletion.
When you click your mouse on the Yes button, the account is removed.

The only difference in removing a group account is that you must first click your mouse on the
Groups tab. Otherwise, all the steps are the same.

Changing Account Permissions


As you learned earlier in this chapter, you can assign permissions to specific objects to either
individual users (explicit permissions) or to groups (implicit permissions for the users in that
group). To change permissions, all you need to do is log an as an administrator and choose the
Security option from the Tools menu. On the resulting submenu, choose User and Group
Permissions. Access displays the User and Group Permissions dialog box, as shown in Figure
16-22.

Figure 16-22 The User and Group Permissions dialog box.


If you want to specify explicit permissions for an individual user, all you need to do is select the
user in the left side of the dialog box and the desired object in the right side. Then you can
modify the permissions at the bottom of the dialog box.

If you instead want to work with implicit permissions, click your mouse on the Groups option
button in the middle of the dialog box. Then, the left side lists the groups you have defined.
Pick a group, pick an object, and set the permissions at the bottom of the dialog box.

Changes in permissions take effect immediately after you click your mouse on the OK button.

Printing a Security Overview


After you make any major changes in the security configuration for a database, you will want
to print out a list of users and groups. All you need to then do is choose Security from the Tools
menu and then choose User and Group Accounts from the resulting submenu. Access displays
the User and Group Accounts dialog box, as shown earlier in Figure 16-21. You can then click
your mouse on the Print Users and Groups button. Access responds by displaying the Print
Security dialog box, as shown in Figure 16-23.

Figure 16-23 The Print Security dialog box.

All you need to do is specify whether you want to print a report on users, groups, or both.
When you have made your selection, click your mouse on OK. Access prints the requested
report directly to your default printer. (It is interesting that Access doesn't first display the
report in a print preview window, as it does with all other reports.)

The report produced by Access shows a list of users with the names of the groups to which
they are assigned. It then lists the names of the groups, along with all the users for that group.
Unfortunately, the report does not show what permissions each user has. For that information,
you are strictly limited to working on-screen.

Chapter 16: Ensuring Data Security


(This is section 7 of 7 in this chapter)

Summary
Data security is a huge topic, and of pre-eminent concern in many organizations. Access
includes a full-featured security system that you can use to make sure your data is as secure
as desired. This chapter has covered the highlights of ensuring the security of your data. If you
are interested in more information, you may want to refer to a specialized book on the topic.
Before moving on to Chapter 17, make sure you understand the following key concepts:

• You can protect a database file by assigning a password to the file. This protects the file from
unauthorized access.
• Database encryption can protect a file from being viewed with third-party tools, but is of little use
without password-protecting the file.
• User-level security is implemented through the use of user and group accounts, workgroup
information files, and permissions.
• Access provides a User-Level Security Wizard that can help you quickly apply user-level security
to a database.
• If you have administrator privileges for a database, you can quickly and easily add or remove user
and group accounts.
• You can change permissions for different users and groups on an object-by-object basis for a
database.

In Chapter 17, you will learn how to how to use object linking and embedding (OLE) to place
graphics, audio clips, and even videos within your database.

Chapter 17: Using OLE


(This is section 1 of 5 in this chapter)

In Chapter 15, "Importing and Exporting Information," you learned how Access can be a "good
neighbor" by sharing data with other programs. In this chapter, you will learn how Access can
work with other programs in a different way--by letting you link or embed information within a
table. In short, this chapter teaches you how to take advantage of OLE, object linking and
embedding, from within Access.

By the time you finish this chapter, you will understand the following key concepts:

• What OLE is and how it works


• What types of objects you can use with Access
• How to insert objects in your table
• How to modify links between Access and other programs
• How to edit objects you have linked to Access

What is OLE?
OLE (sometimes pronounced o-lay) is an acronym for object linking and embedding. When you
use this technology in a program such as Access, you can combine information from different
applications into your tables. For instance, you can combine text from a word processor (such
as Word), spreadsheets or graphs from Excel, and graphics, sound, or video from a wide
variety of sources--all within a single database.

There are actually two parts to OLE. The first is object linking and the second is object
embedding. Object linking means that you can establish a dynamic connection or link between
Access and another program. The magic of this link is that Windows ensures that any changes
to the linked data are updated automatically within your Access database. For example, if you
link an Excel chart into your table and later modify the spreadsheet data (from within Excel) on
which the chart is based, the linked chart within your Access table automatically changes to
reflect the modifications. If you had linked the chart to seven different tables, each table will
automatically show the change.

Object embedding means you can insert information created by another application into your
Access tables. Object embedding is different from object linking in two ways:

• When information is embedded, it consists of both the representation of the information (perhaps
a chart) and the data that makes up the information (for example, spreadsheet values used to
create the chart).
• Embedded objects are not updated dynamically, but you may update them manually. You update
an embedded object by double-clicking your mouse on the object with your mouse. Double-
clicking your mouse on the object activates it and launches the application used to create it. You
can then change the information and update the document in which the object is embedded. For
example, if you embed an Excel chart within your table, double-clicking your mouse on the chart
will cause Excel to run with the spreadsheet data preloaded. When you exit Excel, the chart will
reflect any changes you made.

As you work with OLE, there are a number of terms you will come across. Some of them may
seem quite foreign, but don't let that confuse you. As with any technology, there is always a
series of special words you must understand. With OLE, there are three particular terms whose
meaning you need to know:

• Client. A program that lets you link or embed information from other programs.
• Server. A program that lets you create information that can be used by a client.
• Object. Information that is exchanged between a server and a client.

As you examined the OLE terms, you may have gotten the idea that there are programs that
provide information (servers) and those that receive it (clients). This is true, although some
Windows programs have the capability to act both as a server and as a client. The extent to
which a program implements OLE is up to the program's developers. Thus, some of your
programs may be able to function as an OLE server, but not a client; some may not support
OLE at all. Access has the capability to act as an OLE client. This means you can take
information from other OLE servers, such as Excel, and insert it in your Access tables.

What Are Objects?


Notice that the definition of an object is fairly general. An object is information an OLE server
program exchanges with OLE clients. The object definition is general on purpose, since objects
really are nothing but information. Examples of objects include pictures, video, sound, text,
images, or virtually anything else you can think of.

Don't confuse OLE objects with database objects. Throughout this book, you have learned
about database objects and how to use them. Database objects include tables, queries, forms,
reports, macros, data access pages, and modules. These are not OLE objects, however. In the
Access environment, a program other than Access creates the OLE objects. Access simply
stores the OLE object in a table.

Types of Objects Available


OLE is a programming specification, and any program that adheres to the specification can
take advantage of OLE technology. This means that there is not a finite number of programs
that implement OLE--any program can do it. The program's developers define the program's
OLE capabilities.

A possible problem with OLE is the fact that not everyone has the same programs installed on
their systems. For instance, there is a pretty good chance you have Access (most readers of
this book will), and you probably have Excel and Word (since you probably have the Microsoft
Office 2000 package). But that is about it. No other assumptions can be made about your
system and what is on it.

So how do you find out what objects are available to you? It is quite easy, really. When you
install a program under Windows, the program lets Windows know whether it can support OLE
and to what extent. Windows stores this information in a registration database and uses it
when you want to insert an object in your table. For example, when you are creating a form,
you can choose the Object option from the Insert menu. When you do, Access displays the
Insert Object dialog box shown in Figure 17-1.

Figure 17-1 The Insert Object dialog box.

The programs listed in the dialog box are those which registered with Windows as OLE servers.
(Remember that your program list will probably be different from the one shown here.) This
means that any of these programs can create objects (information) which you can link with or
embed in your table. Later in this chapter, you will learn more about how to insert objects in
your tables.

Chapter 17: Using OLE


(This is section 2 of 5 in this chapter)

Putting Objects in Your Table


To place OLE objects in one of your Access tables, you need to define a field to hold the object.
To do this, Access provides a special data type called OLE Object. You may remember this data
type from Chapter 2, "Access in an Hour." This is the only data type you can use to store OLE
objects.

As an example of how to use this data type, assume you are going to set up a database to
keep track of your graphical images. You have created a database, which has the layout shown
in Figure 17-2.

Figure 17-2 Layout of the Images database.

The last field in this layout, Image, is the OLE field. Notice that the field's data type is OLE
Object. This field can contain any object linked to or embedded from an OLE server.

Note: The companion CD-ROM included with this book includes a file called Images
1.mdb. You can copy this database file to your hard drive (use the name Images.mdb) for
the purposes of this chapter, if you would like.

Inserting an Existing Object


There is a form in the Images database called Review Images. If you open this form, you will
see that it lets you leaf through a small, image collection. If you want to add an image to this
collection, simply move to the last record. The form should appear as shown in Figure 17-3.
Figure 17-3 Ready to input a record.

Click your mouse on the image area and then choose the Object option from the Insert menu.
Access displays the Insert Object dialog box shown earlier in Figure 17-1. This is the general-
purpose object insertion dialog box. Since you want to insert an object from an existing file,
click your mouse on the Create from File option at the left side of the dialog box. Notice that
quite a few options change; the dialog box now looks like that shown in Figure 17-4.
Figure 17-4 Inserting an existing file.

Access uses the dialog box to ask you for the name of the file you want to insert. Type in the
name of a graphic file, or click your mouse on the Browse button to find the file on your disk.
Make sure that the file you provide has a program associated with it that can function as an
OLE server. Remember, Access will let you insert objects only if they were created or
manipulated with an OLE server.

For example, when I installed Microsoft Office 2000 on my system, Internet Explorer 5 was
automatically installed at the same time. IE5 can be used as an OLE server. This program can
be used to view many of the common types of files found on the Internet, including many
graphics files. When IE5 was installed on my system, it registered the common file types with
Windows so that the operating system knew which program could be used to load and view
those types of files. Since IE5 is an OLE server, I can insert images it can display into Access.

Having found the file I want to insert as an object, all I need to do is click my mouse on the OK
button. Windows takes care of the rest; it recognizes that the graphics file I am inserting is one
of the types handled by IE5. It therefore inserts an IE5 icon in my database to show that there
is an active OLE link between the image and the program Windows thinks should handle the
image. This icon is shown in Figure 17-5.
Figure 17-5 After inserting an image.

With the image inserted, the other fields in the database record can be modified to indicate
the proper information for the image. When you are done, you can move on to another record
or close the form window entirely.

Inserting a New Object


Inserting a new object comes in handy if you are creating objects on the fly. One practical use
for objects is as sound annotation for your database. If you have a sound card with a
microphone hooked up, you can add "verbal comments" (annotations) to your records. Such
annotations could come in handy when you later want to review what you thought about a
particular item.

In addition, verbal comments are often more effective than those typed into a field. This is
because you can use your voice to express emotion; it is impossible to do that effectively with
the written word.

Figure 17-6 shows an example of how a sound annotation can be added to a form. Notice that
the sound shows up as a regular sound icon in the small OLE object field. (Windows doesn't do
a great job of centering icons in the available space, so the icon looks a bit off-center.)
Figure 17-6 The Images file with sound annotation added.

To add such a field, all you need to do is add another field to the table with the OLE Object
data type. Then, modify the form design to position the field in the proper place. When you
later use the form, all you need to do is select the sound annotation field and choose the
Object option from the Insert option. Access will display the Insert Object dialog box; you
should scroll though the Object Type list until you select the Wave Sound object, as shown in
Figure 17-7.

Figure 17-7 The Insert Object dialog box.

When you click your mouse on the OK button, Access starts the OLE server (the Sound
Recorder). You can then record your comments. When you close the recorder, Access saves
your comments as part of the Images database.
Creating an Editable Link
You also can use the Windows Clipboard to insert a linked image into your database. Assume
you are working with an Excel worksheet, and you create a chart (see Figure 17-8). You are so
impressed with the chart that you decide you want to save it for posterity in your Image
database.

Figure 17-8 The Excel worksheet and chart.

While you could establish an OLE link with the chart as you have done previously in this
chapter, you can also use the Clipboard to save the chart. To do so, perform these steps:

1. Use your mouse to select the Excel chart.


2. Choose the Copy option from the Edit menu, or press CTRL+C to copy the chart to the Clipboard.
3. Switch to the window containing Access. Display the record where you want to save the chart.
4. Select the image area in the record.
5. Choose the Paste Special option from the Edit menu. Access displays the Paste Special dialog box,
shown in Figure 17-9.
Figure 17-9 The Paste Special dialog box.

1. Choose the Paste Link option, on the left side of the dialog box.
2. Click your mouse on OK. Access pastes the image into the database, as shown in Figure 17-10.
Figure 17-10 The pasted image.

Depending on the application you are copying information from, the Paste Special dialog box
can contain many different formats in which you can save your image. When the original
image comes from an OLE server program, at least one of the formats will always be the name
of the OLE server program. To establish the best relationship between the server and Access
(the client), you should pick the link option and the OLE server program format. Later in this
chapter, you will learn how you can edit the links you set up in this section.

Changing Object Icons


You may have noticed that when you start dealing with OLE links, Access can be very slow to
refresh your screen. Access slows down because of the amount of information that it must
process to display each screen. This slow down is particularly evident when you are working
with large graphic files. To minimize this condition, you can tell Access to display your objects
as icons instead of as actual images.

Displaying an object as an icon will speed up how fast Access can display information. It also
will make your database less visual, meaning the object's purpose won't always be readily
apparent. To use icons instead of actual images, take another look at the Insert Object dialog
box shown in Figure 17-11.

Figure 17-11 The Insert Object dialog box.

Notice the Display As Icon option on the right side of the dialog box. If you pick one of the
object types and then select the Display As Icon option, you will notice a change in the dialog
box, as shown in Figure 17-12.

Figure 17-12 After selecting the Display As Icon option.

If you select a different object type, the icon that Access will use for an object will change to
represent the different source. You can also change the icon by clicking your mouse on the
Change Icon button. When you do, Access displays the Change Icon dialog box, as shown in
Figure 17-13.
Figure 17-13 The Change Icon dialog box.

The number of different icons available varies from program to program; there is no standard
amount. For instance, this program file (for Paintbrush) has many different icons available. You
can select the icon that suits you best.

Note: If you don't like the icons available in the current program file, click your mouse on
the Browse button to look through other files for icons. You might try looking through the
file MORICONS.DLL in the Windows subdirectory. It contains quite a few different icons.

When you are done picking an icon, click your mouse on the OK button. Access returns you to
the Insert Object dialog box, where you can complete the object insertion. Click your mouse on
OK from the Insert Object dialog box to insert the object in the database. In this case, Access
only displays an icon, as shown in Figure 17-14.
Figure 17-14 Icon displayed instead of an image.

Chapter 17: Using OLE


(This is section 3 of 5 in this chapter)

Modifying Links
There are three different ways you can insert an OLE object into an Access database:

• As an editable link
• As an active link
• As an object with no link (an embedded object)

So far you have learned about each of these ways, but you may not know how to change the
status of the links. The following sections will teach you this information.
Editable Links
To change the status of an editable link, select the OLE object and then choose the OLE/DDE
Links option from the Edit menu. When you do, Access displays the Links dialog box, as shown
in Figure 17-15.

Figure 17-15 The Links dialog box.

Note: If Access lists no links for your object in the Edit Links dialog box, your object
probably has only an active link. The following section discusses how you can change the
status of an active link.

To modify an editable link, use your mouse to select the link in the Links list box. You can then
edit the link in any of these ways:

• At the bottom of the dialog box, change how the link is updated (from Automatic to Manual or
back again).
• Click your mouse on the Update Now button to force an immediate update.
• Click your mouse on Open Source to pull up the program that created the object. You can then
change the object and resave it in Access.
• Click your mouse on Change Source to pick a different object for linking in this field. This is done
with a Change Source dialog box, which is very similar to the familiar Open File dialog box.
• Click your mouse on Break Link to change the object status. Once a link is broken, it cannot be
replaced. The image no longer has a link and is just a picture in the database.

When you are done modifying your link, click your mouse on the OK button to return to the
database.

Active Links
The only thing you can do with an active link is to break it. To break a link, select the Edit
menu Object option.

Note: The Object option is the last item on the Edit menu. Its full name will typically be
something else, such as "Hijaak Image Object" or "Spreadsheet Object."
When you select this option, Access displays a submenu. The options available on the
submenu will depend on the type of object you have selected. There will typically be an Edit
option (which calls up the linked OLE server) and a Convert to Picture option. Regardless of the
type of object you have selected, you use this last option to break any links between the object
and the OLE server. After you choose this option, you will not be able to edit or change
anything about the object.

No Links
To place an object with no links, use the Clipboard and then choose the Edit menu Paste
Special option. In the Paste Special dialog box, choose the Paste option. Effectively, the object
becomes a regular image, and, as such, it cannot be edited. If you try to select the OLE/DDE
Links option from the Edit menu, Access will not allow you to since there are no existing links.

Chapter 17: Using OLE


(This is section 4 of 5 in this chapter)

Editing Objects
Under OLE technology, you can edit an object that is linked to your Access table in any one of
three ways:

• Double-click your mouse on the object.


• Choose the Edit menu Object option, then choose Edit from the submenu.
• Click your mouse on the Open Source button in the Edit Links dialog box.

Obviously, the first option of double-clicking your mouse on the object is the easiest. For
example, if you wanted to edit the spreadsheet chart you placed in the database earlier, all
you need to do is double-click your mouse on it in the Access database. Excel will then start
and display the original spreadsheet and chart, as shown in Figure 17-16.
Figure 17-16 Editing an OLE object.

When you finish making changes in the data or in the chart, exit the program. Both the original
data and the chart in your database will be updated.

Note: You cannot edit an object unless there is at least an active link between the object
and a program that can manipulate the object.

Chapter 17: Using OLE


(This is section 5 of 5 in this chapter)

Summary
OLE lets you take advantage of the strengths of other programs. Using OLE, you can manage
the data (objects) from those programs through Access. In this chapter, you have learned what
OLE is and how it is implemented in Access.
Before you move on to Chapter 18, make sure you understand the following key concepts:

• OLE is an acronym for object linking and embedding. It is a technology that permits you to
dynamically insert information from other programs into your Access tables.
• Access is an OLE client, meaning it accepts information prepared by OLE servers. The information
that Access accepts is an object.
• There are literally dozens of different programs which can be OLE servers. This means there are
just as many different types of objects you can embed or link to your tables.
• You can place objects in any Access field which is set to the OLE Object data type.
• You insert objects in Access using the Edit menu Insert Object option. You can also insert objects
using the Clipboard.
• You can use the OLE/DDE Links option from the Edit menu to modify links between objects in your
table and a server program.
• You can edit linked objects by double-clicking your mouse on the object field. This starts the
server program (if necessary) and lets you make any changes you desire. When you are done, the
original information and the information in the Access table are both updated.

In Chapter 18, you will learn how you can use macros to automate many of your routine
Access tasks.

Chapter 18: Creating and Using


Macros
(This is section 1 of 6 in this chapter)

As you work more with Access, you will discover many ways you can tailor your Access
environment to your needs. One of the ways Access lets you simplify tasks is with macros. In
short, a macro is a recording of the steps you perform to accomplish a specific task.

For example, to print a table, you select the File menu Print option and then choose OK within
the Print dialog box. Using an Access macro, you record these steps. Later, you can play back
your macro and Access will automatically perform the steps for you. As you will learn, you can
write macros that perform simple or complex tasks.

By the time you finish this chapter, you will understand the following key concepts:

• What macros are and how you can use them


• What actions and arguments are
• How to create macros
• How to use the Macro window
• What it means to create conditional macros
• How you can execute a macro
• How to link a macro to a command button on a form
• How to edit existing macros

What Are Macros?


You have probably heard the term "macro" before. In general, a macro is nothing but a series
of commands an application program executes. Macros help you automate tasks within a
program such as Access. Macros let you program your software without requiring you to learn
or even understand the basics of writing a program. For example, both Word and Excel include
macro languages you can use to automate a series of commands. When you record and then
execute a macro, the macro typically mimics the steps a user would take when manually using
a program.

Access also has a macro language you can use. Access has 53 macro actions; you can pass
values (called arguments) to a macro action to control the operations the action performs. (An
action is an instruction that directs Access to perform a specific act, such as selecting an
option from a menu.) Table 18-1 lists the different macro actions available.

Action Purpose
Adds a drop-down menu to a menu bar. Used in forms and
AddMenu
reports.
ApplyFilter Applies a filter to a table.
Beep Sounds the PC speaker.
CancelEvent Cancels the event that ran the current macro.
Close Closes a window.
CopyObject Copies a database object.
DeleteObject Deletes a database object.
Echo Controls whether a macro updates the screen.
Finds the next record meeting the search criteria specified in a
FindNext
FindRecord action.
FindRecord Finds a record that meets your criteria.
GoToControl Changes focus to a particular control.
GoToPage Changes focus to a specified page in a form.
GoToRecord Jumps to a specified record.
Controls whether the mouse pointer is displayed as an
Hourglass
hourglass.
Maximize Same as clicking your mouse on a window's maximize button.
Minimize Same as clicking your mouse on a window's minimize button.
MoveSize Moves or resizes a window.
MsgBox Displays a message box.
OpenDataAccessPa
Opens a data access page.
ge
OpenDiagram Opens a diagram showing the layout of the database.
OpenForm Opens a form.
OpenModule Opens a Visual Basic for Applications module.
OpenQuery Opens an existing query.
OpenReport Opens an existing report.
OpenStoredProced
Opens and runs a stored SQL procedure.
ure
OpenTable Opens an existing table.
OpenView Opens a database view.
OutputTo Exports data in either Excel or text format.
PrintOut Prints a database object.
Quit Quits Access.
Rename Renames a database object.
RepaintObject Redraws a database object on the screen.
Requery Updates the information in a control.
Restore Same as clicking your mouse on a window's restore button.
RunApp Runs a Windows or DOS program.
RunCode Executes a Visual Basic for Applications function.
Executes an Access command, such as those on the menu or
RunCommand
toolbar.
RunMacro Executes another macro.
RunSQL Executes an SQL statement.
Save Saves an Access object.
SelectObject Selects a named object.
Sends information to the keyboard buffer, as if it had been
SendKeys
typed.
SendObject Sends a database object using E-mail.
SetMenuItem Changes the state of a menu item.
SetValue Specifies the contents of a field, control, or property.
SetWarnings Controls the display of system messages.
ShowAllRecords Removes the effects of a filter.
ShowToolbar Displays a particular toolbar.
StopAllMacros Stops execution of all macros.
StopMacro Stops the current macro.
TransferDatabase Imports or exports information.
TransferSpreadshe
Imports or exports to a spreadsheet program.
et
TransferText Imports or exports to a text file.
Table 18-1 The Access macro actions.

Note: To see detailed help on any particular macro action, search for the action name in
the Access online Help system.

Chapter 18: Creating and Using


Macros
(This is section 2 of 6 in this chapter)

Creating Macros
Before you start to create a macro, you should have a firm idea of the task you want to
accomplish; you may even want to write the steps down or create an outline. Thus, the general
steps in creating a macro are as follows:

1. Identify the task you want to accomplish.


2. Plan the steps you must perform to manually accomplish that task.
3. Create the macro code necessary to implement the steps.
4. Test the macro code.
5. Refine your macro code.
6. Repeat steps 4 and 5 until the macro works correctly.

As you work with macro actions, you will notice that most of them require arguments.
Arguments are nothing more than values that affect how an action is carried out. Since actions
most often mimic the menu commands you select manually, think of arguments as the
settings you specify within the dialog boxes the menu commands display.

You create macros by using the Macro window, which is described in the following section.

Understanding the Macro Window


The Macro window is where you tell Access the actions you want the macro to perform. To
access the Macro window, you simply select the Macros button in the Database window and
then click your mouse on the New button. As you can see from Figure 18-1, the Macro window
is similar to the other Access Design windows. The Macro window includes two columns; in the
left column, you specify the action you want done, and, in the right column, you include a
comment that explains this particular macro step.

Figure 18-1 The Macro window.

Picking the actions you want the macro to perform is as easy as choosing them from a drop-
down list. Simply click your mouse on the arrow at the right side of any action cell, and Access
will display the available macro actions. After you have selected an action, you can modify the
action's arguments. The arguments appear at the bottom of the Macro window, similar to
properties in other Design windows. For instance, Figure 18-2 shows the arguments for the
OpenForm action.

Figure 18-2 Arguments for the OpenForm action.

Once you understand actions and arguments, you can use the Macro window like any other
Design window in Access. You can add information, manipulate it, and save it using the same
commands. For instance, you can add rows to the macro window using the Rows option from
the Insert menu. Conversely, you can delete rows by using the Delete Rows option from the
Edit menu. In this case, when you add or delete a row, you actually add or delete an Access
action.

A Macro to Automate Adding Records


Note: This rest of this chapter uses the My Friends.mdb database you used in several
chapters of this book. If you do not have a copy handy, you may want to use the Friends
3.mdb database located on the companion CD-ROM. You should copy the file to a
directory on your hard drive and rename it My Friends.mdb.

As an example of how you can use a macro, assume you have a large number of records in the
My Friends table. When you use your data entry form, you may find it a nuisance to go through
the steps necessary in order to get to where you can add a new record. To get around this, you
can develop a macro that will automatically open the form and take you to the end of the
table.
Since you've already decided exactly what you want to do, your next step is to decide how the
macro will do it. Examining the task, you figure out you want to:

• Turn off screen updating (the changing screens are distracting)


• Open the Review Friends form
• Jump to the last record
• Turn on screen updating

To begin, display the Macro window. The first action you will use is Echo. The Echo action lets
you control whether Access displays what your macro is doing (shows the screen updates).
Normally, when a macro action occurs that affects the screen, Access updates the screen right
away. In addition to being distracting, screen updates can slow macros down since you must
wait for Access to update the screen after each step. The Echo action lets you turn screen
updating off. In this way, Access won't update the screen until you later turn screen updating
back on.

To begin, select the first row in the Action column of the Macro window. Click your mouse on
the pull-down arrow at the right side of the column, and you will see the list of available
actions, as shown in Figure 18-3.

Figure 18-3 Selecting an action for your macro.

Scroll through the list until you find the Echo action. When you click your mouse on the action,
the list disappears and Access displays the Echo action in the Macro window. Notice, also, that
Access displays the arguments for the Echo action at the bottom of the Macro window. There
are only two arguments for Echo; the first one lets you indicate if Echo is on, and the second
lets you display some information for the status line. To turn off screen updates, set the first
argument to No. The second argument--the Status Bar Text argument--may take a bit of
explaining.

If you leave the screen updates off, someone using the macro may wrongly believe that their
computer has hung. After all, when Access is busy executing your macro, it will not respond to
the user. One way you relieve user anxiety is to display a message letting them know what is
going on. You use the Status Bar Text argument to display, in the status bar, a message that
informs the user that a macro is executing. With that in mind, type the text Preparing
information; one moment please... When you are done, the Macro window should appear
as shown in Figure 18-4.

Figure 18-4 The first step of your macro is complete.

At this point, you may also want to add a special feature for those who use your macro and
have slow computers. For the next macro action, you can make Access change the mouse
pointer from the regular arrow to an hourglass. The hourglass is a universal Windows symbol
that indicates something is going on and the user should wait. You can do this with the Access
Hourglass action. Select the next empty row (the second one) in the Action column. Again,
click your mouse on the pull-down arrow and select the Hourglass action. Notice that this
action has only one argument--one that controls whether Access displays the hourglass or not.
When the argument is set to Yes (as it is by default), Access displays the hourglass. Set the
Hourglass action's argument to Yes and move on to your third macro action.
In the next step, you want Access to open the form you use to input information in the My
Friends table. To open the form, you use the OpenForm action. Move to the third row in the
Action column and select the OpenForm action. As you can see in Figure 18-5, the OpenForm
action has quite a few arguments.

Figure 18-5 Arguments for the OpenForm action.

At a minimum, you need to fill in the Form Name argument, which tells Access the form you
want to open. When you select this argument, notice that Access displays a pull-down arrow at
the right side of the argument box. If you click your mouse on this arrow, you can select one of
the forms defined in the database. Select the Review Friends form.

There are other arguments available for the OpenForm option, as follows:

• View. This argument defaults to the Form view, exactly as it should be (you want to display the
form). You can change this argument to other modes, such as Datasheet, Design, or Print
Preview.
• Filter Name. You can apply a saved query or filter to the information the form displays. Since
you are only going to be adding information, simply leave this argument blank.
• Where Condition. Another way you can filter the information available in the form is to use an
SQL Where clause. You can use these clauses to select records in much the same way as you
would use a filter. Again, leave this blank.
• Data Mode. Here you specify one of three choices: Add, Edit or Read Only. Add allows you to add
records using the form. Edit lets you change information in the form and add records, and Read
Only lets you view but not change the records. While you can select either Add or Edit mode to
allow the addition of records (the purpose of the macro in the first place), it is best to pick Edit in
this instance, since it gives you the most versatility.
• Window Mode. Controls how Access displays the window. Your choices are Normal, Hidden, Icon,
and Dialog. Normal (the default) displays the window as designed by the form designer. Hidden
removes the window from view. Icon minimizes the window to the size of an icon. Dialog makes
the window pop up as a dialog box.

You can set all of these, if you wish, but there is really no need to do so, other than the Data
Mode argument. Once done, you are ready to move to the next step. In the fourth row of the
Action column, you need to select an action that will let you enter a new record. To do so,
select the GoToRecord action. Access, in turn, will list four arguments in the Macro window.
You need to set only one of these arguments (Record).

Normally, the Record argument is set to Next, which means Access selects the next record.
There are other options available for this argument, however:

• Previous. Selects the previous record.


• Next. Selects the following record.
• First. Selects the first record in the table.
• Last. Selects the last record in the table.
• Go To. Lets you specify a record you want selected.
• New. Lets you enter a new record.

The final option (New) is the one which will accomplish your goal of letting the user enter a
brand new record. Make the change to the argument, and your macro is essentially complete.
There are still a few "clean up" steps which you will want to include, however. For instance,
you need to redisplay the screen updates (using the Echo action) and change the mouse
pointer back to normal (using the Hourglass action). Go ahead and add these actions, in this
order. Your completed macro should now look like what you see in Figure 18-6.
Figure 18-6 The completed macro.

Saving Your Macro


Now that the macro is complete, go ahead and close the macro window. Access, in turn, will
ask if you want to save your macro. Select Yes, and Access displays the Save As dialog box
(Figure 18-7) to allow you to name the new macro.

[Insert HOA1807.BMP]
Figure 18-7 Naming the macro.

Use a descriptive macro name, such as Add New Record. When you press ENTER or click
your mouse on the OK button, Access saves the macro and updates the Database window. At
this point your macro is ready for use.

A Special Macro
The name you provide for your macro is important. Besides providing a descriptive name,
you can also use the special name AutoExec. If you do, Access will automatically run the
macro every time you start Access. You use an automatic macro when you want to do
any of the following:
Automatically configure Access for use
Automatically run a special program tied into the macro
Automatically load a project you are working on
If you don't want the AutoExec macro to run when you start Access, simply hold down the
SHIFT key when you start the program.
Chapter 18: Creating and Using
Macros
(This is section 3 of 6 in this chapter)

Conditional Macros
When Access runs a simple macro, Access begins at the macro's first action and performs each
action, one after another, in the order the actions appear in the Macro window Action column.
As your macros become more complex, you may want them to make decisions, based on
specific conditions. For example, if a file does not exist, you may want the macro to end.

You let macros make such decisions by adding conditions to your macros. These conditions
determine when certain macro actions run. For example, assume you want to create a macro
to automatically generate a report of the records in the My Friends table. You created a report
to do this in Chapter 8, "Creating Simple Reports," so all you need to do is make a simple
macro that will run the report. The condition you will check now is whether there are any
records in the table to print. If there are no records, you will want to exit the macro without
printing anything. With this in mind, the steps for your macro would be:

• Check to see if records exist. If no records exist, stop the macro.


• Turn off screen updating
• Print the report
• Turn on screen updating

To begin, display the Macro window. Notice that there are only two columns, Action and
Comment. To add conditional statements to your macro, you need to add a third column. To do
so, click your mouse on the Conditions tool (to the left of the Insert Rows tool) or choose the
Conditions option from the View menu. Access changes the Macro window to look like that
shown in Figure 18-8.
Figure 18-8 Access displays the Condition column.

In the Condition column, you specify expressions that tell Access when it should execute the
actions you specify in the Action column. For a review on Access expressions, turn to Chapter
3, "Taking a Closer Look." Condition expressions are the same as those you use in validation
rules, filtering, and sorting.

For the first step of this macro, you will want Access to determine if there are any records to
print. You do this using the DCount function in the macro. The DCount function determines the
number of records that meet a specific criteria. When you use DCount in the following
conditional statement, DCount returns the number of records in the entire table:

DCount("*","My Friends") = 0

Enter this condition in the first row of the Condition column. If the count of records in the My
Friends table is equal to 0, the condition is True, and Access will execute the action on that
row. As you'll recall, if there are no records in the table, you want the macro to end. To end the
macro, you can use the Stop Macro action. Type in StopMacro in the Action column. At this
point, your Macro window should look like that shown in Figure 18-9. (Notice that there are no
arguments for the StopMacro action; it simply stops the macro.)
Figure 18-9 The conditional and its action have been entered.

You can now enter the rest of the macro's actions. You already know how to enter the actions
that turn off the screen updating (the Echo action) and change the mouse pointer to an
hourglass (the Hourglass action); you used these actions in the previous macro. When you are
done entering these two actions, you should be ready to enter the fourth action--the one that
will print the report.

To print a report, use the OpenReport action. In the fourth row of the Action column, select this
action; your Macro window will appear as shown in Figure 18-10.
Figure 18-10 After entering the fourth macro step.

There are two arguments for the OpenReport action which you must set. The first, Report
Name, is where you identify the name of the report you want to use. If you select this
argument, you can click your mouse on the pull-down arrow at the right of the argument box.
When you do, you can select from the reports you have defined in your database. Select the
My Friends, Alphabetic List report (this is the only one you have defined).

The View argument lets you indicate how you want Access to handle the report. If you click
your mouse on the pull-down arrow for this argument, you can see that there are three
options:

• Print. Prints the report immediately. This is the default setting for the View argument.
• Design. Displays the Design window for the report.
• Print Preview. Shows the report in print preview, after which the user can print, if desired.

In this case, the default option (Print) should be selected. This argument causes Access to
immediately print the report. The other two arguments for the OpenReport action are Filter
Name and Where Condition; these arguments serve the same purpose as they did when you
used the OpenForm option earlier in the chapter. For this macro, you can leave both of these
arguments blank.

When Access finishes printing the report, Access leaves the Report open on the screen. The
user won't know this, of course, since the macro has turned the screen updating off. But you
will want to close the report so Access won't display it when the macro turns the screen
updating back on. To close the report you use the Close action. Select this action in the fifth
row.

The Close action, by default, closes the object currently active. You can, however, specify that
it close another object by using the three arguments available with the Close action. You
should always be as specific as possible when you design a macro. As such, set the arguments
to specify the object you want closed (the report). To do this, select the first argument, Object
Type, and then click your mouse on the pull-down arrow to its right. You will see a list of
different types of objects in the database. Select the Report object and then move on to the
next argument.

The Object Name argument lets you specify which particular object you want closed. Again,
click your mouse on the pull-down arrow and you will see a list of the Report objects available
in the database. Choose the My Friends, Alphabetic List report.

The Save argument allows you to specify whether Access should save the object when it is
closed. This is an important argument, if either your macro changed the object or you allowed
the user to change it. In the case of this macro, however, there are no changes. Thus, you can
change the Save argument to No. Your Macro window should now look like what you see in
Figure 18-11.

Figure 18-11 After closing the report.


Your macro now contains the actions to print and close the report. Now you need to turn on
screen updating and to change the mouse pointer back to normal. Your macro performs these
steps using the same actions as earlier (Echo and Hourglass). Add these two actions to your
macro now. Your Macro window should appear as shown in Figure 18-12.

Figure 18-12 The completed macro.

You have now completed your first macro that uses a conditional argument. All you need to do
now is save it. Again, to save you macro, close the Macro window and provide a macro name.
In this case, use a name such as Print Report. Access will then return you to your updated
Database window.

Chapter 18: Creating and Using


Macros
(This is section 4 of 6 in this chapter)

Running Macros
It is quite easy to run macros in Access. You can run macros directly or add them to a form.
This section describes how to run a macro directly, while the next section will cover how to add
a macro to a form.

You can run a macro directly in the same way that you would execute or open any other
database object. Select the Macros button in the Database window, and then double-click your
mouse on the macro name. (You could also select the macro name and click your mouse on
the Run button.) For instance, if you double-click your mouse on the Add New Record macro,
your screen will appear as shown in Figure 18-13.

Figure 18-13 Running a macro.

Notice that your macro worked as you have planned; Access has opened the Add New Records
form and prepared it to receive a new record. The macro is actually done at this point, and you
can use the form window as you normally would.

Adding a Macro to a Form


When you learned how to create forms (in Chapter 9, "Creating Custom Forms"), you learned
that one of the objects you can place on your form is a command button. You can use this type
of button to execute macros very nicely. In this section, you will learn how to add such a
button to your forms.

To begin, assume you want to create a macro that will print the contents of a particular record
in your database. This is an easy macro, entailing the following steps:

• Change the mouse pointer to an hourglass


• Print the form
• Change the mouse pointer back to normal

You know how to do the first and last steps, but perhaps not the second one. To print an object
in Access, you use the PrintOut action. When you first select the PrintOut action, the default
arguments cause it to print the currently selected database object--all of that object, meaning
every record in the form. Since you only want to print a record, you should change the Print
Range argument to Selection; this will cause only the current record to print.

Create a macro called Print Form now. Your macro should contain the three steps just
described: Hourglass, PrintOut, and Hourglass again. After you save the macro, you will be
ready to add it to a form.

Next, click your mouse on the Forms button in the Database window. Access displays the
forms in your database. Select the Review Friends form. When you click your mouse on the
Design button, you will see the Design window for the form, as shown in Figure 18-14.
Figure 18-14 The form Design window.

At this point, you should turn off the Control Wizards button in the toolbox. (This is the button
in the upper-right corner of the toolbox.) It is important to turn Control Wizards off so Access
does not run a Wizard when you use the Command Button tool. It is better, at this point, that
you understand how to set up a command button directly.

After you turn off the Control Wizards button, choose the toolbox Command Button tool. Place
a command button in the lower-right corner of your form. Your button will appear as shown in
Figure 18-15.

Figure 18-15 The new command button.

Go ahead and double-click your mouse on the button so you can see the Properties dialog box.
There are quite a few properties which are available for this control. Most of them are fine just
the way they are, but you will want to change a few of them.

First, change the Name property (on the Other tab) to something descriptive, such as Print
Form. This helps you remember the purpose of the control and can come in handy if you later
refer to the control. Next, select the Picture property on the Format tab. Setting this property
lets you select a graphic image for the face of your button. When you click your mouse on the
builder icon (...) to the right of the property, you will see the Picture Builder window shown in
Figure 18-16.
Figure 18-16 The Picture Builder window.

Scroll through the pictures in the Available Pictures list, and you will find one that says Printer.
Select this picture and click your mouse on the OK button. Access makes the button look like a
printer icon. This icon helps the user understand the button's purpose. The Picture Builder will
disappear, and you should again see the Properties dialog box.

The next property to change is the one that controls what happens when someone clicks the
mouse on the command button. Display the Event tab and select the On Click property. If you
select the pull-down arrow to the right of this property's box, Access displays a list of macros
available. Select the Print Form macro you developed at the beginning of this section.

You are now done setting this control button's properties. When you close the Properties dialog
box, Access displays the form Design window as shown in Figure 18-17.
Figure 18-17 The finished form design.

Close the Design window, saving the new form design as you do so. To test the button, open
the form, select a record, and click your mouse on the button. Access, in turn, should provide
you with a printout of the form on the screen. Notice, as well, that the button shows up on the
printout.

Chapter 18: Creating and Using


Macros
(This is section 5 of 6 in this chapter)

Editing Your Macros


To edit an existing macro, click your mouse on the Macros button in the Database window.
Access, in turn, will display a list of macros available in your database, as shown in Figure 18-
18.

Figure 18-18 The Database window with the Macro tab selected.

Highlight the name of the macro you want to edit and then click your mouse on the Design
button. Access, in turn, displays the Macro window, where you can make changes as described
earlier in this chapter. When you are done making changes, close the Macro window. Access,
in turn, asks if you want to save your changes; if you click your mouse on Yes, Access saves
your changes and return you to the Database window.

Chapter 18: Creating and Using


Macros
(This is section 6 of 6 in this chapter)

Summary
With macros, you can tailor your Access environment to your own needs. You can create
commands and sequences of commands that help you increase your productivity
tremendously. In this chapter, you have learned how you can start to use macros.

Before you move on to Chapter 19, make sure you understand the following key concepts:
• Macros are sequences of commands which you save under a name. You can replay a macro
sequence to accomplish tasks both quickly and easily.
• You can use macros to accomplish virtually any task you can accomplish manually. You can use
macros to make complex operations simple (so you don't need to remember all the steps) or to
automate tasks that are repetitive in nature.
• An action is a macro command; an argument is a setting that defines how Access will carry out
the action.
• You use the Macro window to create macros. In this window, you define the actions the macro
executes, the order in which the actions occur, and each action's arguments.
• To display the Macro window, click your mouse on the Macros button in the Database window and
then click on the New button.
• A macro can contain a conditional statement that tells it to execute an action only if a particular
condition is met. To define a condition, you use the same expressions as when you create
validation rules, filters, and queries.
• To execute a macro, select the macro name in the Database window and then click your mouse
on the Run button. You can also execute a macro by simply double-clicking your mouse on the
macro name.
• Command buttons let you execute macros from a form or report. After you place the button in the
form or report design, you use the object properties of the button to assign the macro to events
that can occur with the object. For instance, you assign the macro to run when someone clicks the
object with the mouse.
• To edit existing macros, select the macro name in the Database window and then click your
mouse on the Design button. Access, in turn, will display the Macro window where you can make
changes to the macro.

In Chapter 19, you will learn more about macros. You will learn how you can use them to
create message boxes and menu systems.

Chapter 19: Working with Dialog


Boxes and Menus
(This is section 1 of 3 in this chapter)

In the previous chapter, you learned how you can use macros to automate many of the tasks
you normally perform in Access. In this chapter, you will build on that information to learn how
you can create your own dialog boxes and menus. Using the tools presented in this chapter,
you will make your macros behave very much like Access itself--using menus and dialog boxes
to improve the user's interface.

By the time you finish this chapter, you will understand the following key concepts:

• How to use message boxes


• How to design dialog boxes
• How to create a switchboard menu
• How to add custom menus to your forms and reports

Adding Dialog Boxes


Note: One of the databases used in this is the My Friends.mdb database you used in
Chapter 18, "Creating and Using Macros." If you do not have a copy handy, you may
want to use the Friends 4.mdb database located on the companion CD-ROM. You should
copy the file to a directory on your hard drive and rename it My Friends.mdb.

Within Windows and Windows-based programs, message boxes and dialog boxes are the
primary means of communicating with a user. As you will learn, the same is true for your
Access macros. Access lets you create and use both message boxes and dialog boxes within
your macros.

Displaying Messages
You see them all the time in Windows--message boxes that inform you that something is going
on or that your program needs more information in order to accomplish a task. In Access, you
see a message box every time you leave a Design window after making some changes, asking
if you want to save your changes.

Message boxes contain some sort of small icon, a message, and some buttons which control
the actions that Access performs. You can create your own simple message boxes within
Access macros. For example, a very simple use of a message box is to inform the user that
Access has saved a particular record. To create such a dialog box, you develop a macro and
use the MsgBox action within the macro.

First, click your mouse on the Macros button in the Database window. Next, click your mouse
on the New button. Access, in turn, displays the Macro window. In this case, you will develop a
one-line macro. Within the first row of the Action column, select the MsgBox action. Access
displays the Macro window as shown in Figure 19-1.
Figure 19-1 The Macro window.

Now you need to set the arguments for this action. The arguments control what message, icon,
and buttons Access displays within the message box.

The Message argument defines what Access displays in the message box. The text can be any
message you desire, up to 255 characters in length. Access takes care of formatting the text
that will appear within the message box. For this message box, set the Message property to
something like The record has been added.

The Beep argument controls whether Access sounds the bell when it displays the message
box. The Beep argument is a simple Yes/No property. Since Access displays this message box
every time the user enters a record, the beep could get annoying; change the property to No.

The Type argument determines the type of icon Access displays in the message box. You have
five choices, as detailed in Table 19-1. You should pick the type of icon that is most
appropriate for the purpose of the message box. In this case, the message box is purely for
informational purposes, so set the Type property to Information.

Setting Meaning
None Access displays no icon.
Critical Access displays a stop sign.
Warning? Access displays a question mark.
Warning! Access displays an exclamation
point.
Informatio
Access displays a lowercase i.
n
Table 19-1 Possible settings for the Type property of the MsgBox action.

The Title argument controls what title Access shows at the top of the message box. If you don't
specify a title, Access uses the words "Microsoft Access" as a title. The title you select is
entirely up to you.

Note: When you use message boxes within a macro, Access does not let you specify the
number of buttons to display in the message box. If you want to do that, you must use
Visual Basic for Applications, which lets you create more versatile message boxes. The
MsgBox action displays only an OK button, which makes it well suited to displaying error
or other informational messages.

You are now ready to save your macro (yes, with only one action). Click your mouse on the
Close icon in the upper-right corner of the macro window and save the macro under the name
Record Saved.

To attach the macro to a form, you first need to display a form. (This makes sense, right?)
Open the Design window of the Review Friends form and display the Properties dialog box for
the entire form.

In the Properties dialog box, notice the After Insert property on the Event tab. This property
lets you specify which macro Access should run right after it adds a new record to the table.
Select this property and then click your mouse on the pull-down arrow at the right side of the
property box. Specify that Access run the Record Saved macro. Now Access will display your
new message box every time you add a new record to the table.

Note: If you need a refresher on how to set properties for an entire form, refer to
Chapter 9, "Creating Custom Forms."

Save the form and then open it. Next, add a new record to the table. When you leave the
record to display the next one, Access inserts the record in the table and displays your
message box, as shown in Figure 19-2.

Figure 19-2 The completed message box.

Your Forms as Pop-Up Windows


Note: This section uses a version of the Customers.mdb database you developed in
earlier chapters of the book. You should copy the Customer 7.mdb database from the
companion CD-ROM to a directory on your hard drive and rename it Customer.mdb. You
should do this rather than using any older versions of Customers.mdb, since the CD-ROM
version has some new forms in it that you will need.

You already know from Chapter 9, "Creating Custom Forms," that Access lets you create
virtually any type of form you can imagine. These forms can contain many different controls,
and you can use them to enter, display, edit, or manipulate the information in your data tables.
Normally, you simply open these forms in order to use them. You may, however, want to
create a form that Access uses as a pop-up window. For example, consider this scenario:

• You create a form that adds customers to a table. You can use this form for the main information
about the customers.
• You create a second form for ancillary customer information, such as the name of the sales rep on
the account.
• On the main form, you place a command button titled "Other Info." When the user clicks the
mouse on this button, Access again presents the secondary form. When the secondary form is
closed, Access returns the user to the main form.

Such a scenario is easy to implement in Access. All you need to do is develop the two forms
and then tie them together using the command button.

If you loaded the Customer database, the two forms for this example are the New Account
Setup and the Ancillary Info forms (the are already created in the database). These forms are
tied into each other, such that Ancillary Info "pops up" on the screen when you click your
mouse on the command button. Figure 19-3 shows how the New Account Setup form looks
when it is running.

Figure 19-3 The New Account Setup form.

When you click your mouse on the Other Info command button, Access executes the Display
Ancillary macro. This macro contains only a single line, which opens the Ancillary Info form
using the OpenForm action. The action's Where argument is set to an expression that ensures
the record Access displays in Ancillary Info is the same record Access displayed in the New
Account Setup form.

Take a look at the form properties set in the Ancillary Info form. There are a number of these
properties set to make the form behave like a dialog box. These properties include the
following:

• Scroll Bars (Format tab properties). This property determines if Access displays scroll bars in
the form. This is set to Neither, since dialog boxes typically don't have scroll bars.
• Record Selectors (Format tab properties). If set to Yes (the default), a record selector
appears at the bottom of the dialog box. Since this form edits only the current record, as
determined in the New Account Setup form, this property is set to No.
• Navigation Buttons (Format tab properties). Determines if the record navigation buttons
appear at the bottom of the dialog box. This property is set to No since you don't want users to
move around the records using this form.
• Pop Up (Other tab properties). This property is set to Yes to indicate that you are creating a
pop-up dialog box rather than a normal form.
• Modal (Other tab properties). If set to Yes, this dialog box (the form you are creating) will
remain active until the user closes it. This property is set to Yes to force the user to deal with the
dialog box before proceeding.
• Border Style (Format tab properties). There are four types of borders you can use for the
form: None, Thin, Sizable, and Dialog. Since you are creating a dialog box, this property is set to
Dialog.
• Control Box (Format tab properties). Determines whether the Control menu is available from
the dialog box. Most dialog boxes have a Control menu, so this property is set to Yes.
• Min Max Buttons (Format tab properties). Determines if the dialog box has a minimize and
maximize buttons. Typically, this property should be set to None.
• Close Button (Format tab properties). Determines if the dialog box has a Close button.
Typically, this property should be set to Yes.

Note: Don't set both the Control Box and Close Button properties to No unless you
provide some other way to close the dialog box (such as a Close button on the dialog box
itself). If you don't provide some way out of the dialog box, you will never be able to
close it.

With these properties set in this way, the Ancillary Info form behaves just like a regular dialog
box. When a user clicks their mouse on the Other Info button, the dialog box appears. The user
can then change or enter the information and close the dialog box. Figure 19-4 shows what
your screen looks like when Access displays this dialog box.
Figure 19-4 Using the Ancillary Info form as a dialog box.

Chapter 19: Working with Dialog


Boxes and Menus
(This is section 2 of 3 in this chapter)

Adding Menus
As you start to develop a series of forms for a particular database, you might want to create
some method to display them in an organized manner. You probably have a good idea of how
to use your forms and how to access them from the Database window. However, others who
use your database may not have your Access knowledge. One answer to this problem is to
develop menus from which any user can make choices.
There are two types of menu systems you can devise in Access:

• Switchboard menus
• Custom menus

The following two sections cover these two menu types.

Developing Switchboard Menus


A switchboard menu is a series of forms you develop that only call other forms. For instance,
you might have a form named Startup which has nothing to do with any tables in your
database. Instead, the form simply presents a series of command buttons, each of which leads
to another form or report. In other words, the menu acts much like a switchboard operator,
connecting you to the form you desire. As an example, assume you want to develop a
switchboard menu for the My Friends database. In this case, your switchboard menu should
contain four choices:

• Add records
• Review records
• Print records
• Exit

To build your switchboard menu, simply create a new form called Startup. This form doesn't
have to be particularly large, but you want it big enough to contain a graphic and the four
buttons. You will tie each of the buttons to a macro that accomplishes the desired action.

The Startup form looks like what is shown in Figure 19-5. Notice that the Startup form displays
no database records; the only thing this switchboard menu does is provide users with a way to
access the features you have programmed (via macros) into the database.

Figure 19-5 The Startup form.


In earlier chapters, you examined each of the techniques you need to create the Startup form.
You learned how to create forms and change form properties in Chapter 9, "Creating Custom
Forms." In Chapter 17, "Using OLE," you learned how to use OLE objects with databases and
forms. In Chapter 18, "Creating and Using Macros," you learned how to tie macros to a form
command button. The following sections describe what happens when you click your mouse on
the various command buttons on this switchboard menu.

Note: The Startup form and the other macros and forms required to use it are contained
on the companion CD-ROM in the Friends 6.mdb database. You should copy the file to a
directory on your hard drive and rename it My Friends.mdb.

Add Records
When you click your mouse on the form's Add Records command button, the form runs the
Add New Record macro. You created this macro in Chapter 18. As you will recall, the macro
displays the Review Friends form, positioning the record counter at the point where you can
add a new record, as shown in Figure 19-6.

Figure 19-6 Adding a new record.

Review Records
Click your mouse on the switchboard form's Review Records button. The form, in turn, will call
up a new macro, Review Records. This macro consists of a single action: OpenForm. Figure 19-
7 shows the Macro window, with the arguments for the OpenForm action.
Figure 19-7 The single action used in the Review Records macro.

By setting the Data Mode argument to Read Only, you stop users from editing the data in the
table. This lets them browse through the records, but stops them from making changes. If the
user wants to make changes, they can use the Add Records option. The Add Records macro
opens the same form (Review Friends) with the Data Mode argument set to Edit.

Print Records
In Chapter 18, "Creating and Using Macros," you developed the Print Report macro. This
switchboard menu ties the Print Report macro to the Print Records command button. The Print
Report macro prints all the records in the table in alphabetical order. When you click your
mouse on this button, you will simply see the notice that the report is printing. When the
macro is done, Access displays the switchboard menu, where you can choose another option.

Exit
When you click your mouse on this option, the switchboard menu calls a single-line Exit macro
which contains a single Close action. When you execute the Exit macro, it closes the current
object (which happens to be the Startup form), which, in turn, effectively ends the program.

Adding Custom Menus


With a simple application, such as the My Friends database, using a switchboard design is
simple and straight-forward. As your database increases in complexity, however, the
switchboard approach develops a few drawbacks. The main disadvantage is that users can
quickly become lost in a maze of forms, buttons, and choices. Luckily, Access provides another
alternative, custom menus. You can design your own menu system to either augment or
replace the built-in Access menus. Custom menus offer an easy method to view multiple
options at a single glance. Also, custom menus present options in a way familiar to those users
comfortable with the Windows environment.

Understanding How to Customize Menus


You customize menus in Access using very intuitive techniques. All you need to do is choose
the Customize option from the Tools menu. Access displays the Customize dialog box, as
shown in Figure 19-8.

Figure 19-8 The Customize dialog box.

You can actually use the Customize dialog box to change just about every aspect of Access
that you can see. To change menus, however, all you need to do is start working with the
actual menus, while the Customize dialog box is displayed.

This is easiest to understand through an example. Let's say you want to change the order in
which some options appear on a menu--you may want to change the Relationships option on
the Tools menu so that it appears higher on the menu. To do this, simply click your mouse on
the Tools menu. The entire menu should appear, as shown in Figure 19-9.
Figure 19-9 The Tools menu during customizing.

All you need to do in order to reposition the Relationships option is to click your mouse on it
and drag it to a new position on the menu. When you release the mouse button, the menu
option stays where you dropped it.

This on-screen customizing technique is very powerful, and you can do other customizing
tasks, as well. For instance, if you drag an existing menu choice off a menu, it is deleted. If you
want to rename a menu item, simply right-click your mouse on the option. The result is a
Context menu, as shown in Figure 19-10.
Figure 19-10 A Context menu is used to display customizing options for an existing menu
item.

If you change the setting in the Name field on the Context menu, the name of the menu item is
changed. Notice that the existing menu name (&Relationships...) has an ampersand (&) at the
beginning of it. This ampersand is the way you denote which letter is underlined in the menu
option (the "R" is underlined in Relationships), and which key is therefore the hot key used to
select the option from the keyboard. You can place a single ampersand before any letter you
want in your menu name.

If you look again at Figure 19-10, you will notice that the Context menu presents quite a few
other customization actions you can use, if desired. If you like, you can experiment with these
to see their affect on your menus.

When you are done with your customizations, simply close the Customize dialog box. The
changes you made remain persistent until you either change the menus again or reset them to
their default.

Restoring Menus to Their Default


At some point you may wish to undo the changes you have made to a menu. Fortunately,
Access provides a very quick way you can do this. With the Customize dialog box displayed, all
you need to do is right-click your mouse on a menu. Make sure you right-click your mouse on
the menu itself, not on an item in the menu. For instance, if you wanted to reset the Tools
menu to its default condition, you would right-click your mouse on the Tools option on the
toolbar. Access displays a Context menu with options you can use in customizing the menu.

With the Context menu displayed, all you need to do is choose the Reset option. (It is the first
option on the menu.) Access closes the Context menu and the Tools menu, and everything is
reset to normal. In this case, "normal" means that the Tools menu will look just like it did when
Access was first installed.

Creating a Custom Menu System


Access gives you complete control over the menus displayed when you are using your own
forms and dialog box. The first step, however, is that you need to create the actual menus that
will be used. For example, let's assume you want to create a new menu system that is
displayed whenever someone has the New Account Setup form open in the Customer
database. (You will, of course, need to close the My Friends database and open the Customers
database.) The way that you create a menu system is a bit awkward and non-intuitive in
Access. To create such a menu system, follow these steps:

1. Choose Customize from the Tools menu. Access displays the Customize dialog box.
2. Make sure the Toolbars tab is selected. (I know it sounds strange to use toolbars to create menus,
but that is the way Microsoft set it up.)
3. Click your mouse on the New button. Access displays the New Toolbar dialog box, as shown in
Figure 19-11.

Figure 19-11 The New Toolbar dialog box.

4. In the Toolbar Name field, enter the name you want to use for your menu. For this example, enter
a name of New Accounts Menu.
5. Click your mouse on the OK button. Access adds the new toolbar/menu to the list of toolbars, and
displays an empty toolbar beside the Customize dialog box.
6. Click your mouse on the Properties button in the Customize dialog box. Access displays the
Toolbar Properties dialog box, as shown in Figure 19-12.
Figure 19-12 The Toolbar Properties dialog box.

7. Change the Type pull-down list so the Menu Bar option is selected.
8. Click your mouse on the Close button. Access closes the Toolbar Properties dialog box and again
displays the Customize dialog box.
9. Click your mouse on the Commands tab in the Customize dialog box.
10. In the list of Categories, select New Menu. Access displays a single option (New Menu) at the right
side of the dialog box, in the Commands list.
11. Use the mouse to drag the New Menu option from the Commands list to your blank menu bar. The
words "New Menu" should now appear on your menu bar.
12. Right-click your mouse on the New Menu option on your menu bar. Access displays a Context
menu.
13. In the Context menu, change the Name to &File.
14. In the Categories list on the Customize dialog box, select the All Macros option. The only thing
that should appear in the Commands list is the Display Ancillary macro, as shown in Figure 19-13.
Figure 19-13 Creating a new menu command.

15. Use the mouse to drag the Display Ancillary option from the Commands list to the new File menu
you created on your menu bar.
16. Drag your new menu bar so it is located just below the regular Access menu bar and just above
the toolbar, at the top of the program window.
17. Click your mouse on the Toolbars tab in the Customize dialog box.
18. Make sure the check box beside the New Accounts Menu option is cleared. Access removes the
new menu on which you have been working.
19. Click your mouse on Close. Access closes the Customize dialog box.

In this example, you created just a single menu and a single option on that menu. Your menus
can be as complex or as simple as you desired. This very simple menu system is more than
acceptable to show how Access treats your custom menus.

Using Custom Menus


After you define a custom menu system, you can use it with specific forms or reports in your
system. To do so, you need to set the Menu Bar property for the form or report. To continue
the example begun in the last section, assume you want to use your new custom menu system
with the New Account Setup form you created earlier in the book for the Customer.mdb
database. To do so, follow these steps:

1. Display the Design window for the New Account Setup form.
2. Display the Properties dialog box for your form. Make sure the Other tab is selected, as shown in
Figure 19-14.

Figure 19-14 The form Properties dialog box.

3. Select the Menu Bar property.


4. Click your mouse on the pull-down arrow to the right of the Menu Bar property box.
5. Select the New Accounts Menu option. This is the menu bar you created in the previous section.
6. Close and save your form.

That's all there is to it. The next time you open this form, Access will automatically load and
use the custom menu, as shown in Figure 19-15.
Figure 19-15 Using the custom menu.

Note that the custom menu system you designed in the previous section is now the only menu
visible when the New Account Setup form is open. When the form is closed, Access hides the
custom menu and displays the default Access menu bar again.

Chapter 19: Working with Dialog


Boxes and Menus
(This is section 3 of 3 in this chapter)

Summary
Once you know the basics of designing macros, you can make your database more "user
friendly." Here you have learned how to use dialog boxes and menus to communicate with
users.

Before you move on to Chapter 20, make sure you understand the following key concepts:

• Within macros, you use a message box to provide information to whoever uses your database. A
message box typically displays a short message and includes an OK button that users can click
their mouse on to close the box.
• The MsgBox action lets you control the message that Access displays in the message box, as well
as the icon Access displays beside the message.
• If you want Access to use one of your forms as a dialog box, set the properties of the form so they
closely resemble the attributes of a dialog box.
• A switchboard menu lets a user select from a series of on-screen choices. You can design a form
that presents a switchboard menu that makes your database much easier to use.
• Access allows you to quickly and easily customize menus and create entirely new menu systems
you can attach to forms and reports.

In Chapter 20, you will learn the fundamentals of the Visual Basic for Applications
programming language.

Chapter 20: Using Visual Basic for


Applications
(This is section 1 of 6 in this chapter)

As you work with Access, there may be times when you can't write a macro that's capable of
performing the operations you need. In such cases, you can turn to Visual Basic for
Applications, a programming language that's built into Access. In short, using Visual Basic for
Applications, you specify a list of instructions you want Access to perform.

In the previous two chapters, you have learned a bit about programming; after all, that's what
macros effectively let you do. Macros, however, don't give you all the capabilities of a
programming language. In this chapter, you will plunge head-first into the world of
programming.

By the time you finish this chapter, you will understand the following key concepts:

• What Visual Basic for Applications is


• How Access uses procedures, functions, and subroutines
• The parts of a Visual Basic for Applications program
• How to use statements, variables, operators, and functions within your program
• How to address database objects in Visual Basic for Applications
• How to use the VBA Editor
• How to develop a Visual Basic for Applications procedure
• How to test your procedures
• How to use a procedure from an Access form
Note: This chapter is not a substitute for a good book on programming. There are books
available on the market which can help you with either Visual Basic for Applications or
Visual Basic (they are very similar). This chapter will provide you with a quick
introduction to Access programming using Visual Basic for Applications.

What is Visual Basic for Applications?


Visual Basic for Applications (VBA) is a programming language built right into Access. This
language is built on the Basic programming language made popular by PCs over the past 25
years. VBA shares similarities with other Windows implementations of the Basic language, such
as Visual Basic. If you know how to program in Visual Basic, you will feel immediately
comfortable programming in VBA. If you are familiar with programming in a different language
(including using macros), you can quickly get up to speed with VBA.

There are a few terms you should know before you start programming in VBA:

• Procedure. A section of programming code, designed to accomplish a specific task, which your
program statements can use throughout your program. There are two types of procedures:
functions and subroutines.
• Function. A procedure that returns a value after it completes its task. When called, functions
typically appear on the right side of an equal sign in an expression.
• Subroutine. A procedure that does not return a value after it completes its task.
• Module. A named collection of procedures. You typically attach modules to specific forms or
reports.

You can accomplish many tasks simply by using macros. This implies--and correctly so--that
not everyone needs to use VBA. As a general rule, if you can accomplish a task by using
macros, do so. Macros are simpler to implement and easier to maintain. However, there are
certain tasks which you cannot do with macros or which you can better implement through
VBA. You should use VBA instead of macros when you:

• Want to create your own functions.


• Need to handle events that pass parameters or accept return values.
• Need to perform error handling.
• Need to process information on a record-by-record basis.
• Want your application to run as quickly as possible.

These reasons are either a side-effect of using VBA (such as the faster speed) or will be
covered to one degree or another in this chapter. There are other instances when you should
use VBA, as well:

• When you don't want to manually create or manipulate database objects.


• If you want to create a library.
• If you are writing your own Wizards.
• When you need to perform system-level operations such as DDE and OLE.
• When you want to access Windows API functions or DLL files for other applications.
These reasons involve using VBA at a level that this chapter will not cover. They are still valid
reasons, however. If you find you need to perform any of these advanced operations, purchase
a good programming reference and any other VBA programming information you can find.

Getting Help for VBA


Throughout this book, you have learned how you can use the online Help system. When
you program in VBA, you will probably use the Help system quite a bit. This is because of
all the rules that you must follow when you use VBA.
As you use the programming section of the online Help system, you may find these
guidelines helpful:
Use the Help tool to select the programming statement you need help with.
Use the search feature to find information on a specific topic, function, or statement.
Only use the Help system table of contents if you can't find help any other way.

Chapter 20: Using Visual Basic for


Applications
(This is section 2 of 6 in this chapter)

Parts of a Program
In VBA, a program consists of procedures. These procedures are made up of individual
program lines, which you must put together according to VBA rules. These rules are referred to
as syntax. Think of syntax as programming grammar--if you don't follow the rules, VBA can't
understand what you are trying to do.

There are many elements that go into a program, including the following:

• Statements
• Variables
• Operators
• Functions
• Database objects and collections

The following sections explain each of these elements.

Understanding Statements
When you write programs in VBA, you create programming statements. For example, consider
the following line of code, which is commonly used in programs:

Option Compare Database

The first two words of this line are a VBA statement; the last word is a modifier for the
statement--sort of like an argument when you are writing macros. VBA defines many different
statements (scores of them) you can use in your programs. These statements do everything
from defining how VBA should behave to setting the current disk drive.

Note: A detailed description of each VBA statement is beyond the scope of this book. If
you want to see what statements are available, use the on-line Help system available
within the VBA Editor to search for Statements, then choose the Statements Reference
topic.

Understanding Variables
Your VBA programs use variables to store information. Just like you can store data in a field
within a table, you can store information in a variable for use in a program. Variables are so
named because their contents can vary, meaning your program can change their values.

Variables can be very powerful. They let you create general-purpose routines that can act and
make decisions based on the value within the variable. For example, consider the following
logical sentence:

 If the temperature is high enough, I will go to the beach.


In this instance, the temperature is the variable. If it is high enough, you will do something; if
not, you will not. Variables serve the same purpose in a program. Later in this chapter, you will
learn how VBA uses variables to make decisions within your programs.

Data Types
In Chapter 3, "Taking a Closer Look," you learned about data types in relation to information
stored in a database. When you define a table, you need to define what type of information
Access will store in each field of the table. In this way, variables are no different than fields.
You need to be aware of what information your program is going to store in the variable, and
then you need to use the correct data type so VBA knows how to handle the value. VBA
supports eleven different data types, as indicated in Table 20-1.

Data
Type of Values
Type
Boolean Either logical True or logical False
Byte Numbers between 0 and 255
Integer Numbers between -32,768 and 32,767
Long Numbers between -2,147,483,648 and 2,147,483,647
Single Numbers between -3.402823E38 and 3.402823E38
Numbers between -1.79769313486232D308 and
Double
1.79769313486232D308
Numbers between -922,337,203,685,477.5808 and
Currency
922,337,203,685,477.5807
Date Date between January 1, 100 and December 31, 9999
String Up to 65,535 characters (approximately)
Object Reference to a database object
Variant Varies based on the characteristics of the information
Table 20-1 Data types supported by VBA.

Notice that some of the data types shown in Table 20-1 are numeric data types; this means
they hold number values. When you take into account the setting of the Field Size property for
the field, VBA data types correspond to field data types. As you can see from Table 20-1, the
primary difference between the numeric data types is the size and accuracy of the values they
can hold.

Scientific Notation
Very large and very small numbers are cumbersome to write. To get around this, you can
use scientific notation. Using scientific notation, you can express very large or very small
numbers easily. For example, you can write the number 7,884,000,000,000,000 as
7.884E15 (notice the E in the middle of the number). Likewise, you can write the number
0.000123 as 1.23E-4.
To convert a number to scientific notation, move the decimal point so that the resulting
number is between 1 and 10. After the E, specify the number of places you moved the
decimal point. If you move the decimal point to the left, use a positive number after the
E; if you move it to the right, use a negative number. To convert a number from scientific
notation, you reverse this process--move the decimal place the number of positions
indicated by the number after the E.
The way VBA expresses scientific notation depends on the data type being used. VBA
uses the E when you work with a single data type and the D when you work with a double
data type. Thus, 9.14E12 refers to a single-precision data type, and 9.14D12 refers to a
double-precision value.

The String data type is comparable to the text data type for fields. String type variables can
contain any characters--letters, numbers, or symbols--which you can think of.

The Date data type is not really a date, as you might expect. For instance, humans represent a
date such as June 11, 1999. VBA, however, works with date serial numbers. These are a
numeric representation of a date, in the form of a number. The appearance of that number (for
instance, June 11, 1999) is the format of the number, not the date serial number itself. Access
uses the special Date data type to contain serial numbers which represent any date between
January 1, 100 and December 31, 9999. (No Y2K bug here!)

Another interesting data type is Object. This data type is actually a reference to an object
tracked by Access. Many of the actions you perform in VBA are upon objects, such as tables,
forms, reports, and the pieces thereof. Each of these are objects, and can be addressed within
VBA. Later in this chapter you will learn more about VBA objects in Access.

The last VBA data type is not supported directly in setting data types for fields. The Variant
data type automatically adapts to the type of information it contains. If you store a number in
a variant, it behaves like a numeric data type. If you store characters in it, it behaves like a
string. In addition, you can store special values in a variant, such as dates and times. There are
nine types of data you can store in variants:

• Empty
• Null
• Integer
• Long
• Single
• Double
• Currency
• Date
• String

Most of these types of data should look familiar by now. The first two, however, may not. A
variant is empty if your program has never assigned it a value. Typically, a variant is empty at
the beginning of your program, before you ever use it. A variant is Null if your program has
initialized it but it currently contains no data.

Declaring Variables
Before you can use a variable within your program, you need to declare it. This simply means
that you need to let VBA know what name you are going to use for the variable and what data
type it will store. There are two ways you can declare a variable--either implicitly or explicitly.

Implicit declaration means you simply start using the variable. For example, if VBA encounters
the following line in your program, and you have never used the variable LittleCount before,
then VBA assumes you want to define a variable by the name of LittleCount.

LittleCount = 123.456

Because you are assigning a single precision value to the variable, you have implied the
variable's type as single.

Explicit declaration means you declare the variable before actually using it. You explicitly
declare using one of the following declaration statements

• Dim. Dimensions (sets aside space for) a variable. You can access the variable within the current
procedure only. Each time your program uses the procedure, VBA reinitializes the variable.
• Global. Same as Dim, except the variable is accessible in any procedure.
• Static. Same as Dim, except VBA does not reinitialize the variable every time the procedure is
used.

In general, you should use explicit declarations in your programs. In this way, VBA can check to
make sure you are using your variables correctly. To enforce explicit variable declaration, you
can put the following statement in the declarations section of your program (before you define
any variables):

Option Explicit

Variable Arrays
In order to keep related information together, VBA lets you define variable arrays. Arrays use
subscripts to differentiate between different elements of the same overall variable. For
instance, you can declare a variable as a string and give it 15 subscripts, as shown here:

Dim Employee(15) As String

In this case, there are 15 occurrences of Employee, numbered 1 through 15, as in


Employee(1), Employee(2), Employee(3), and so on through Employee(15). Each element of
the array is a different variable. Because these elements share the same base name
(Employee), your program can process the information in the array easier. Each element in the
Employee array can store a character string. In this example, Employee has 15 elements, but
only one dimension. You can also define arrays to have more dimensions. Thus, you could
declare the following type of variable:

Dim Employee(15,20) As String

In this case, Employee has 300 elements (15 × 20 = 300), each one a separate variable, and
two dimensions. You can use as many dimensions as you desire, but most programmers stick
with one- or two-dimensional arrays simply because their needs never extend past that.

Assigning Values to Variables


To inform VBA that a particular variable should contain a particular value, you need to assign
the value to the variable. To assign a value to a variable, use the assignment operator (the
equal sign) in an equation, as shown here:

Dim SpeedLimit As Integer


SpeedLimit = 65

After you program this assignment, you can use the variable SpeedLimit anywhere else in your
program and VBA will understand you actually mean the number 65.

To assign a group of characters to a string variable, just surround the characters with
quotation marks. As shown in the following, the quotation marks indicate to VBA where the
string begins and ends:

Dim BookTitle As String


BookTitle = "Learn Access Now"

Naming Variables
When you choose names for your variables, you must follow VBA guidelines. If you
disregard the guidelines, VBA will not behave in the way you want. The guidelines are:
Names must begin with a letter of the alphabet
Names cannot contain spaces
Names must be no longer than 40 characters
Names cannot use words reserved for VBA use
Reserved words are those which VBA or Access uses for other purposes--typically as
statements, functions, or keywords. If you want to see the list of reserved words, search
for the term reserved words in the online Help system within the VBA Editor.

Understanding Operators
An operator is a symbol that informs VBA about the operation you want to perform. For
instance, the expression 2 + 2 uses an operator--the plus sign. There are 4 general categories
of VBA operators:

• Math operators. Used to put together mathematical equations. Examples include addition,
subtraction, multiplication, and division.
• Comparison operators. Used to determine how two operands relate to each other. The result of
a comparison operation is always either True or False.
• String operators. Used to combine the characters in two strings.
• Logical operators. Used to test conditions. Examples include AND, OR, and NOT. The result of a
logical operation is always either True or False.

There are 20 different operators spread among these 4 categories, as shown in Table 20-2.

Operato
Category Meaning
r
+ Math Addition
- Math Subtraction
* Math Multiplication
/ Math Division
^ Math Exponentation
\ Math Integer division
Mod Math Modulus
Comparis
= Equal
on
Comparis
< Less than
on
Comparis
> Greater than
on
Comparis
<= Less than or equal
on
Comparis
>= Greater than or equal
on
Comparis
<> Not equal
on
& String Concatenation
AND Logical And
EQV Logical Equivalent
IMP Logical Implication
Not (or the logical opposite
NOT Logical
of)
OR Logical Or
XOR Logical Exclusive Or
Table 20-2 Operators in VBA.

Understanding Functions
Technically, a function is a procedure that returns a value. VBA has a wide variety of built-in
functions which you can use in your programs. These functions are important because they
keep you from having to "reinvent the wheel" for common tasks.

There are many, many functions built into VBA. These functions are categorized by the type of
work they do. The categories are:

• Math Functions
• Financial Functions
• Data Conversion Functions
• String Functions
• Date and Time Functions
• Transcendental Functions
• Miscellaneous Functions

Note: If you want to see information about a particular function, you can search for that
function in the on-line Help system within the VBA Editor.

When you use a function, you generally use it in an equation or some other place where a
value is needed. This is because functions, by definition, return a value. For instance, if you
want to find the length of a string, you can use the Len function as follows:

Dim HowLong As Integer, MyString As String


HowLong = Len(MyString)

These statements set the variable HowLong equal to the length of the value in MyString. Thus,
if there were 25 characters in MyString, the Len function will assign the value 25 to the
variable HowLong.

Notice, also, that functions require the use of arguments (sometimes called parameters). In
this example, the variable MyString is an argument for the Len function. Some functions
require only a single argument; others can require quite a few. These arguments are similar to
the arguments you use with macro actions. The number, type, and specifications for
arguments will vary based on the function.

Referring to Database Objects


Throughout this book you have learned ways you can manually work with database objects--
things like tables, forms, reports, macros, and the like. From a programming perspective, these
objects fit into a technology known as DAO, which means data access objects. Once you
understand the fundamentals of DAO, you can refer to any portion of any VBA object you
desire, all under program control.

The DAO framework recognizes two types of database components: objects and collections. An
object is typically a single database component (many of which you have already learned
about), although it can also encompass other objects or collections. A collection is a group of
related objects; it provides a way for you to reference an entire group of objects at one time.
Table 20-3 lists the various collections and objects that belong to the DAO framework.

Collectio
Object Purpose
n
Containers Container Hold information about other objects
Databases Database An open Access database
DBEngine The Jet database engine
Document Documen
Information about other objects in the database
s t
A column that is part of a table, query, recordset, index, or
Fields Field
relation
Groups Group A group of user accounts in the current workgroup
Indexes Index A table index
Parameter Paramete
A query parameter
s r
Properties Property A property of an object
QueryDefs QueryDef A saved query definition
Recordset Recordse
The records defined by a table or query
s t
Relations Relation A relationship between fields in tables or queries
TableDefs TableDef A saved table in a database
Users User A user account in the current workgroup
Workspac Workspac
An active session of the Jet database engine
es e
Table 20-3 DAO collections and objects recognized by VBA.

The collections and objects that make up DAO are defined by the Jet database engine, which is
the heart of Access. In addition to DAO objects and collections, Access also recognizes the
group of objects and collections (referred to as Access objects) shown in Table 20-4. (Note that
not all objects have corresponding collections.)

Collectio
Object Purpose
n
Applicatio The current instance of
n Access
A control on a form or
Control
report
The VBA immediate
Debug
window
Forms Form A form or subform
Reports Report A report or subreport
Screen The video display
Table 20-4 Microsoft Access objects

Properties and Methods


Earlier in this book, you learned about properties and how you use them to define objects in
tables, forms, reports, and other database objects. Likewise, you use properties to define DAO
objects and collections and Microsoft Access objects. Most of the object and collection
properties are the same properties you can manipulate in a Properties window.

Objects and collections also have methods, which are special functions that act on an object or
collection. For instance, a Workspace object has a CreateDatabase method; when you use the
Workspace object, its method creates a new database. As with properties, the available
methods will vary based on the object or collection.

Addressing Objects and Collections


Access provides a method that lets you address anything within your database. Since objects
and collections form a hierarchical system, it may be helpful to compare the Access address
system to a similar system you should already be familiar with--the directory structure on your
disk drive.

As you move through different levels in a directory structure, you indicate a change in level
using a backslash. For example, consider the following pathname:
C:\WINDOWS\SYSTEM\SYSEDIT.EXE

As you read the pathname from right to left, you learn that the SYSEDIT.EXE file is in the
SYSTEM directory, which is within the WINDOWS directory, which is on the C: drive. Each
backslash indicates you are moving down a level in the directory structure, when reading from
left to right. In Access, you use exclamation points (!) and periods (.) to denote changes in the
level. The exclamation points are called bangs, and the periods are called dots. The general
rules which govern the use of bangs and dots are as follows:

• You use a bang before objects you have named.


• If a name contains spaces, you surround it with brackets, as in [Zip Code].
• You use a dot before objects, properties, or methods named by Access.

How do you apply these rules? Simple. Suppose you want to refer to the Business Customers
table you created earlier in this book. This table is part of the Customer database, so you can
address it as follows:

Customer![Business Customers]

Notice the brackets around the table name and the bang between levels of the hierarchy. If
you want to refer to a property within the table, you can use a dot and the property name, as
in the following:

Customer![Business Customers].RecordCount

Object Variables
Earlier in this chapter, you learned that within your programs you use variables to represent
actual values. These variables can be a specific data type, which indicates the type of
information they contain. For instance, consider the following code:

Dim SalesTax As Single


SalesTax = .05

The purpose of the first line is to specify a new variable named SalesTax, which will have the
characteristics of a Single data type. This line does not indicate what value the variable will
contain; the second line assigns the variable's value. After Access executes the second line,
VBA uses the value .05 whenever you refer to the SalesTax variable. Notice there is a distinct
difference between an actual value (.05) and the label used to refer to that value (the variable
SalesTax).

You refer to objects within VBA in the same manner. You can assign a label--a variable name--
to the object. Access refers any references you make to the label to the actual object that the
label represents. For instance, take a look at the following:

Dim WorkDB As Database


Set WorkDB = DBEngine.Workspaces(0).Databases(0)

In the first line, the Dim statement defines the characteristics of the variable WorkDB. This
variable has the characteristics of a database object. The second line performs the actual
assignment, using the Set statement. The (0) within parentheses--it appears twice--is an offset
index into the collection being referenced. Since VBA starts counting at zero (not one),
Workspaces(0) refers to the first Workspace object in the Workspaces collection. Likewise,
Databases(0) refers to the first Database object in the Databases collection.

After Access executes the second line, VBA knows that WorkDB refers to a physical entity,
using the full name you specified (the name is constructed according to the rules defined in
the previous section). Again, notice there is a distinct difference between the actual object (the
part to the right side of the equal sign in the Set statement) and the object variable
subsequently used to reference the object (WorkDB).

Chapter 20: Using Visual Basic for


Applications
(This is section 3 of 6 in this chapter)

Creating a VBA Module


Now that you know how to put together a program, you are ready to give it a try. To create a
VBA procedure, you follow many of the same steps you follow when you created macros. The
general steps in VBA programming are as follows:

1. Identify the task you want to accomplish.


2. Plan the steps needed to accomplish that task.
3. Create the programming code necessary to implement the steps.
4. Test the program.
5. Refine the program.
6. Repeat steps 4 and 5 until the program works correctly.

Does this sound familiar? It should; with only minor variations it is the same process you
learned in Chapter 18, "Creating and Using Macros." This is because the principles of
programming apply whether you are working with the macro language or with VBA.

You create VBA programming code by using the VBA Editor, which is described in the following
section.

What is the VBA Editor?


You create VBA programs using the VBA Editor. To start the VBA Editor, first click your mouse
on the Modules button in the Database window. Then, click your mouse on the New button.
Access, in turn, displays the VBA Editor, as shown in Figure 20-1.
Figure 20-1 The VBA Editor.

Notice that there are several different parts to the VBA Editor. In the upper left corner is what
the editor refers to as the Project window. This is where you can see the different elements of
your project and any modules that have been defined in the workbook. Just below the Project
window is the Properties window. Here you can specify different attributes of whatever you
have selected in the Project window. For most simple development needs, you will never do
much with the Properties window. To the right of the Properties window, and at the very
bottom of the screen, is the Immediate window. This is where you can either test parts of your
procedures during development or you can find the immediate results of various commands.
The Immediate window comes in very handy during testing and debugging, when they are
necessary.

Note: If a window is not displayed within the VBA Editor, you can display it by choosing
one of the options from the View menu. For instance, if you want to display the Project
window, choose Project Explorer from the View menu.

The Module window, which is the largest window on the screen, is where you do your
programming. At the top of the Module window are two drop-down lists. The one on the left is
called the Object box. The one on the right is the Procedure box. You use the Object box to
select which object you want to work with. When you first create a module, the object is set to
the word General, meaning you are working on a general module, not on one associated with a
particular object in a form or report.

The Procedure box is where you indicate the name of the procedure on which you want to
work. If you choose or specify a different procedure in this box, the information Access shows
in the Module window changes to reflect the VBA statements you have assigned to that
procedure.

The top level of a module is the Declarations section; It begins with the procedure name you
indicate in the Procedure box when you first create a module. Take a look at the Module
window (Figure 20-1). It contains the programming code already defined for the declarations
section. In this instance, there is only one line of code defined--a statement that indicates the
database's default sort order.

To enter programming statements into a procedure, you type them in the Module window. As
you enter information, Access checks to make sure it can understand what you type. In other
words, Access checks the syntax of what you enter. You use the correct syntax when you
follow the VBA rules of grammar.

You can cut, copy, and paste sections of code using standard Windows mouse or keyboard
techniques. You can perform these operations either in the same procedure or between
different procedures.

Creating a New Procedure


Note: This chapter uses a version of the Customers.mdb database you developed in
earlier chapters of the book. You should copy the Customer 8.mdb database from the
companion CD-ROM to a directory on your hard drive and rename it Customer.mdb. You
should do this rather than using any older versions of Customers.mdb, since the CD-ROM
version has a new form in it that you will need.

Assume for a moment that you want to create a procedure that will step through the records in
the Business Customers table, which you developed earlier in this book. The procedure will
check the ZIP Code of every record. If the ZIP Code equals a specific value, the procedure will
change the record's salesperson.

Your first step is to create a new procedure in the Module window. To do this, you must first
decide if your procedure will be a subroutine or a function. Your choice will depend on the task
you want the procedure to perform. Remember, if you want your procedure to return a value,
you need to make it a function. You also need to determine a name for your procedure. Unlike
the names you use for fields, tables, and other database objects, this procedure name cannot
contain spaces. In this case, let's say you decide to use the name ChangeSalesByZip, which
is quite descriptive. If you want to create a function by this name, you simply enter the
following on a blank line in the Module window:

Function ChangeSalesByZip()

After you press the Enter key, Access changes the way the Module window looks, as shown in
Figure 20-2.
Figure 20-2 The Module window for the new procedure.

Notice that VBA provides two program lines. These statements define your function's starting
point and ending point. You must place the programming lines that make up your function
between these points.

Notice, also, that Access lists your new function in the Procedures box at the top of the Module
window. If you had many procedures in your module, you could display other procedures by
clicking your mouse on the pull-down arrow at the right of the Procedures box and selecting
another procedure name.

Specifying Parameters
Take a look at the parentheses after the function name (on the first line of the procedure).
Inside these parenthesis, you specify arguments (parameters) for your function. Position the
cursor between the parentheses, and change the line so it looks like this:

Function ChangeSalesByZip(ZipWanted As String, NewSales As Long)

This statement tells VBA that your function requires two arguments: ZipWanted and NewSales.
The first parameter is a string, and the second is a long integer. Your function will use these
arguments to determine which records to change and what to change them to.

There is one other thing you need to do to this function's first line. You already know that you
use functions when you want to return information to whoever called it. In this case, you want
to return the number of records the function changes. You need to specify, on this first line,
what type of value your function will return. Add As Long to the end of the line, so it looks like
this:
Function ChangeSalesByZip(ZipWanted As String, NewSales As Long) As Long

The As Long tells VBA that this function returns a long integer to the calling routine. With these
declarations out of the way, you are ready to enter the body of your routine in between the
first and last lines on your screen.

Specifying Variables
Your next step is to specify the variables Access will use in your routine. You already know you
will be using the variables specified as parameters for the function, but there are other
variables necessary, as well. For instance, you will need to use variables for counters, table
names, and for objects within the database. Add the following lines to your function:

Dim TableName As String


Dim ChangeCount As Long
TableName = "Business Customers"
ChangeCount = 0

The first two lines declare two variables. The first variable (Tablename) will store the table
name; the second variable (ChangeCount) will count the number of changed records. The third
and fourth lines set the values for the variables.

Next, add the following lines to your function:

Dim CustDB As Database, CustTable As Recordset


Set CustDB = DBEngine.Workspaces(0).Databases(0)
Set CustTable = CustDB.OpenRecordset(TableName, dbOpenTable)

These lines set up the object variables necessary to access your data. The first line declares
two variables, one for the database and the other for the records in the database.

The second line defines the database object. This Set statement uses an object address
composed of the highest-level object (the Access database engine), the Workspaces collection,
and the Databases collection. This verbiage will always return a reference to the currently
open database.

The third line builds on the object you defined in the second line. Using the CustDB object, the
OpenRecordset method opens the table needed. At the end of these two lines, you can use
CustDB to refer to the Customer.mdb database, and use CustTable to refer to the Business
Customers table within that database.

You have now finished the preliminaries of your function--the necessary part that sets up your
data. Your Module window should look like what you see in Figure 20-3, and you are now ready
to develop the main body of your function.
Figure 20-3 Part way through your function.

Stepping Through the Records


The next part of the function will step through the records in your database to determine if a
change is necessary. If a change is necessary, the function makes the change and saves the
update. Enter the following into your function:

Do Until CustTable.EOF
If CustTable![Zip Code] = ZipWanted Then
CustTable.Edit
CustTable!SalesPerson = NewSales
CustTable.Update
ChangeCount = ChangeCount + 1
End If
CustTable.MoveNext
Loop

This code section uses a Do Loop structure. On the first line of the loop, you define a condition
you want VBA to check. VBA repeats each of the statements between the Do Until and Loop
statements until that condition is met. In this case, you want the function to check each record
in your table, one record at a time. In other words, you want your function to begin with the
first record and to end with the last. The last record, therefore, becomes your Do Loop's ending
condition.

Your function can use the EOF (end of file) condition to determine when it has used the last
record. In this case, the code will repeat the statements until the EOF condition returns true.
The If statement checks to see if a record needs to be changed. On the If line, you define a
condition you want to test: in this case, whether the ZIP Code of the table record is equal to
the ZIP Code you want to change. If it is, VBA executes the lines between that point and the
End If statement. If the ZIP Codes are not equal, VBA skips those lines.

The statements between the If and End If statements update and save the record. First, the
Edit method lets the function edit the data in the table. The next line changes the Salesperson
field. Then, the Update method writes the changed information back to the table. The line after
the Update method incrementally counts the number of records changed.

VBA always executes the next line (CustTable.MoveNext), whether there was a change in the
record or not. (Access executes this line because it is physically outside of the If/End If
structure.) Using the MoveNext method, the code moves the table pointer to the next record in
the table.

When these lines of code complete, the function will have checked all of the records in the
table. You are now ready to finish up your function.

Wrapping It Up
You are now at the end of your function, and you are ready to finish it up. To do so, enter the
following lines:

CustTable.Close
CustDB.Close
ChangeSalesByZip = ChangeCount

The first two lines close the table and the database, respectively. The third line assigns the
count of changed records to the function name. This line causes the function to return a value
to wherever it was called from; without the statement, your function would always return a
zero. The entire function is shown in Figure 20-4.
Figure 20-4 The finished function.

Saving Your Module


After you have finished your first procedure, you can create other procedures in this same
module, if you desire. Otherwise, your next step is to save your module and close it. You save
the module by clicking your mouse on the Save tool on the toolbar, or by choosing Save from
the File menu. Access then asks you for the name you want to use for your module. Enter a
name, such as MyModule, and then press ENTER or click your mouse on OK. Access will save
the module as a part of the database.

Now you can close your module by clicking your mouse on the Close icon (the X) in the upper-
right corner of the VBA Editor program window. (You can also choose Close and Return to
Microsoft Access from the File menu, if desired.) Access closes the VBA Editor and again
displays the Database window, as shown in Figure 20-5.
Figure 20-5 The updated Database window.

Chapter 20: Using Visual Basic for


Applications
(This is section 4 of 6 in this chapter)

Testing Your Procedure


Once you have created a procedure, you need to test it out. VBA provides several different
tools you can use to do this. These tools include:

• The Immediate window


• Debug.Print
• Breakpoints

Using the Immediate Window


Perhaps the most important tool you can use to test your procedures is the Immediate window.
This window lets you see the results of your procedures right away. Using the window, you can
uncover problems before they get buried among dozens of different procedures you may
develop. For example, you can test your functions to see what values they are returning.

Remember that the Immediate window appears at the bottom of the VBA Editor workspace. (If
it is not visible for some reason, you can display it by choosing Immediate Window from the
View menu.) You can select the window by clicking your mouse in the window. Access displays
a cursor and then waits for your command. You can switch to another VBA Editor window by
simply clicking the mouse in the desired window. Later, you can hop back to the Immediate
window by clicking your mouse within it. (This is the same process you use to select different
windows anywhere in the Windows environment.)

To use the Immediate window to test out a procedure, simply type a question mark followed by
the name of the procedure. For example, if you want to test out the function developed in the
previous section, enter the following:

?ChangeSalesByZip("43772", 3)

As soon as you press ENTER, Access executes the procedure. Remember--this function will
change the information in your database, so be careful with how you use it. When the function
returns, it prints the number of records changed, as shown in Figure 20-6.

Figure 20-6 Using the Immediate window.

To display a variable's value, type in the name of the variable preceded by a question mark.
For example, if you want to display the contents of the MyVar variable (assuming you have
such a variable defined), type in the following:

?MyVar

You should note that before a procedure is executed, the value of all variables is undefined,
meaning you cannot print them. In addition, after a procedure is executed, VBA wipes out the
contents of all variables. This means that the only time you can meaningfully print the value
assigned to a variable is while a procedure is executing. Typically, this is done after a
breakpoint is reached, as discussed shortly.

Using Debug.Print
Another way you can use the Immediate window is with Debug.Print. VBA lets you use
Debug.Print to display the contents of any variable, as your program runs. Using Debug.Print,
you can watch closely a variable's value to see how your code changes the variable. By
tracking a variable's value in this way, you may detect errors in your code.

To display a variable value in this way, you include Debug.Print in a line of code. For example,
if you want to determine the value of the TempStore variable, you can use the following line of
code:

Debug.Print "Value of TempStore is " & TempStore

If TempStore contains a value of 4, when VBA executes this line, Access will display the
following in the Immediate window:
Value of TempStore is 4

Debug.Print has no other effect on your program; everything else remains the same.
Debug.Print is particularly useful when you're debugging, since you don't have to bother with
stopping and restarting your program.

Setting Breakpoints
Another testing tool which VBA provides for you is a breakpoint--a place you specify within
your program where you want the program's execution to stop. Once your program stops, you
can use the Immediate window to display information about variables or to test out other
procedures, if you desire. VBA lets you set breakpoints on any line of code in your program or
within any procedure of your program.

To set a breakpoint, position the cursor on the program line where you want VBA to stop. Then,
select the Toggle Breakpoint option from the Debug menu or click your mouse on the toolbar
Breakpoint tool. VBA highlights the program line to indicate it has set the breakpoint. (Figure
20-7 shows an example of a breakpoint in a program.)

Figure 20-7 A breakpoint within a program.


When you later run the program and VBA encounters the line at which you have set the
breakpoint, VBA will do three things:

• Pause the program.


• Display your program (with the line containing the breakpoint) in the program window.
• Wait for your command.

Normally, you set breakpoints so you can inspect the status of the program while it is
executing. This is the time when you can print out the contents of variables, as discussed
earlier in this chapter. You can also use other VBA menu commands (those under the the
Debug menu) to step through your procedure one instruction at a time. If you are done
inspecting the program, you can also choose the Run command from the Run menu. This
causes the procedure to continue executing as if no breakpoint had been encountered.

To later remove a breakpoint, stop your program and position the cursor on the line that
contains the breakpoint. Then, perform any of the actions you used to first set the breakpoint:
select the Toggle Breakpoint option from the Debug menu or click your mouse on the toolbar
Breakpoint tool. This removes the breakpoint, which you can see because VBA removes the
highlight from the program line.

Note: It is not unusual when you are testing your program to have several different
breakpoints set. If you want to remove all the breakpoints in your program at the same
time, you can do so by choosing the Clear All Breakpoints option from the Debug menu.

Chapter 20: Using Visual Basic for


Applications
(This is section 5 of 6 in this chapter)

Attaching Your Procedure to a Form


You now know how to create procedures you can use in your database. You will now want to
attach your procedure to a form so a user can click their mouse on a command button to
execute the procedure. The steps you must perform to attach your procedure to a form are
similar to those you used in Chapter 18 where you attached a macro to a form.

The first step is to load the form from which you want to use a subroutine. For example,
display the form Design window for the Review Accounts form, as shown in Figure 20-8.
Figure 20-8 The form you want to use.

Select the Command button and display the Event tab of the Properties dialog box. Scroll
through the properties until you see the event you want to trigger the VBA code. In this case,
use the On Click event. If you use the pull-down arrow to the right of this property box, you will
notice that you have two choices:

• Event procedure. This is a VBA procedure which you develop to run in response to this event.
• Display Ancillary. This is a macro stored in the Customers database. If you had other macros
defined in the database, they would be listed, as well.

You want to run an event procedure, so make that selection and click your mouse on the
Builder icon to the right of the property box. Access will then display the VBA Editor with a
Module window specific to this Command button, as shown in Figure 20-9.
Figure 20-9 The Module window for the Command button.

If you click your mouse on the pull-down arrow to the right of the toolbar Object box, you will
find that you can pick any other object in the form. If you click your mouse on the pull-down
arrow to the right of the toolbar Procedures box, you will find you can pick a number of pre-
defined procedures. Each of these procedures represents a specific event that can occur in
relation to the object in the Object box.

With the current settings in the Procedure and Objects boxes, you will develop a procedure
that VBA executes when someone clicks their mouse on the Change Reps object (which is the
button on the form).

At this point, you need to develop a procedure that will ask the user for a ZIP Code and a new
salesperson number. To do so, enter the subroutine shown in Figure 20-10.
Figure 20-10 The subroutine to call the ChangeSalesByZip function.

This procedure uses the InputBox function to display two questions to the user. The function
first asks for a ZIP Code and then for a replacement salesperson ID. With this information
available, the code invokes the ChangeSalesByZip function. When the function is complete, the
code displays a message box to indicate the outcome of the change.

After you type in this subroutine, click your mouse on the Save tool and then close the VBA
Editor. When you subsequently use the Review Accounts form, the Change Reps button will be
active. If you click your mouse on it, you will see the first of the two questions, as shown in
Figure 20-11.
Figure 20-11 Being prompted for a ZIP Code.

After you answer this question, the code will ask you for a new salesperson number. After you
type in your response, your program will update the records in the table.

Chapter 20: Using Visual Basic for


Applications
(This is section 6 of 6 in this chapter)

Summary
VBA provides a complete programming language you can use to create event-driven programs
for your databases. Using VBA is similar to using other versions of Basic for the Windows
environment, such as Visual Basic. In this chapter, you learned the bare essentials of
programming in VBA.

Before you move on to Chapter 21, make sure you understand the following key concepts:

• VBA is a programming language based on older versions of Basic.


• A VBA program is made up of procedures; a procedure is a series of programming lines designed
to accomplish a particular task.
• There are two types of procedures: functions and subroutines. The difference between the two is
that functions are designed to return a value, and subroutines are not.
• A VBA program can contain many different components, including statements, variables,
operators, and functions. When programming, you combine these elements to accomplish a task.
• In VBA, you can use a hierarchical addressing system to address database objects and collections
of objects.
• The VBA Editor is where you develop VBA programs. To display the VBA Editor, you first click your
mouse on the Modules button in the Database window and then click on New.
• VBA provides several tools you can use to help test your programs. These include the Immediate
window, Debug.Print, and breakpoints.
• You can develop event procedures as part of your forms and reports. You develop an event
procedure in much the same way as a regular procedure.

If you are interested in programming in VBA, the best thing to do is to simply try things out.
You will also probably want to get a hold of a good book on programming either in VBA or
Visual Basic.

Chapter 21 is the last chapter in Learn Access Now. In it, you will learn how to put together an
application which utilizes everything you have learned in this book to this point.

Chapter 21: Putting It All Together


(This is section 1 of 7 in this chapter)
Congratulations. You now know everything you need to know to put Access to work for you.
The previous chapters in this book have taught you everything from starting Access to working
with OLE to using VBA. In this chapter, all that information will be brought together, in one
place, as you review the design and implementation of a full-fledged database system. This
chapter is different from previous chapters in that it is not necessarily designed to teach you
anything, other than what you may learn by reviewing someone else's work.

Note: The database described in this section is include on the companion CD-ROM as CD
Collection.mdb. The sound snippets included in the database are also stored in the
Sounds folder on the CD-ROM.

Database Design
The database developed for this chapter provides a way to catalog and manage an audio CD
collection. When I first looked at developing this database, I determined that I needed to
maintain the following information:

• Song title
• CD name
• Track number
• Length
• Group
• Notes

In addition, I wanted the capability to keep a ten-second sound clip for each song in the
collection. With this as my starting point, my next task was to determine how I could minimize
repetitious data in the database. If the database kept a record for each song in a CD collection,
two fields (Group and CD Name) immediately presented themselves as potentially repetitious.
To get rid of the repetition, I made these fields the basis for other tables in the database. Thus,
I decided upon three tables:

• The CD Table (CD Collection). Holds the title and related information for each CD.
• The Song Table (Individual Tracks). Holds the individual songs from each CD.
• The Groups Table. Holds information about musical groups.

My next step was to examine each table and determine the information stored in each.

The CD Table
I intended the CD table to hold information related to an entire CD: the name, group, date of
release, and so on. This information would constitute the main table in the database. I decided
to name this table CD Collection. The table ended up having the layout shown in Table 21-1.

Lengt
Field Type
h
AutoNumb
Disc ID
er
Group ID Number Long
Title Text 40
Recording Label Text 35
Year Released Number Integer
Number of
Number Byte
Tracks
Date Purchased Date/Time
Purchase Price Currency
Note Memo
Table 21-1 Layout for the CD Collection table.

The Disc ID field, which is a AutoNumber, determines a unique identification number for each
CD in the collection and serves as the primary key for the table. In addition, the Individual
Tracks table uses the Disc ID field to track records to each individual CD record. If you desire,
you could label each physical CD in your collection with the Disc ID number, which makes
cataloging your CDs easier.

I picked the other fields in the table in a brainstorming session. None of these fields are
mandatory; I included many of them simply because I felt this was information which would be
"nice to maintain."

Note: I don't claim that my database design is the best possible design, or the only
design that will work. Determining what information to keep in a database is a very
subjective matter, and you may decide to keep entirely different information in your
database.

The Group ID field ties into the Groups table, described in a moment. I used this field to
indicate what group was responsible for which CD.

The Song Table


The Song table holds information about individual tracks on each of the CDs. This information
includes the song title, group, length, and a sample sound clip. I named this table Individual
Tracks, and it has the layout shown in Table 21-2.

Lengt
Field Type
h
Disc ID Number Long
Track Number Number Byte
Song Title Text 50
Group ID Number Long
Date/Tim
Length
e
Notes Memo
Sample Sound OLE
Clip Object
Table 21-2 Layout for the Individual Tracks table.

The Disc ID field ties the Individual Tracks table to the CD Collection table. I used this field to
indicate the CD that an individual song belongs to. Likewise, the Group ID field ties into the
field of the same name in the Groups table (described in the next section). You will use this
field when you want to search songs by group.
The Groups Table
The Groups table keeps track of information related to a musical group or individual singer. Of
the three tables, the Groups table contains the least information. It does, however, contain the
group name, when the group was formed, and where the group is from. The layout for this
table is shown in Table 21-3.

Lengt
Field Type
h
AutoNumb
Group ID
er
Group
Text 50
Name
Date
Date/Time
Formed
Where
Text 40
From
Notes Memo
Table 21-3 Layout for the Groups table.

The Group ID field is a AutoNumber that uniquely identifies every group in the table. This field
ties into both of the other tables in the database.

Establishing Relationships
With each of these tables in place, you are ready to establish relationships between the tables.
You establish table relationships as described in Chapter 12, "Understanding Data
Relationships." In this case, the linking fields and their purposes are:

• Disc ID. Both the CD Collection table and the Individual Tracks table use this field. It is a one-to-
many relationship, with the CD Collection table being the "one" side.
• Group ID. This field forms two relationships between three tables. In both instances, the field
forms a one-to-many relationship, with the Groups table being the "one" side. Relationships exist
between the Groups table and the CD Collection table and between the the Groups table and the
Individual Tracks table.

After you establish these relationships, the Relationships window should look similar to what is
shown in Figure 21-1.
Figure 21-1 The Relationships window.

Chapter 21: Putting It All Together


(This is section 2 of 7 in this chapter)

Forms in the Database


In designing forms for the CD database, my goal was to make using the system as simple as
possible. Therefore, I decided to use a two-pronged approach. First, I developed a switchboard
menu form; I would later start this form with an AutoExec macro. (An AutoExec macro is one
that automatically executes when a databases is first opened.) This form has four simple
choices on it, as follows:

• Add Music
• Review Music
• Print CD List
• Exit

I implemented these four choices using command buttons, tied to macros which run the
appropriate form or report. Figure 21-2 shows how my Startup form appears; this is the form
that implements the switchboard menu.
Figure 21-2 The Startup form.

On my Startup form, I placed four command buttons to run macros that would allow me to use
other database objects. (The next four sections describe the actions that were tied to each of
the command buttons.) My form also includes an unbound OLE object: a picture of a guitar.
This picture is a GIF graphic file that I inserted in an OLE frame.

Note: The term "unbound OLE object" may sound foreign. When something is described
as "unbound" in Access, it simply means it has not been associated with a data source. In
this case, the OLE object is unbound because it is not meant to be associated with data,
but with a non-changing picture.

Add Music
When I click my mouse on the Add Music command button, the Add CDs macro runs. This
macro has only two actions, OpenForm followed by GoToRecord. The OpenForm action opens
the Music Input form in Edit mode. The GoToRecord action then jumps to a brand new record
for the form.

The Add Music option and the Review Music option both use the Music Input form. I built the
form around the Sorted Collection query, described later in this chapter. The form consists of
two major parts: information from the CD Collection table (through the Sorted Collection query)
and information from the Individual Tracks table. I implemented the form using a form and
subform arrangement, as shown in Figure 21-3.
Figure 21-3 The Music Input form.

The Subform
The subform is a direct window into the Individual Tracks table. The form displays only those
tracks which correspond to the Disc ID. The definition of the subform is in the Track List form.
This form displays four fields from the Individual Tracks table, even though another field is
defined on the form as a hidden field. Figure 21-4 shows what this form looks like. (This form is
shown in its Design window so that you can see the hidden field.)
Figure 21-4 The Design window for the Track List form.

If you try to use this form by itself, the form does not work as you would want it to--instead, it
simply displays all the tracks in the Individual Tracks table. I designed the form for use with the
Music Input form where it is set up to display only those tracks for a particular CD.

The Track List form is based on the Sorted Tracks query, described later in this chapter.

Adding Groups
Notice that the form uses a Combo Box object for the musical group. If you click your mouse
on the pull-down arrow, you will see a list of groups which have been defined in the database.
These are, of course, saved in the Groups table. To select an existing group, you simply select
it from the list. To add a group (or groups), you click your mouse on the Add Group command
button. When you do, Access executes a macro called Click on Add Group. This macro is very
similar to the Add CDs macro. It contains two actions: OpenForm and GoToRecord. However,
Access opens the Add Groups form this time. This form allows you to add records to the
Groups table. Figure 21-5 shows what this form looks like.
Figure 21-5 The Add Groups form.

When you close this form, Access again displays the Music Input form. Access makes any
groups you added with the Add Groups form immediately available in the Combo Box object.

Review Music
When you click your mouse on the Review Music command button, Access executes the
Review CDs macro. This single-line macro opens the Music Input form, described earlier in the
chapter. The only difference is that the macro now opens the form with the Data Mode
argument set to Read Only. This means that by using this menu option, you can only review
the information in the database. Figure 21-6 shows how the Music Input form appears when
opened read only.
Figure 21-6 The Music Input form with a record displayed.

Notice that the subform, which displays information from the Individual Tracks table, is filled in
at the bottom of the screen. If you double-click your mouse on the OLE icon in the Clip column,
a music clip plays.

When you double-click your mouse on an OLE icon, the macro called Play OLE Clip executes.
This macro uses the RunCommand action to play the sound clip.

Print CD List
The Print CD List option does not display a form, but rather prints a report that lists your CDs.
The macro itself, called Print Report, is very similar to the conditional macro you developed in
Chapter 18, "Creating and Using Macros." The macro first checks to see if there are any
records in the Individual Tracks table. If there are not, then the macro ends. Otherwise, the
macro proceeds to the next step.

The first two macro actions turn screen echoing off and display the mouse pointer as an
hourglass. Then the OpenReport action prints the report named Collection Report (the
Collection Report is described fully later in this chapter). After the report is printed, the screen
updating turns back on and the mouse pointer returns to normal.

Exit
The Exit command button ties to a macro called Exit, which uses the Close action to close the
open form. When you select the Exit button, the current form is the Startup form, which
contains the switchboard menu. As such, Access closes your access to the database.

Potrebbero piacerti anche