Access 2013 Bible - Michael Alexander - E-Book

Access 2013 Bible E-Book

Michael Alexander

0,0
32,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

A comprehensive reference to the updated and new features of Access 2013 As the world's most popular database management tool, Access enables you to organize, present, analyze, and share data as well as build powerful database solutions. However, databases can be complex. That's why you need the expert guidance in this comprehensive reference. Access 2013 Bible helps you gain a solid understanding of database purpose, construction, and application so that whether you're new to Access or looking to upgrade to the 2013 version, this well-rounded resource provides you with a thorough look at everything Access can do. * Explains how to create tables, manipulate datasheets, and work with multiple tables * Teaches you how to apply the seven-step design method to build databases that are tailored to your needs * Covers building forms with wizards, creating bound and unbound forms, and adding data validation * Shows you ways to automate query parameters, create functions and subroutines, and add programmed error routines * Features a bonus website with content that contains all source code from the book as well as bonus shareware, freeware, trial, demo, and evaluation programs If you are looking for a comprehensive book on all things Access, look no further than Access 2013 Bible.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 1626

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Access® 2013 Bible

Table of Contents

Introduction

Part I: Access Building Blocks

Chapter 1: An Introduction to Database Development

The Database Terminology of Access

Databases

Tables

Records and fields

Values

Relational Databases

Access Database Objects

Datasheets

Queries

Data-entry and display forms

Reports

Database objects

A Five-Step Design Method

Step 1: The overall design — from concept to reality

Step 2: Report design

Step 3: Data design

Step 4: Table design

Step 5: Form design

Chapter 2: Getting Started with Access

The Access Welcome Screen

How to Create a Blank Desktop Database

The Access 2013 Interface

The Navigation pane

The Ribbon

The Quick Access toolbar

Part II: Understanding Access Tables

Chapter 3: Creating Access Tables

Table Types

Object tables

Transaction tables

Join tables

Creating a New Table

Designing tables

Using the Design tab

Working with fields

Creating tblCustomers

Using AutoNumber fields

Completing tblCustomers

Changing a Table Design

Inserting a new field

Deleting a field

Changing a field location

Changing a field name

Changing a field size

Handling data conversion issues

Assigning field properties

Understanding tblCustomers Field Properties

Setting the Primary Key

Choosing a primary key

Creating the primary key

Creating composite primary keys

Indexing Access Tables

The importance of indexes

Multiple-field indexes

When to index tables

Printing a Table Design

Saving the Completed Table

Manipulating Tables

Renaming tables

Deleting tables

Copying tables in a database

Copying a table to another database

Adding Records to a Database Table

Understanding Attachment Fields

Chapter 4: Understanding Table Relationships

Building Bulletproof Databases

Data Normalization and Denormalization

First normal form

Second normal form

Third normal form

Denormalization

Table Relationships

Connecting the data

One-to-one

One-to-many

Many-to-many

Integrity Rules

No primary key can contain a null value

All foreign key values must be matched by corresponding primary keys

Keys

Deciding on a primary key

Looking at the benefits of a primary key

Designating a primary key

Creating relationships and enforcing referential integrity

Viewing all relationships

Deleting relationships

Following application-specific integrity rules

Chapter 5: Working with Access Tables

Understanding Datasheets

Looking at the Datasheet Window

Moving within a datasheet

Using the Navigation buttons

Examining the Datasheet Ribbon

Opening a Datasheet

Entering New Data

Saving the record

Understanding automatic data-type validation

Knowing how properties affect data entry

Navigating Records in a Datasheet

Moving between records

Finding a specific value

Changing Values in a Datasheet

Manually replacing an existing value

Changing an existing value

Using the Undo Feature

Copying and Pasting Values

Replacing Values

Adding New Records

Deleting Records

Displaying Records

Changing the field order

Changing the field display width

Changing the record display height

Changing display fonts

Displaying cell gridlines and alternate row colors

Aligning data in columns

Hiding and unhiding columns

Freezing columns

Saving the changed layout

Saving a record

Sorting and Filtering Records in a Datasheet

Sorting your records with QuickSort

Filtering a selection

Filtering by form

Aggregating Data

Printing Records

Printing the datasheet

Using the Print Preview window

Chapter 6: Importing and Exporting Data

How Access Works with External Data

Types of external data

Ways of working with external data

Options for Importing and Exporting

How to Import External Data

Importing from another Access database

Importing from an Excel spreadsheet

Importing a SharePoint list

Importing data from text files

Importing and exporting XML documents

Importing and exporting HTML documents

Importing Access objects other than tables

Importing an Outlook folder

How to Export to External Formats

Exporting objects to other Access databases

Exporting through ODBC drivers

Exporting to Word

Publishing to PDF or XPS

Chapter 7: Linking to External Data

Linking External Data

Identifying linked tables

Limitations of linked data

Linking to other Access database tables

Linking to ODBC data sources

Linking to non-database data

Working with Linked Tables

Setting view properties

Setting relationships

Optimizing linked tables

Deleting a linked table reference

Viewing or changing information for linked tables

Refreshing linked tables

Splitting a Database

The benefits of splitting a database

Knowing where to put which objects

Using the Database Splitter add-in

Part III: Working with Access Queries

Chapter 8: Selecting Data with Queries

Introducing Queries

What queries are

What queries can do

What queries return

Creating a Query

Adding fields to your queries

Running your query

Working with Query Fields

Selecting a field in the QBE grid

Changing field order

Resizing columns in the QBE grid

Removing a field

Inserting a field

Hiding a field

Changing the sort order of a field

Adding Criteria to Your Queries

Understanding selection criteria

Entering simple string criteria

Entering other simple criteria

Printing a Query's Recordset

Saving a Query

Creating Multi-Table Queries

Viewing table names

Adding multiple fields

Recognizing the limitations of multi-table queries

Overcoming query limitations

Working with the Table Pane

Looking at the join line

Moving a table

Removing a table

Adding more tables

Creating and Working with Query Joins

Understanding joins

Leveraging ad hoc table joins

Specifying the type of join

Deleting joins

Chapter 9: Using Operators and Expressions in Access

Introducing Operators

Types of operators

Operator precedence

Using Operators and Expressions in Queries

Using query comparison operators

Understanding complex criteria

Using functions in select queries

Referencing fields in select queries

Entering Single-Value Field Criteria

Entering character (Text or Memo) criteria

The Like operator and wildcards

Specifying non-matching values

Entering numeric criteria

Entering true or false criteria

Entering OLE object criteria

Using Multiple Criteria in a Query

Understanding an Or operation

Specifying multiple values with the Or operator

Using the Or cell of the QBE pane

Using a list of values with the In operator

Using And to specify a range

Using the Between...And operator

Searching for null data

Entering Criteria in Multiple Fields

Using And and Or across fields in a query

Specifying Or criteria across fields of a query

Using And and Or together in different fields

A complex query on different lines

Chapter 10: Going Beyond Select Queries

Aggregate Queries

Creating an aggregate query

About aggregate functions

Action Queries

Make-table queries

Delete queries

Append queries

Update queries

Crosstab Queries

Using the Crosstab Query Wizard

Manually creating a crosstab query

Part IV: Analyzing Data in Access

Chapter 11: Transforming Data in Access

Finding and Removing Duplicate Records

Defining duplicate records

Finding duplicate records

Removing duplicate records

Common Transformation Tasks

Filling in blank fields

Concatenating

Changing case

Removing leading and trailing spaces from a string

Finding and replacing specific text

Adding your own text in key positions within a string

Parsing strings using character markers

Chapter 12: Working with Calculations and Dates

Using Calculations in Your Analyses

Common calculation scenarios

Constructing calculations with the Expression Builder

Common calculation errors

Using Dates in Your Analyses

Simple date calculations

Advanced analysis using functions

Chapter 13: Performing Conditional Analyses

Using Parameter Queries

How parameter queries work

Ground rules of parameter queries

Working with parameter queries

Using Conditional Functions

The IIf function

The Switch function

Comparing the IIf and Switch functions

Chapter 14: Fundamentals of Using Access SQL

Understanding Basic SQL

The SELECT statement

The WHERE clause

Making sense of joins

Getting Fancy with Advanced SQL Statements

Expanding your search with the Like operator

Selecting unique values and rows without grouping

Grouping and aggregating with the GROUP BY clause

Setting sort order with the ORDER BY clause

Creating aliases with the AS clause

Showing only the SELECT TOP or SELECT TOP PERCENT

Performing action queries via SQL statements

Creating crosstabs with the TRANSFORM statement

Using SQL Specific Queries

Merging datasets with the UNION operator

Creating a table with the CREATE TABLE statement

Manipulating columns with the ALTER TABLE statement

Creating pass-through queries

Chapter 15: Subqueries and Domain Aggregate Functions

Enhancing Your Analyses with Subqueries

Why use subqueries?

Subquery ground rules

Creating subqueries without typing SQL statements

Using IN and NOT IN with subqueries

Using subqueries with comparison operators

Using subqueries as expressions

Using correlated subqueries

Using subqueries within action queries

Domain Aggregate Functions

Understanding the different domain aggregate functions

Examining the syntax of domain aggregate functions

Using domain aggregate functions

Chapter 16: Running Descriptive Statistics in Access

Basic Descriptive Statistics

Running descriptive statistics with aggregate queries

Determining rank, mode, and median

Pulling a random sampling from your dataset

Advanced Descriptive Statistics

Calculating percentile ranking

Determining the quartile standing of a record

Creating a frequency distribution

Part V: Working with Access Forms and Reports

Chapter 17: Creating Basic Access Forms

Formulating Forms

Creating a new form

Looking at special types of forms

Resizing the form area

Saving your form

Working with Controls

Categorizing controls

Adding a control

Selecting and deselecting controls

Manipulating controls

Introducing Properties

Displaying the Property Sheet

Getting acquainted with the Property Sheet

Changing a control's property setting

Naming control labels and their captions

Chapter 18: Working with Data on Access Forms

Using Form View

Looking at the Home tab of the Ribbon

Navigating among fields

Moving among records in a form

Changing Values in a Form

Knowing which controls you can't edit

Working with pictures and OLE objects

Entering data in the Long Text field

Entering data in the Date field

Using option groups

Using combo boxes and list boxes

Switching to Datasheet view

Saving a record

Printing a Form

Working with Form Properties

Changing the title bar text with the Caption property

Creating a bound form

Specifying how to view the form

Removing the Record Selector

Looking at other form properties

Adding a Form Header or Footer

Working with Section Properties

The Visible property

The Height property

The Back Color property

The Special Effect property

The Display When property

The printing properties

Changing the Layout

Changing a control's properties

Setting the tab order

Modifying the format of text in a control

Using the Field List to add controls

Converting a Form to a Report

Chapter 19: Working with Form Controls

Setting Control Properties

Customizing default properties

Looking at common controls and properties

Creating a Calculated Control

Working with Subforms

Form Design Tips

Using the Tab Stop property

Tallying check boxes

Using SQL for a faster refresh

Setting up combo boxes and list boxes

Tackling Advanced Forms Techniques

Using the Page Number and Date/Time controls

Using the Image control

Morphing a control

Using the Format Painter

Offering more end-user help

Adding background pictures

Limiting the records shown on a form

Using the Tab Control

Using Dialog Boxes to Collect Information

Designing the query

Setting up the command buttons

Adding a default button

Setting a Cancel button

Removing the control menu

Designing a Form from Scratch

Creating the basic form

Creating a subform

Adding the subform

Changing the form's behavior

Changing the form's appearance

Chapter 20: Presenting Data with Access Reports

Introducing Reports

Identifying the different types of reports

Distinguishing between reports and forms

Creating a Report, from Beginning to End

Defining the report layout

Assembling the data

Creating a report with the Report Wizard

Printing or viewing the report

Saving the report

Banded Report Design Concepts

The Report Header section

The Page Header section

The Group Header section

The Detail section

The Group Footer section

The Page Footer section

The Report Footer section

Creating a Report from Scratch

Creating a new report and binding it to a query

Defining the report page size and layout

Placing controls on the report

Resizing a section

Working with text boxes

Changing label and text-box control properties

Growing and shrinking Text Box controls

Sorting and grouping data

Sorting data within groups

Adding page breaks

Improving the Report's Appearance

Adjusting the page header

Creating an expression in the group header

Creating a report header

Chapter 21: Advanced Access Report Techniques

Grouping and Sorting Data

Grouping data alphabetically

Grouping on date intervals

Hiding repeating information

Hiding a page header

Starting a new page number for each group

Formatting Data

Creating numbered lists

Adding bullet characters

Adding emphasis at runtime

Avoiding empty reports

Inserting vertical lines between columns

Adding a blank line every n records

Even-odd page printing

Using different formats in the same text box

Centering the title

Easily aligning control labels

Micro-adjusting controls

Adding Data

Adding more information to a report

Adding the user's name to a bound report

Trying More Techniques

Displaying all reports in a combo box

Fast printing from queried data

Using snaking columns in a report

Exploiting two-pass report processing

Assigning unique names to controls

Part VI: Access Programming Fundamentals

Chapter 22: Using Access Macros

An Introduction to Macros

Creating a macro

Assigning a macro to an event

Understanding Macro Security

Enabling sandbox mode

The Trust Center

Multi-Action Macros

Submacros

Conditions

Opening reports using conditions

Multiple actions in conditions

Temporary Variables

Enhancing a macro you've already created

Using temporary variables to simplify macros

Using temporary variables in VBA

Error Handling and Macro Debugging

The OnError action

The MacroError object

Debugging macros

Embedded Macros

Macros versus VBA Statements

Choosing between macros and VBA

Converting existing macros to VBA

Chapter 23: Getting Started with Access VBA

Introducing Visual Basic for Applications

Understanding VBA Terminology

Starting with VBA Code Basics

Creating VBA Programs

Modules and procedures

Working in the code window

Understanding VBA Branching Constructs

Branching

Looping

Working with Objects and Collections

An object primer

Properties and methods

The With statement

The For Each statement

Exploring the Visual Basic Editor

The Immediate window

The Project Explorer

The Object Browser

VBE options

Chapter 24: Mastering VBA Data Types and Procedures

Using Variables

Naming variables

Declaring variables

Working with Data Types

Comparing implicit and explicit variables

Forcing explicit declaration

Using a naming convention

Understanding variable scope and lifetime

Using constants

Working with arrays

Understanding Subs and Functions

Understanding where to create a procedure

Calling VBA procedures

Creating subs

Creating Functions

Handling parameters

Calling a function and passing parameters

Creating a function to calculate sales tax

Simplifying Code with Named Arguments

Chapter 25: Understanding the Access Event Model

Programming Events

Understanding how events trigger VBA code

Creating event procedures

Identifying Common Events

Form event procedures

Control event procedures

Report event procedures

Report section event procedures

Paying Attention to Event Sequence

Looking at common event sequences

Writing simple form and control event procedures

Chapter 26: Debugging Your Access Applications

Organizing VBA Code

Testing Your Applications

Testing functions

Compiling VBA code

Traditional Debugging Techniques

Using MsgBox

Using Debug.Print

Using the Access Debugging Tools

Running code with the Immediate window

Suspending execution with breakpoints

Looking at variables with the Locals window

Setting watches with the Watches window

Using conditional watches

Using the Call Stack window

Trapping Errors in Your Code

Understanding error trapping

The Err object

Including error handling in your procedures

Part VII: Advanced Access Programming Techniques

Chapter 27: Accessing Data with VBA Code

Working with Data

Understanding ADO Objects

The ADO Connection object

The ADO Command object

The ADO Recordset object

Understanding DAO Objects

The DAO DBEngine object

The DAO Workspace object

The DAO Database object

The DAO TableDef object

The DAO QueryDef object

The DAO Recordset object

The DAO Field objects (recordsets)

Writing VBA Code to Update a Table

Updating fields in a record using ADO

Updating a calculated control

Adding a new record

Deleting a record

Deleting related records in multiple tables

Chapter 28: Advanced Data Access with VBA

Adding an Unbound Combo Box to a Form to Find Data

Using the FindRecord method

Using a bookmark

Filtering a Form

With code

With a query

Chapter 29: Integrating Access and SQL Server

Introducing SQL Server Express

Understanding Data Types in SQL Server

Installing SQL Server Express

Installing the database engine

Installing a sample database

Getting to know Management Studio

Using the command line

Connecting to SQL Server

Creating a data source

Linking SQL Server to Access

Using ADO with SQL Server

Working with SQL Server Objects

Using SQL Server tables from Access

Views

Stored procedures

Triggers

Chapter 30: Customizing the Ribbon

The Ribbon Hierarchy

Controls for Access Ribbons

Special Ribbon features

Editing the Default Ribbon

Working with the Quick Access Toolbar

Developing Custom Ribbons

The Ribbon creation process

Using VBA callbacks

Creating a Custom Ribbon

Step 1: Design the Ribbon and build the XML

Step 2: Write the callback routines

Step 3: Create the USysRibbons table

Step 4: Add XML to USysRibbons

Step 5: Specify the custom Ribbon property

The Basic Ribbon XML

Adding Ribbon Controls

Specifying imageMso

The Label control

The Button control

Separators

Check boxes

The DropDown control

The SplitButton Control

Attaching Ribbons to Forms and Reports

Completely Removing the Ribbon

Chapter 31: Preparing Your Access Application for Distribution

Defining the Current Database Options

Application options

Navigation options

Ribbon and toolbar options

Name AutoCorrect Options

Developing the Application

Building to a specification

Creating documentation

Testing the application before distribution

Polishing Your Application

Giving your application a consistent look and feel

Adding common professional components

Making the application easy to start

Bulletproofing an Application

Using error trapping on all Visual Basic procedures

Separating tables from the rest of the application

Building bulletproof forms

Validating user input

Using the /runtime option

Encrypting or encoding a database

Protecting Visual Basic code

Securing the Environment

Setting startup options in code

Disabling startup bypass

Setting property values

Getting property values

Part VIII: Access and Windows SharePoint Services

Chapter 32: Understanding Windows SharePoint Services

Introducing SharePoint

Reviewing Various Types of SharePoint Sites

Looking at a SharePoint Website

Understanding SharePoint documents

Understanding SharePoint lists

The Concept Behind Access and SharePoint Integration

Chapter 33: Integrating Access with SharePoint

Sharing Access Data with SharePoint

Linking to SharePoint lists

Importing SharePoint lists

Exporting Access tables to SharePoint

Moving Access tables to SharePoint

Using SharePoint Templates

Chapter 34: Understanding Access Services

Explaining Managed Applications

Looking at Web Publishing in Access

Why SharePoint?

Leveraging SharePoint features

Understanding Access Services

Examining Access Web Application Limits

Limitations of Access Services

Transactional limitations

Chapter 35: Deploying Access Applications to SharePoint

Publishing a Custom Access Application to SharePoint

Preparing the Access data model

Initializing and configuring the custom web application

Launching and managing your web application

Chapter 36: Using Access Data Macros

Introducing Data Macros

Understanding Table Events

“Before” events

“After” events

Using the Macro Designer for Data Macros

Understanding the Action Catalog

Program flow

Data blocks

Data actions

Creating Your First Data Macro

Managing Macro Objects

Collapsing and expanding macro items

Moving macro items

Saving a macro as XML

Recognizing the Limitations of Data Macros

Part IX: Appendixes

Appendix A: Access 2013 Specifications

Appendix B: Optimizing Access Applications

Organizing your modules

Pruning the call tree

Putting your application's code into a compiled state

Losing the compiled state

Tuning your system

Getting the most from your tables

Getting the most from your queries

Getting the most from your forms and reports

Getting the most from your modules

Increasing network performance

Understanding how databases grow in size

Recognizing that compiling and compacting may not be enough

Making small changes to large databases

Appendix C: Understanding Query Performance and Database Corruption

Normalizing your database design

Using indexes on appropriate fields

Optimizing by improving query design

Compacting and repairing your database regularly

Identifying a corrupted database

Recovering a corrupted database

Preventing database corruption

Appendix D: Function Reference for Data Analysts

End User License Agreement

Access® 2013 Bible

Published byJohn Wiley & Sons, Inc.10475 Crosspoint BoulevardIndianapolis, IN 46256www.wiley.com

Copyright © 2013 by John Wiley & Sons, Inc., Indianapolis, Indiana

Published simultaneously in Canada

ISBN 978-1-118-49035-8 (pbk); ISBN 978-1-118-49034-1 (ebk); ISBN 978-1-118-49155-3 (ebk); ISBN 978-1-118-49154-6 (ebk)

Manufactured in the United States of America

10 9 8 7 6 5 4 3 2 1

No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, 201-748-6011, fax 201-748-6008, or online at http://www.wiley.com/go/permissions.

Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties with respect to the accuracy or completeness of the contents of this work and specifically disclaim all warranties, including without limitation warranties of fitness for a particular purpose. No warranty may be created or extended by sales or promotional materials. The advice and strategies contained herein may not be suitable for every situation. This work is sold with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional services. If professional assistance is required, the services of a competent professional person should be sought. Neither the publisher nor the author shall be liable for damages arising herefrom. The fact that an organization or Website is referred to in this work as a citation and/or a potential source of further information does not mean that the author or the publisher endorses the information the organization or Website may provide or recommendations it may make. Further, readers should be aware that Internet Websites listed in this work may have changed or disappeared between when this work was written and when it is read.

For general information on our other products and services or to obtain technical support, please contact our Customer Care Department within the U.S. at (877) 762-2974, outside the U.S. at (317) 572-3993 or fax (317) 572-4002.

Library of Congress Control Number: 2013933952

Trademarks: Wiley and the Wiley logo are trademarks or registered trademarks of John Wiley & Sons, Inc., in the United States and other countries, and may not be used without written permission. Microsoft and Access are registered trademarks of Microsoft Corporation. All other trademarks are the property of their respective owners. John Wiley & Sons, Inc. is not associated with any product or vendor mentioned in this book.

Wiley publishes in a variety of print and electronic formats and by print-on-demand. Some material included with standard print versions of this book may not be included in e-books or in print-on-demand. If this book refers to media such as a CD or DVD that is not included in the version you purchased, you may download this material at http://booksupport.wiley.com. For more information about Wiley products, visit www.wiley.com.

Credits

Sr. Acquisitions Editor

Katie Mohr

Project Editor

Elizabeth Kuball

Technical Editor

Doug Steele

Copy Editor

Elizabeth Kuball

Editorial Manager

Jodi Jensen

Editorial Director

Mary Corder

Vice President and Executive Group Publisher

Richard Swadley

Vice President and Publisher

Andy Cummings

Senior Project Coordinator

Kristie Rees

Graphics and Production Specialists

Andrea HornbergerJennifer Mayberry

Quality Control Technician

Lindsay Amones

Proofreading and Indexing

Evelyn WellbornBIM Indexing & Proofreading Services

Vertical Websites Project Manager and Producer

Rich Graves

About the Authors

Michael Alexander is a Microsoft Certified Application Developer (MCAD) and author of several books on advanced business analysis with Microsoft Access and Microsoft Excel. He has more than 15 years of experience consulting and developing Microsoft Office solutions. Mike has been named a Microsoft MVP for his ongoing contributions to the Excel community. In his spare time, he runs a free tutorial site, www.datapigtechnologies.com, where he shares Excel and Access tips.

Dick Kusleika has been awarded as a Microsoft MVP for 12 consecutive years and has been working with Microsoft Office for more than 20. Dick develops Access- and Excel-based solutions for his clients and has conducted training seminars on Office products in the United States and Australia. Dick also writes a popular Excel-related blog at www.dailydoseofexcel.com.

To the memory of Mike Groh, the author of this book's previous two editions.

Our deepest thanks to the professionals at John Wiley & Sons for all the hours of work put into bringing this book to life. Thanks also to Doug Steele for suggesting numerous improvements to the examples and text in this book. Finally, a special thank you goes out to our families for putting up with all the time spent locked away on this project.

Introduction

Welcome to Access 2013 Bible, your personal guide to the most powerful desktop database management system available today.

If you've picked up this book, you've probably already recognized that Microsoft Access can help you manage your data in ways that no other application can. Even the king of applications, Microsoft Excel, can't do what Access can. Now, it may seem silly to compare Access (a database management application) with Excel (a spreadsheet application), but there is no doubt that Excel is being used every day to manage and analyze large amounts of data in all kinds of organizations. Indeed, you may be opening this book because you need to get past the limitations of Excel.

Access is an excellent (many would say logical) next step for the analyst who faces an ever-increasing data pool. Access takes very few performance hits with larger datasets. It has no predetermined row limitations. And it can effectively manage the relationships between disparate data tables. In addition, Access comes with tools that help you build your own distributable applications.

Today, when we have more data than ever and more demands for complex data analysis, power analysts need to add some tools to their repertoire in order to get away from being simply “spreadsheet mechanics.” That's why this book is such an important step in the evolution of your skillset. Throughout this book, not only will you get an introduction to Access, but you'll also learn various ways in which you can use Access to improve your daily data management and analysis.

Is This Book for You?

This book contains everything you need in order to learn Access 2013 to a mid-advanced level. The book starts off with database basics and builds, chapter by chapter.

This book is designed to enhance the skillset of users at all levels (beginning, intermediate, and even advanced users of Access). Start at the beginning if you're new to Access. If you're already familiar with Access and comfortable building Access applications, you may want to start with the later parts of this book.

If you're new to the world of database management, this book has everything you need to get started with Access 2013. It also offers advanced topics for reference and learning. Beginning developers should pay particular attention to Part I, where we cover the essential skills necessary for building successful and efficient databases. Your ability as a database designer is constantly judged by how well the applications you build perform and how well they handle data entrusted to them by their users.

If you've been working an earlier version of Access, this book is for you. Although you may already be familiar with the workings of Access, every new version has changes not only in features, but also in the mechanics of how certain actions are performed. This book will help you navigate through all these changes.

If you want to learn the basics of Visual Basic for Applications (VBA) programming, you'll find what you need in this book. Although the topic of VBA is a rich one that deserves its own book, this book offers a robust set of chapters that will get you started leveraging VBA to enhance your Access databases. Part VI of this book explains the nuts and bolts — with a lot of gritty technical details — of writing VBA procedures and building Access applications around the code you add to your databases.

Conventions Used in This Book

We use the following conventions in this book:

• When you're instructed to press a key combination (press and hold down one key while pressing another key), the key combination is separated by a plus sign. For example, Ctrl+Esc indicates that you must hold down the Ctrl key and press the Esc key; then release both keys.

• Point the mouse refers to moving the mouse so that the mouse pointer is on a specific item. Click refers to pressing the left mouse button once and releasing it. Double-click refers to pressing the left mouse button twice in rapid succession and then releasing it. Right-click refers to pressing the right mouse button once and releasing it. Drag refers to pressing and holding down the left mouse button while moving the mouse.

• We use italics for new terms and for emphasis.

• We use bold for material that you need to type directly into the computer.

• We use monofont for code and for on-screen messages.

How This Book Is Organized

This book is divided into nine parts:

• Part I: Access Building Blocks: Part I provides a solid understanding of the basic elements of databases, introduces you to the keywords of database management, and teaches you how to plan tables and work with Access data types. In this part, you'll also get your first look into Access and the Access interface.

• Part II: Understanding Access Tables: In Part II, you get the skills you need to build Access tables, manage relationships between tables, and link to disparate data sources like Excel files, text files, SQL Server, and other Access databases.

• Part III: Working with Access Queries: Part III introduces you to some of the basic analytical tools available in Access. Here, you'll explore the Query Builder, as well as techniques to create both simple and advanced analytical outputs from your Access tables. We cover query basics, aggregate queries, action queries, and crosstab queries.

• Part IV: Analyzing Data in Access: Part IV demonstrates many of the advanced techniques that truly bring data analysis to the next level. Here, you'll explore how to transform your data via queries, create custom calculations, perform conditional analysis, build powerful subqueries, and apply statistical analysis to your queries.

• Part V: Working with Access Forms and Reports: Part V focuses on building forms and reports using Access. Here, we cover the basics of turning data into slick-looking user interfaces and PDF-style Access reports. You'll also explore how to enhance the look and feel of your Access applications via advanced form controls.

• Part VI: Access Programming Fundamentals: In Part VI, you'll take the next step and dive into programming. The chapters in this part start you with Access macros, take you into VBA fundamentals, and eventually work up to leveraging VBA to improve your Access database. This part helps you understand the complex object and event models that drive Access applications and how to construct the VBA code necessary to take advantage of this rich programming environment.

• Part VII: Advanced Access Programming Techniques: Part VII turns your attention to automation and integration, showing you how your reporting mechanisms can be enhanced by leveraging other programs and platforms. In these chapters, you'll not only learn the fundamental skills required to become more proficient in VBA, but you'll also discover many insider tricks to apply to your Access application development projects. You'll also explore advanced techniques, such as customizing the Access 2013 Ribbon.

• Part VIII: Access and Windows SharePoint Services: In Part VIII, we cover the topic of Microsoft Windows SharePoint Services. Here, you'll discover the extended Microsoft SharePoint integration capabilities in Access that allow you to publish Access tables, forms, and reports on SharePoint sites. Although somewhat limited when compared with strictly Access applications, publishing Access objects to the SharePoint platform provides a powerful way of sharing Access data with remote users.

• Part IX: Appendixes: Part IX includes useful reference materials that will assist you in your everyday dealings with Access. Appendix A documents the Access 2013 specifications, including maximum and minimum sizes of databases and many of the controls in Access. Appendix B offers ideas on how to improve speed and performance of your Access applications. Appendix C shows you how to avoid and handle corruption issues when working with Access databases. Appendix D details many of the built-in Access functions that are available to data analysts.

How to Use This Book

Although each chapter is an integral part of the book as a whole, each chapter can also stand on its own and has its own example files, available on the book's website. You can read the book in any order you want, skipping from chapter to chapter and from topic to topic. This book's index is particularly thorough; you can refer to the index to find the location of a particular topic you're interested in.

What's on the Website

The examples demonstrated throughout this book can be found on this book's website. The URL is www.wiley.com/go/access2013bible.

Getting Additional Help with Access

As you experiment with the new functions and tools you learn here in this book, you may sometimes need an extra push in the right direction. The first place you should look is Access's Help system. The Help system in Access isn't perfect. To a new user, the Help system may seem like a clunky add-in that returns a perplexing list of topics that has nothing to do with the original topic being searched. The truth is, however, once you learn how to use the Access Help system effectively, it's often the fastest and easiest way to get extra help on a topic.

Following are some tips that will help you get the most out of Access's Help system:

• Location matters when asking for help. You may remember the Help system in older versions of Access being a lot more user-friendly and more effective than newer versions of Access. Well, rest assured that you aren't just imagining it. The fact is, Microsoft fundamentally changed the mechanics of the Access Help system.

In Access 2013, there are actually two Help systems: one providing help on Access features and another providing help on VBA programming topics. Instead of doing a global search with your criteria, Access throws your search criteria only against the Help system that is relevant to your current location. This essentially means that the help you get is determined by the area of Access in which you're working. So, if you need help on a topic that involves VBA programming, you'll need to be in the VBA Editor while performing your search. On the other hand, if you need help on building a query, it's best to be in the Query Design view. This will ensure that your keyword search is performed on the correct Help system.

• Online help is better than offline help. When you search for help on a topic, Access checks to see if you're connected to the Internet. If you are, Access returns help results based on online content from Microsoft's website. If you aren't, Access uses the Help files that are locally stored with Microsoft Office. One way to maximize the help you get in Access is to use the online help. Online help is generally better than offline help because the content you find with online help is often more detailed and includes updated information, as well as links to other resources not available offline.

• Diversify your knowledge base with online resources. Familiarize yourself with a handful of websites and forums dedicated to Access. These resources can serve as supplemental help, not only for basic Access topics, but also to give you situation-specific tips and tricks. The following list of sites should get you started.

• www.allenbrowne.com

• www.microsoft.com/office/community/en-us/default.mspx

• www.mvps.org/access

• www.utteraccess.com

These sites are free to use and are particularly helpful when you need an extra push in the right direction.

Part I: Access Building Blocks

In This Part

Chapter 1: An Introduction to Database Development

Chapter 2: Getting Started with Access

Each part of this book builds on previous parts, and the chapters in each part contain examples that draw on techniques explained in previous parts and chapters. As a developer, your applications will benefit from the skills you acquire by reading the chapters and practicing the examples contained in this book.

But everyone has to start somewhere when approaching a new discipline, and Part I of this book presents the essential skills necessary for anyone to succeed at database development with Access. The topics covered in this part explain the concepts and techniques that are necessary to successfully use database environments and give you the skills necessary to normalize data and plan and implement effective tables.

If you're already familiar with the concepts involved in database design, you may want to skim these chapters. If you're new to the world of databases, spend some time here gaining a thorough understanding of these important topics.

Chapter 1: An Introduction to Database Development

IN THIS CHAPTER

Examining the differences between databases, tables, records, fields, and values

Discovering why multiple tables are used in a database

Exploring Access database objects

Designing a database system

Database development is unlike most other ways you work with computers. Unlike Microsoft Word or Excel, where the approach to working with the application is relatively intuitive, good database development requires prior knowledge. You have to learn a handful of fundamentals, including database terminology, basic database concepts, and database best practices.

Throughout this chapter, we cover the fundamentals of database development.

 If your goal is to get right into Access, you might want to skip to Chapter 2.

The Database Terminology of Access

Access follows most, but not all, traditional database terminology. The terms database, table, record, field, and value indicate a hierarchy from largest to smallest. These same terms are used with virtually all database systems.

Databases

Generally, the word database is a computer term for a collection of information concerning a certain topic or business application. Databases help you organize this related information in a logical fashion for easy access and retrieval.

Note

Some older database systems used the term database to describe individual tables; current use of database applies to all elements of a database system.

Databases aren't only for computers. There are also manual databases; we sometimes refer to these as manual filing systems or manual database systems. These filing systems usually consist of people, papers, folders, and filing cabinets — paper is the key to a manual database system. In manual database systems, you typically have in and out baskets and some type of formal filing method. You access information manually by opening a file cabinet, taking out a file folder, and finding the correct piece of paper. Users fill out paper forms for input, perhaps by using a keyboard to input information that's printed on forms. You find information by manually sorting the papers or by copying information from many papers to another piece of paper (or even into an Excel spreadsheet). You may use a spreadsheet or calculator to analyze the data or display it in new and interesting ways.

An Access database is nothing more than an automated version of the filing and retrieval functions of a paper filing system. Access databases store information in a carefully defined structure. Access tables store a variety of different kinds of data, from simple lines of text (such as name and address) to complex data such as pictures, sounds, or video images. Storing data in a precise format enables a database management system (DBMS) like Access to turn data into useful information.

Tables serve as the primary data repository in an Access database. Queries, forms, and reports provide access to the data, enabling a user to add or extract data, and presenting the data in useful ways. Most developers add macros or Visual Basic for Applications (VBA) code to forms and reports to make their Access applications easier to use.

A relational database management system (RDBMS), such as Access, stores data in related tables. For example, a table containing employee data (names and addresses) may be related to a table containing payroll information (pay date, pay amount, and check number).

Queries allow the user to ask complex questions (such as “What is the sum of all paychecks issued to Jane Doe in 2012?”) from these related tables, with the answers displayed as onscreen forms and printed reports.

In fact, one of the fundamental differences between a relational database and a manual filing system is that, in a relational database system, data for a single person or item may be stored in separate tables. For example, in a patient management system, the patient's name, address, and other contact information is likely to be stored in a different table from the table holding patient treatments. In fact, the treatment table holds all treatment information for all patients, and a patient identifier (usually a number) is used to look up an individual patient's treatments in the treatment table.

In Access, a database is the overall container for the data and associated objects. It's more than the collection of tables, however — a database includes many types of objects, including queries, forms, reports, macros, and code modules.

As you open an Access database, the objects (tables, queries, and so on) in the database are presented for you to work with. You may open several copies of Access at the same time and simultaneously work with more than one database, if needed.

Many Access databases contain hundreds, or even thousands, of tables, forms, queries, reports, macros, and modules. With a few exceptions, all the objects in an Access database reside within a single file with an extension of ACCDB, ACCDE, MDB, MDE, or ADP.

Tables

A table is just a container for raw information (called data), similar to a folder in a manual filing system. Each table in an Access database contains information about a single entity, such as a person or product, and the data in the table is organized into rows and columns.

 In Chapters 3 and 4, you learn the very important rules governing relational table design and how to incorporate those rules into your Access databases. These rules and guidelines ensure that your applications perform well while protecting the integrity of the data contained within your tables.

In Access a table is an entity. As you design and build Access databases, or even when working with an existing application, you must think of how the tables and other database objects represent the physical entities managed by your database and how the entities relate to one another.

After you create a table, you can view the table in a spreadsheet-like form, called a datasheet, comprising rows and columns (known as records and fields, respectively — see the following section, “Records and fields”). Although a datasheet and a spreadsheet are superficially similar, a datasheet is a very different type of object.

 Chapter 5 discusses Access datasheets and the differences between datasheets and spreadsheets. You can find much more about fields and field properties in Chapter 3.

Records and fields

A datasheet is divided into rows (called records) and columns (called fields), with the first row (the heading on top of each column) containing the names of the fields in the database.

Each row is a single record containing fields that are related to that record. In a manual system, the rows are individual forms (sheets of paper), and the fields are equivalent to the blank areas on a printed form that you fill in.

Each column is a field that includes many properties that specify the type of data contained within the field, and how Access should handle the field's data. These properties include the name of the field (Company) and the type of data in the field (Text). A field may include other properties as well. For example, the Address field's Size property tells Access the maximum number of characters allowed for the address.

Note

When working with Access, the term field is used to refer to an attribute stored in a record. In many other database systems, including Microsoft SQL Server, column is the expression you'll hear most often in place of field.Field and column mean the same thing. The terminology used relies somewhat on the context of the database system underlying the table containing the record.

Values

At the intersection of a record and a field is a value — the actual data element. For example, if you have a field called Company, a company name entered into that field would represent one data value. Certain rules govern how data is contained in an Access table.

 See Chapters 3 and 4 for more on these rules.

Relational Databases

Access is a relational database management system. Access data is stored in related tables, where data in one table (such as customers) is related to data in another table (such as orders). Access maintains the relationships between related tables, making it easy to extract a customer and all the customer's orders, without losing any data or pulling order records not owned by the customer.

Multiple tables simplify data entry and reporting by decreasing the input of redundant data. By defining two tables for an application that uses customer information, for example, you don't need to store the customer's name and address every time the customer purchases an item.

After you've created the tables, they need to be related to each other. For example, if you have a Customer table and a Sales table, you can relate the two tables using a common field between them. In this case, Customer Number would be a good field to have in both tables. This will allow you to see sales in the Sales table where the Customer Number matches the Customer table.

The benefit of this model is that you don't have to repeat key attributes about a customer (like customer name, address, city, state, zip) each time you add a new record to the Sales table. All you need is the customer number. When a customer changes address, for example, the address changes only in one record in the Customers table.

Why Create Multiple Tables?

The prospect of creating multiple tables almost always intimidates beginning database users. Most often, beginners want to create one huge table that contains all the information they need — for example, a Customer table with all the sales placed by the customer and the customer's name, address, and other information. After all, if you've been using Excel to store data so far, it may seem quite reasonable to take the same approach when building tables in Access.

A single large table for all customer information quickly becomes difficult to maintain. You have to input the customer information for every sale a customer makes (repeating the name and address information over and over in every row). The same is true for the items purchased for each sale when the customer has purchased multiple items as part of a single purchase. This makes the system more inefficient and prone to data-entry mistakes. The information in the table is inefficiently stored — certain fields may not be needed for each sales record, and the table ends up with a lot of empty fields.

You want to create tables that hold a minimum of information while still making the system easy to use and flexible enough to grow. To accomplish this, you need to consider making more than one table, with each table containing fields that are related only to the focus of that table. Then, after you create the tables, you link them so that you're able to glean useful information from them. Although this process sounds extremely complex, the actual implementation is relatively easy.

Separating data into multiple tables within a database makes a system easier to maintain because all records of a given type are within the same table. By taking the time to properly segment data into multiple tables, you experience a significant reduction in design and work time. This process is known as normalization.

 You can read about normalization in Chapter 4.

Access Database Objects

If you're new to databases (or even if you're an experienced database user), you need to understand a few key concepts before starting to build Access databases. The Access database contains six types of top-level objects, which consist of the data and tools that you need to use Access:

• Table: Holds the actual data.

• Query: Searches for, sorts, and retrieves specific data.

• Form: Lets you enter and display data in a customized format.

• Report: Displays and prints formatted data.

• Macro: Automates tasks without programming.

• Module: Containsprogramming statements written in the VBA programming language.

Datasheets

Datasheets are one of the many ways by which you can view data in Access. Although not a permanent database object, a datasheet displays a table's content in a row-and-column format similar to an Excel worksheet. A datasheet displays a table's information in a raw form, without transformations or filtering. The Datasheet view is the default mode for displaying all fields for all records.

You can scroll through the datasheet using the directional keys on your keyboard. You can also display related records in other tables while in a datasheet. In addition, you can make changes to the displayed data.

Queries

Queries extract information from a database. A query selects and defines a group of records that fulfill a certain condition. Most forms and reports are based on queries that combine, filter, or sort data before it's displayed. Queries are often called from macros or VBA procedures to change, add, or delete database records.

An example of a query is when a person at the sales office tells the database, “Show me all customers, in alphabetical order by name, who are located in Massachusetts and bought something over the past six months” or “Show me all customers who bought Chevrolet car models within the past six months and display them sorted by customer name and then by sale date.”

Instead of asking the question in plain English, a person uses the query by example (QBE) method. When you enter instructions into the Query Designer window and run the query, the query translates the instructions into Structured Query Language (SQL) and retrieves the desired data.

 Chapter 8 discusses the Query Designer window and building queries.

Data-entry and display forms

Data-entry forms help users get information into a database table quickly, easily, and accurately. Data-entry and display forms provide a more structured view of the data than what a datasheet provides. From this structured view, database records can be viewed, added, changed, or deleted. Entering data through the data-entry forms is the most common way to get the data into the database table.

Data-entry forms restrict access to certain fields within the table. Forms can also be enhanced with data validation rules or VBA code to check the validity of your data before it's added to the database table.

Most users prefer to enter information into data-entry forms rather than into Datasheet views of tables. Forms often resemble familiar paper documents and can aid the user with data-entry tasks. Forms make data entry easy to understand by guiding the user through the fields of the table being updated.

Read-only forms are often used for inquiry purposes. These forms display certain fields within a table. Displaying some fields and not others means that you can limit a user's access to sensitive data while allowing access to other fields within the same table.

Reports

Reports present your data in printed format. Access allows for an extraordinary amount of flexibility when creating reports. For instance, you can configure a report to list all records in a given table (such as a Customers table) or you can have the report contain only the records meeting certain criteria (such as all customers living in Arizona). You do this by basing the report on a query that selects only the records needed by the report.

Reports often combine multiple tables to present complex relationships among different sets of data. An example is printing an invoice. The customers table provides the customer's name and address (and other relevant data) and related records in the sales table to print the individual line-item information for each product ordered. The report also calculates the sales totals and prints them in a specific format. Additionally, you can have Access output records into an invoice report, a printed document that summarizes the invoice.

Tip

When you design your database tables, keep in mind all the types of information that you want to print. Doing so ensures that the information you require in your various reports is available from within your database tables.

Database objects

To create database objects, such as tables, forms, and reports, you first complete a series of design tasks. The better your design is, the better your application will be. The more you think through your design, the faster and more successfully you can complete any system. The design process is not some necessary evil, nor is its intent to produce voluminous amounts of documentation. The sole intent of designing an object is to produce a clear-cut path to follow as you implement it.

A Five-Step Design Method

The five design steps described in this section provide a solid foundation for creating database applications — including tables, queries, forms, reports, macros, and simple VBA modules.

The time you spend on each step depends entirely on the circumstances of the database you're building. For example, sometimes users give you an example of a report they want printed from their Access database, and the sources of data on the report are so obvious that designing the report takes a few minutes. Other times, particularly when the users' requirements are complex, or the business processes supported by the application require a great deal of research, you may spend many days on Step 1.

As you read through each step of the design process, always look at the design in terms of outputs and inputs.

Step 1: The overall design — from concept to reality

All software developers face similar problems, the first of which is determining how to meet the needs of the end-user. It's important to understand the overall user requirements before zeroing in on the details.

For example your users may ask for a database that supports the following tasks:

• Entering and maintaining customer information (name, address, and financial history)

• Entering and maintaining sales information (sales date, payment method, total amount, customer identity, and other fields)

• Entering and maintaining sales line-item information (details of items purchased)

• Viewing information from all the tables (sales, customers, sales line items, and payments)

• Asking all types of questions about the information in the database

• Producing a monthly invoice report

• Producing a customer sales history

• Producing mailing labels and mail-merge reports

When reviewing these eight tasks, you may need to consider other peripheral tasks that weren't mentioned by the user. Before you jump into designing, sit down and learn how the existing process works. To accomplish this, you must do a thorough needs analysis of the existing system and how you might automate it.

Prepare a series of questions that give insight to the client's business and how the client uses his data. For example, when considering automating any type of business, you might ask these questions:

• What reports and forms are currently used?

• How are sales, customers, and other records currently stored?

• How are billings processed?

As you ask these questions and others, the client will probably remember other things about the business that you should know.

A walkthrough of the existing process is also helpful to get a feel for the business. You may have to go back several times to observe the existing process and how the employees work.

As you prepare to complete the remaining steps, keep the client involved — let the users know what you're doing and ask for input on what to accomplish, making sure it's within the scope of the user's needs.

Step 2: Report design

Although it may seem odd to start with reports, in many cases, users are more interested in the printed output from a database than they are in any other aspect of the application. Reports often include every bit of data managed by an application. Because reports tend to be comprehensive, they're often the best way to gather important information about a database's requirements.

When you see the reports that you'll create in this section, you may wonder, “Which comes first — the chicken or the egg?” Does the report layout come first, or do you first determine the data items and text that make up the report? Actually, these items are considered at the same time.

It isn't important how you lay out the data in a report. The more time you take now, however, the easier it will be to construct the report. Some people go so far as to place gridlines on the report to identify exactly where they want each bit of data to be.

Step 3: Data design

The next step in the design phase is to take an inventory of all the information needed by the reports. One of the best methods is to list the data items in each report. As you do so, take careful note of items that are included in more than one report. Make sure that you keep the same name for a data item that is in more than one report because the data item is really the same item.

For example, you can start with all the customer data you'll need for each report, as shown in Table 1.1.

TABLE 1.1 Customer-Related Data Items Found in the Reports

Customers Report

Invoice Report

Customer Name

Customer Name

Street

Street

City

City

State

State

ZIP Code

ZIP Code

Phone Numbers

Phone Numbers

E-Mail Address

Web Address

Discount Rate

Customer Since

Last Sales Date

Sales Tax Rate

Credit Information (four fields)

As you can see by comparing the type of customer information needed for each report, there are many common fields. Most of the customer data fields are found in both reports. Table 1.1 shows only some of the fields that are used in each report — those related to customer information. Because the related row and field names are the same, you can easily make sure that you have all the data items. Although locating items easily isn't critical for this small database, it becomes very important when you have to deal with large tables containing many fields.

After extracting the customer data, you can move on to the sales data. In this case, you need to analyze only the Invoice report for data items that are specific to the sales. Table 1.2 lists the fields in the report that contain information about sales.

TABLE 1.2 Sales Data Items Found in the Reports

Invoice Report

Line Item Data

Invoice Number

Product Purchased

Sales Date

Quantity Purchased

Invoice Date

Description of Item Purchased

Payment Method

Price of Item

Salesperson

Discount for Each Item

Discount (overall for sale)

Tax Location

Tax Rate

Product Purchased (multiple lines)

Quantity Purchased (multiple lines)

Description of Item Purchased (multiple lines)

Price of Item (multiple lines)

Discount for each item (multiple lines)

Payment Type (multiple lines)

Payment Date (multiple lines)

Payment Amount (multiple lines)

Credit Card Number (multiple lines)

Expiration Date (multiple lines)

As you can see when you examine the type of sales information needed for the report, a few items (fields) are repeating (for example, the Product Purchased, Quantity Purchased, and Price of Item fields). Each invoice can have multiple items, and each of these items needs the same type of information — number ordered and price per item. Many sales have more than one purchased item. Also, each invoice may include partial payments, and it's possible that this payment information will have multiple lines of payment information, so these repeating items can be put into their own grouping.

You can take all the individual items that you found in the sales information group in the preceding section and extract them to their own group for the invoice report. Table 1.2 shows the information related to each line item.

Step 4: Table design

Now for the difficult part: You must determine what fields are needed for the tables that make up the reports. When you examine the multitude of fields and calculations that make up the many documents you have, you begin to see which fields belong to the various tables in the database. (You already did much of the preliminary work by arranging the fields into logical groups.) For now, include every field you extracted. You'll need to add others later (for various reasons), although certain fields won't appear in any table.

It's important to understand that you don't need to add every little bit of data into the database's tables. For example, users may want to add vacation and other out-of-office days to the database to make it easy to know which employees are available on a particular day. However, it's very easy to burden an application's initial design by incorporating too many ideas during the initial development phases. Because Access tables are so easy to modify later on, it's probably best to put aside noncritical items until the initial design is complete. Generally speaking, it's not difficult to accommodate user requests after the database development project is under way.