Access 2000 Developer's Handbook
Volume I: Desktop Edition
  Ken Getz, Paul Litwin, Mike Gilbert
   
1 What's New in Access 2000
  A Brief Access History
  Microsoft Office Developer Features
2 The Access Event Model
  So Many Events, So Little Time
  Hooking In
  Form Events
  Cancelable Events
  The Sequence of Events
3 Using VBA Class Modules
  Why Use Class Modules?
  How Class Modules Work
  A Simple Example: A Text File Class
  Using Property Procedures
  A Simple Database Example
  Advanced Class Module Techniques
4 Database Design
  The Relational Model
  Relational Database Design
  Normalizing a Set of Tables
  Integrity Rules
  A Practical Approach to Database Design
  Normalizing a Database with Existing Data
  Breaking the Rules: When to Denormalize
5 Access SQL
  Where Can You Use Access SQL?
  Learning Access SQL
  The SELECT Statement
  Aggregating Data
  Union Queries
  Subqueries
  Parameterized SQL
  Using External Data Sources
  Updating Data in SQL
  Data Definition with SQL
  Creating SQL Pass-Through Queries
  Jet 4 ANSI SQL-92 Extensions
  Differences Between Access SQL, SQL-92, Jet SQL-92, and T-SQL
6 ActiveX Data Objects
  ADO? What About DAO?
  Dueling Object Hierarchies
  ADO, UDA, and OLE DB
  Nuts and Bolts: Syntax Explained
  Using Default Collections
  Enumerating Objects in Collections
  Working with Properties
  Data Definition Using ADOX
  Working with Recordsets
  Meet the Cursors
  Creating a Recordset
  The Supports Method
  Creating Recordset Objects
  Moving Through a Recordset
  Sorting Recordsets
  Filtering Recordsets
  Refreshing Recordsets
  Editing Data in a Recordset Object
  Persisting Recordsets
  Using Recordsets in Place of Arrays
  Using Command Objects for Bulk Operations
  Schema Recordsets
  Using the CurrentProject and CurrentData Collections
  A Case Study: Using the Collections
7 Controlling Controls
  Controls and Their Uses
  Code Associated with Forms: Class Modules
  Working with Groups of Controls
  Some Standard Control Properties
  Controlling Text Layout
  Using Labels
  Using Text Boxes
  Using Two-State Controls (The Yes/No Crowd)
  Using Option Groups--Controls Inside Controls
  Using Controls' Controls Collection
  Using List and Combo Boxes
  How and When to Use Subforms
  Using Command Buttons
  The Tab Control
  Using the Tab Control as a Container
  Using Default Control Properties to Your Advantage
  Creating Controls Programmatically
  What Are These Controls, Anyway?
8 Topics in Form Design and Usage
  Introduction to Class Modules in Forms
  Controlling Closing
  Does a Specific Form Exist?
  Is a Specific Form Loaded?
  Creating Pop-Up Forms
  Using Pop-Up Tools
  Creating User-Defined Properties
  Using Form Procedures as Methods
  Filtering Data
  Ordering Your Rows
  Working with Forms' Data
  Using the Recordset and RecordsetClone Properties
  Conditional Formatting
  Form-Level Error Handling
  Controlling the Pesky Users
  Displaying Multiple Instances of Forms
  Using Subforms In Your Application
  Windows Handles, Classes, Access Forms, and MDI
  Manipulating Forms (the FormInfo Class)
  Automatically Resizing Forms
9 Topics in Report Design
  Filtering Your Reports
  Controlling Sorting and Grouping
  Section Design-Time Properties
  Events of Reports and Their Sections
  Report Events
  Section Runtime Properties
  Examples Using Report and Section Events and Properties
  Printing Multiple Labels
  Printing Mailing Labels Starting at a Specific Location
  Inserting Blank Lines
  Handling Odd and Even Pages
  Controlling the Starting Page Number
  Numbering Items on a Report
  Some Simple Sample Reports
  The Sales Report
  The Phone Book
  Companies, Contacts, and Hardware
  Altering Your Report's Layout Programmatically
  Creating a Report Based on a Crosstab Query
  Distributing Access Reports
10 Controlling Your Printer
  Introducing the PrtDevMode Property
  Modifying Printer Settings
  Controlling Print Layout Information
  Introducing the PrtDevNames Property
  Retrieving Printer Capabilities
  How Do I...
11 Shared Office Programmability
  References are Everything
  The FileSearch Object Model
  Working with Command Bars
  The Office Assistant
  Is There More?
12 Using Access As an Automation Client

  Automation Basics
  Creating Object Instances
  Controlling Other Applications
  Creating Automation Solutions with Microsoft Office
  Example: Word as a Report Writer
  Example: Outlook Time Reporting
  Example: Creating a PowerPoint Presentation
  Example: Populating an Excel Spreadsheet
  Using ActiveX Controls
  Tapping into Events Using WithEvents
13 Access As an Automation Server
  Working with Access as an Automation Server
  A Class for Access Automation
  Running Access Reports using Automation
  Calling User-Defined Functions from an Automation Client
  Wiring Automation-Friendly Applications
14 Error Handling and Debugging
  Dealing with Syntax Errors
  Dealing with Runtime Errors
  Dealing with Logic Errors, AKA Bugs!
  Techniques and Strategies for Debugging
15 Application Optimization
  Tuning Your Application's Performance
  Hardware and Windows Issues
  Understanding How the Jet Query Engine Works
  Configuring the Jet Engine
  Microsoft's Unsupported Jet Optimization Tools
  Speeding Up Queries and Recordsets
  Speeding Up Forms
  Speeding Up Reports
  Optimizing VBA's Use of Modules and Compilation
  Speeding Up VBA: Testing Hypotheses
  VBA Optimization Tips
16 Accessing DLLs and the Windows API
  Introducing Dynamic Link Libraries
  Calling DLL Procedures from VBA
  An Example: Reading Data from the Registry
  Using Type Libraries with DLL Functions
  Creating DLL Function Classes
  How to Construct a Declare Statement
  More Advanced Details of Calling DLLs
  Converting API Calls from 16-bit Windows
17 Harnessing Wizard Magic
  Using the Procedures
  File-Handling Functions
  Using Windows' Dialog Boxes (File Open/Save, Selecting Colors, Selecting Fonts, Browse for Folders)
  Reading and Writing Registry Values
  Font-Handling Functions
  Object-Handling Functions
  Miscellaneous Functions (National Language Info, Version Info, Toolbar Bitmaps)
18 Building Add-Ins
  Libraries and Wizards and Builders, Oh My!
  Creating Library Databases
  Building Your Own Builders
  Developing Custom Wizards
  Control Wizards: A Hybrid
  Distributing and Installing Add-Ins
  Advanced Add-In Topics
  COM Add-Ins
A The Reddick Naming Conventions, Version 6
B Startup and Global Options
C Data Access Objects