You are previewing Microsoft® Access® 2010 Programmer's Reference.
O'Reilly logo
Microsoft® Access® 2010 Programmer's Reference

Book Description

A comprehensive guide to programming for Access 2010 and 2007

Millions of people use the Access database applications, and hundreds of thousands of developers work with Access daily. Access 2010 brings better integration with SQL Server and enhanced XML support; this Wrox guide shows developers how to take advantage of these and other improvements.

With in-depth coverage of VBA, macros, and other programming methods for building Access applications, this book also provides real-world code examples to demonstrate each topic.

Access 2010 Programmer's Reference is a comprehensive guide to the best-of-breed techniques for programming Access applications.

Coverage Includes:

  • Introduction to Microsoft Access 2010

  • New Features

  • Upgrading and Converting to Access 2010

  • Macros in Access 2010

  • Using the VBA Editor

  • VBA Basics

  • Using VBA in Access

  • Creating Classes in VBA

  • Extending VBA with APIs

  • Working with the Windows Registry

  • Using DAO to Access Data

  • Using ADO to Access Data

  • Using SQL with VBA

  • Using VBA to Enhance Forms

  • Enhancing Reports with VBA

  • Customizing the Ribbon

  • Customizing the Office Backstage

  • Working with Office 2010

  • Working with SharePoint

  • Working with .NET

  • Building Client-Server Applications with Access

  • The Access 2010 Templates

  • Access Runtime Deployment

  • Database Security

  • Access 2010 Security Features

Table of Contents

  1. Copyright
  2. CREDITS
  3. ABOUT THE AUTHORS
  4. ABOUT THE CONTRIBUTING AUTHORS AND TECHNICAL EDITORS
  5. ABOUT THE TECHNICAL EDITORS
  6. ACKNOWLEDGMENTS
  7. INTRODUCTION
    1. WHY USE VBA?
    2. WHAT DOES THIS BOOK COVER?
      1. The Chapters
      2. The Appendixes
    3. HOW TO USE THIS BOOK
    4. OTHER ACCESS/VBA SOURCES
    5. CONVENTIONS
    6. SOURCE CODE
    7. ERRATA
    8. P2P.WROX.COM
  8. 1. Introduction to Microsoft Access 2010
    1. 1.1. A BRIEF HISTORY OF ACCESS
    2. 1.2. WHEN TO USE ACCESS
      1. 1.2.1. Microsoft Office Access 2010
      2. 1.2.2. SQL Server 2008 Express Edition
      3. 1.2.3. SQL Server 2008
      4. 1.2.4. How Do You Choose?
    3. 1.3. ACCESS DATABASE BASICS
      1. 1.3.1. Getting Started in Access 2010
      2. 1.3.2. Access 2010 Database Templates
      3. 1.3.3. The Access Navigation Pane
      4. 1.3.4. The Access Ribbon
      5. 1.3.5. The Access Security Bar
    4. 1.4. ACCESS DATABASE OBJECTS
      1. 1.4.1. Creating Tables
        1. 1.4.1.1. Access 2010 Field Types
      2. 1.4.2. Creating Queries
      3. 1.4.3. Creating Forms
      4. 1.4.4. Creating Reports
      5. 1.4.5. Creating Macros
      6. 1.4.6. Creating Modules
    5. 1.5. SUMMARY
  9. 2. New Features
    1. 2.1. NEW LOOK
    2. 2.2. DEVELOPMENT ENVIRONMENT
      1. 2.2.1. 64-Bit
      2. 2.2.2. Office Backstage
      3. 2.2.3. Claculated Columns
      4. 2.2.4. Integration with Office Themes
      5. 2.2.5. New Macro Designer
      6. 2.2.6. Expression Builder
      7. 2.2.7. Web Service Expressions
      8. 2.2.8. Application Parts
    3. 2.3. FORMS
      1. 2.3.1. Web Browser Control
      2. 2.3.2. New Navigation Control
      3. 2.3.3. Subreports in Forms
    4. 2.4. MACROS
      1. 2.4.1. UI Macros
      2. 2.4.2. Data Macros
    5. 2.5. INTEGRATION WITH SHAREPOINT
      1. 2.5.1. Working with Data on SharePoint
      2. 2.5.2. Publish the Database to SharePoint
      3. 2.5.3. Additional SharePoint Features
    6. 2.6. BROWSER INTERFACE/APPLICATIONS
      1. 2.6.1. Introducing the Web Form Designer
      2. 2.6.2. Introducing Web Report Designer
      3. 2.6.3. Feature Restrictions (Features Disabled in Web Applications)
    7. 2.7. WHAT'S GONE OR DEPRECATED
      1. 2.7.1. Calendar Control
      2. 2.7.2. ISAMs
      3. 2.7.3. Replication Conflict Resolver
      4. 2.7.4. Snapshot Format
    8. 2.8. SUMMARY
  10. 3. Upgrading and Converting to Access 2010
    1. 3.1. TO CONVERT OR TO ENABLE
      1. 3.1.1. Common Terminology
      2. 3.1.2. Key Decision Factors
      3. 3.1.3. Feature Sets and File Extensions: What's New, What's Replaced, What Happens
        1. 3.1.3.1. File Extensions
        2. 3.1.3.2. New Features Available Only with ACCDB File Format
        3. 3.1.3.3. Access 2010 Is Based on 2007 File Format
        4. 3.1.3.4. Features Not Available with ACCDB Files
        5. 3.1.3.5. What Happens When a 2007/2010 MDB Is Opened by Prior Versions
        6. 3.1.3.6. What Happens When a 2010 ACCDB Is Opened by 2007
      4. 3.1.4. Other Things to Consider
        1. 3.1.4.1. VBA References
        2. 3.1.4.2. Shared Data Files
        3. 3.1.4.3. Splitting a Database
        4. 3.1.4.4. Working with SQL Server
        5. 3.1.4.5. Compiling the Code
    2. 3.2. INSTALLING MULTIPLE VERSIONS OF ACCESS ON ONE PC
    3. 3.3. CHANGING FILE FORMATS
      1. 3.3.1. Selecting the Default File Format
      2. 3.3.2. Overriding the Default File Format
      3. 3.3.3. ACCDE and MDE Files
      4. 3.3.4. Steps for Converting or Enabling
      5. 3.3.5. File Conversion Using Access 2010: A One-Stop Shop
      6. 3.3.6. Other Considerations When Converting
      7. 3.3.7. Converting to Access 97 or Earlier Is a Two-Version Process
    4. 3.4. CONVERTING A SECURED DATABASE
      1. 3.4.1. Converting a Password-Protected Database
      2. 3.4.2. Converting a Database with Password-Protected VBA
    5. 3.5. CONVERTING A REPLICATED DATABASE
    6. 3.6. ENABLING A DATABASE
      1. 3.6.1. Enabling the Experience: Opening 95 or 97 Files with Access 2010
    7. 3.7. ACCESS 2010: 64-BIT CONSIDERATIONS
      1. 3.7.1. Porting an Access Application to a 64-bit Plat-form
        1. 3.7.1.1. Working in Mixed Bitness
    8. 3.8. SUMMARY
  11. 4. Macros in Access 2010
    1. 4.1. VBA VERSUS MACROS IN ACCESS
      1. 4.1.1. Benefits of Using VBA
      2. 4.1.2. Benefits of Using Macros
    2. 4.2. TYPES OF MACROS
      1. 4.2.1. Macro Objects
      2. 4.2.2. Embedded Macros
      3. 4.2.3. Data Macros
    3. 4.3. CREATING MACROS IN ACCESS 2010
      1. 4.3.1. New Macro Designer
        1. 4.3.1.1. Adding Actions
        2. 4.3.1.2. Macro Constructs
        3. 4.3.1.3. If...Else...Else If
        4. 4.3.1.4. Submacros
        5. 4.3.1.5. Groups
        6. 4.3.1.6. Comments
        7. 4.3.1.7. Parameters
      2. 4.3.2. Additional Macro Changes
      3. 4.3.3. Sharing Macros Using Access 2010
      4. 4.3.4. Running Macros
      5. 4.3.5. Debugging Macros
    4. 4.4. MACRO OBJECTS AND EMBEDDED MACROS
      1. 4.4.1. Error Handling
      2. 4.4.2. Variables
        1. 4.4.2.1. TempVars
        2. 4.4.2.2. LocalVars
        3. 4.4.2.3. Scope of TempVars and LocalVars
        4. 4.4.2.4. ReturnVars
      3. 4.4.3. Macro Actions and Arguments
        1. 4.4.3.1. BrowseTo
        2. 4.4.3.2. SetFilter
        3. 4.4.3.3. SetOrderBy
      4. 4.4.4. Macro Scenarios
        1. 4.4.4.1. Testing for Disabled Mode
        2. 4.4.4.2. Opening Objects
        3. 4.4.4.3. Opening a Report Based on a Parameter Query
        4. 4.4.4.4. Working with Controls
        5. 4.4.4.5. Working with Records
        6. 4.4.4.6. Return to the Previous Record Following a Requery
        7. 4.4.4.7. Running Macro Actions in Access or Access Services
    5. 4.5. DATA MACROS
      1. 4.5.1. Types of Data Macros
        1. 4.5.1.1. Before Events
        2. 4.5.1.2. After Events
        3. 4.5.1.3. Named Data Macros
      2. 4.5.2. Running Data Macros
      3. 4.5.3. Data Macro Blocks
        1. 4.5.3.1. CreateRecord
        2. 4.5.3.2. EditRecord
        3. 4.5.3.3. ForEachRecord
        4. 4.5.3.4. LookupRecord
        5. 4.5.3.5. Aliasing
      4. 4.5.4. Data Macro Properties
        1. 4.5.4.1. Updated Function
        2. 4.5.4.2. Old Property
        3. 4.5.4.3. IsInsert Property
      5. 4.5.5. Data Macro Actions and Arguments
      6. 4.5.6. Error Handling
      7. 4.5.7. Variables
      8. 4.5.8. Data Macro Scenarios
        1. 4.5.8.1. Aggregating Data
        2. 4.5.8.2. Canceling a Before Event
        3. 4.5.8.3. Single Checkbox Value for Records
        4. 4.5.8.4. Custom Sort Order for Displaying Records
          1. 4.5.8.4.1. MoveCategory Named Data Macro
          2. 4.5.8.4.2. SwapSortOrder Named Data Macro
          3. 4.5.8.4.3. Embedded Macros
          4. 4.5.8.4.4. mcrEnableMoveButtons Named Macro
          5. 4.5.8.4.5. Returning Values from a Data Macro
          6. 4.5.8.4.6. Sending E-mail
        5. 4.5.8.5. Tracking Change History
    6. 4.6. SUMMARY
  12. 5. Using the VBA Editor
    1. 5.1. ANATOMY OF THE VBA EDITOR
    2. 5.2. USING THE OBJECT BROWSER
      1. 5.2.1. Object Browser Components
      2. 5.2.2. Show Hidden Members
    3. 5.3. TESTING AND DEBUGGING VBA CODE
      1. 5.3.1. Immediate Window
      2. 5.3.2. The Debug.Print Statement
      3. 5.3.3. The Debug.Assert Statement
      4. 5.3.4. Breakpoints
      5. 5.3.5. Stepping through Code
      6. 5.3.6. Call Stack
      7. 5.3.7. Run to Cursor
      8. 5.3.8. Locals Window
      9. 5.3.9. Watch Window
      10. 5.3.10. Edit and Continue
    4. 5.4. USING OPTION STATEMENTS
    5. 5.5. SUMMARY
  13. 6. VBA Basics
    1. 6.1. THE MINDSET OF A PROGRAMMER
    2. 6.2. ANATOMY OF VBA PROCEDURES
    3. 6.3. VBA KEYWORDS
    4. 6.4. VBA OPERATORS
    5. 6.5. VARIABLES AND VBA SYNTAX
      1. 6.5.1. Variables
        1. 6.5.1.1.
          1. 6.5.1.1.1. Variable Data Types
      2. 6.5.2. Naming Your Variables
      3. 6.5.3. Variable Scope and Lifetime
      4. 6.5.4. Overlapping Variables
    6. 6.6. OTHER VBA COMPONENTS
      1. 6.6.1. Option Statements
      2. 6.6.2. Comments
      3. 6.6.3. Line Continuation
      4. 6.6.4. Constants
      5. 6.6.5. Enums
    7. 6.7. VBA OBJECTS
      1. 6.7.1. Properties
      2. 6.7.2. Methods
      3. 6.7.3. Events
    8. 6.8. USING CODE BEHIND FORMS AND REPORTS
    9. 6.9. USING VBA CODE TO CALL MACROS
    10. 6.10. WRITING CODE IN MODULES
    11. 6.11. EXAMPLE: USER-DEFINED FUNCTION
    12. 6.12. SUMMARY
  14. 7. Using VBA in Access
    1. 7.1. WHEN EVENTS FIRE
      1. 7.1.1. Common Form Events
      2. 7.1.2. Common Control Events
      3. 7.1.3. Common Report Events
      4. 7.1.4. Asynchronous Execution
        1. 7.1.4.1. OpenForm
        2. 7.1.4.2. Dialog Mode to the Rescue
    2. 7.2. VBA PROCEDURES
      1. 7.2.1. Function or Sub?
      2. 7.2.2. Public or Private?
        1. 7.2.2.1. Public and Private Procedures in Modules
        2. 7.2.2.2. Public and Private Procedures in Forms and Reports
      3. 7.2.3. Coupling and Cohesion
        1. 7.2.3.1. Uncouple Procedures
        2. 7.2.3.2. Adhere to Cohesion
      4. 7.2.4. Error Handling
      5. 7.2.5. Using Variables
        1. 7.2.5.1. Using Appropriate Data Types and Sizes
        2. 7.2.5.2. Using Global Variables
    3. 7.3. EVALUATING EXPRESSIONS IN VBA
      1. 7.3.1. If ... Then
      2. 7.3.2. Checking for Nulls
      3. 7.3.3. Select Case
    4. 7.4. USING RECORDSETS
      1. 7.4.1. Opening Recordsets
      2. 7.4.2. Looping through Recordsets
      3. 7.4.3. Adding Records
      4. 7.4.4. Finding Records
      5. 7.4.5. Updating Records
    5. 7.5. USING MULTIPLE RECORDSETS
      1. 7.5.1. Copying Trees of Parent and Child Records
      2. 7.5.2. Using Bookmark and RecordsetClone
      3. 7.5.3. Cleaning Up
    6. 7.6. USING VBA IN FORMS AND REPORTS
      1. 7.6.1. All about Me
      2. 7.6.2. Referring to Controls
      3. 7.6.3. Referring to Subforms and Subreports
      4. 7.6.4. Closing Forms
    7. 7.7. DEBUGGING VBA
    8. 7.8. INVESTIGATING VARIABLES
      1. 7.8.1. When Hovering Isn't Enough — Using the Immediate Window
      2. 7.8.2. Setting Breakpoints
      3. 7.8.3. Setting Watch Values
      4. 7.8.4. Stopping Runaway Code
      5. 7.8.5. Stepping through Your Code
    9. 7.9. COMMON VBA TECHNIQUES
      1. 7.9.1. Drilling Down with Double-Click
      2. 7.9.2. Date Handling
        1. 7.9.2.1. How Access Stores Dates and Times
        2. 7.9.2.2. Simple Date Math
      3. 7.9.3. Handling Rounding Issues
        1. 7.9.3.1. Rounding of Sums
        2. 7.9.3.2. Rounding Errors Caused by Floating Point Numbers
        3. 7.9.3.3. Access Rounding Functions
    10. 7.10. STRING CONCATENATION TECHNIQUES
      1. 7.10.1. The Difference between & and +
      2. 7.10.2. String Concatenation Example
    11. 7.11. VBA ERROR HANDLING
      1. 7.11.1. Why Use Error Handling?
      2. 7.11.2. Two Kinds of Errors: Unexpected and Expected
        1. 7.11.2.1. Handling Unexpected Errors
        2. 7.11.2.2. Absorbing Expected Errors
      3. 7.11.3. Basic Error Handling
        1. 7.11.3.1. Basic Error Handling with an Extra Resume
        2. 7.11.3.2. Basic Error Handling with a Centralized Message
      4. 7.11.4. Cleaning Up after an Error
      5. 7.11.5. More on Absorbing Expected Errors
      6. 7.11.6. Issues in Error Handling
        1. 7.11.6.1. Don't Use Error Handling with Logging
        2. 7.11.6.2. Don't Use Error Handling That Sends E-Mail
    12. 7.12. SUMMARY
  15. 8. Creating Classes in VBA
    1. 8.1. WHY USE CLASSES?
    2. 8.2. A TOUCH OF CLASS
    3. 8.3. CREATING A CLASS MODULE
      1. 8.3.1. Adding a Class Module to the Project
      2. 8.3.2. A Brief Word on Naming the Class
      3. 8.3.3. Instantiating Class Objects
      4. 8.3.4. Creating Class Methods
      5. 8.3.5. Creating Property Procedures
        1. 8.3.5.1. Using Property Get
        2. 8.3.5.2. Using Property Let
        3. 8.3.5.3. Using Property Set
        4. 8.3.5.4. Declaring Property Read-Write Attributes
        5. 8.3.5.5. Using Enumerated Types with Properties and Methods
        6. 8.3.5.6. Creating Flags
        7. 8.3.5.7. Exiting Property Procedures
        8. 8.3.5.8. Procedure Attributes
        9. 8.3.5.9. Friendly Procedures
    4. 8.4. NAMING AND IDENTIFYING OBJECTS
      1. 8.4.1. What Does the Object Do?
      2. 8.4.2. Naming Techniques
        1. 8.4.2.1. Case
        2. 8.4.2.2. Plurality
      3. 8.4.3. Identifying a Class Instance
    5. 8.5. USING CLASS EVENTS
      1. 8.5.1. Initialize and Terminate Events
      2. 8.5.2. Creating Custom Class Events
      3. 8.5.3. Responding to Events
      4. 8.5.4. Handling Errors in Classes
        1. 8.5.4.1. Trapping VBA Errors
        2. 8.5.4.2. Raising Custom-Defined Errors
        3. 8.5.4.3. Passing Errors in Class Modules
    6. 8.6. FORMS AND REPORTS AS OBJECTS
    7. 8.7. VARIABLE SCOPE AND LIFETIME
    8. 8.8. THE ME PROPERTY
      1. 8.8.1. Subclassing the Form
      2. 8.8.2. Creating the Subclassed Form
      3. 8.8.3. Creating a Parent Property
    9. 8.9. CREATING A CLONE METHOD
    10. 8.10. CREATING AND USING COLLECTION CLASSES
      1. 8.10.1. The Collection Object
        1. 8.10.1.1. The Add Method
        2. 8.10.1.2. The Remove Method
        3. 8.10.1.3. The Item Method
        4. 8.10.1.4. The Count Property
      2. 8.10.2. Collection Class Basics
        1. 8.10.2.1. clsStudent
        2. 8.10.2.2. clsStudents
        3. 8.10.2.3. Setting Unique Object Keys
        4. 8.10.2.4. Testing the clsStudents Class
        5. 8.10.2.5. Specifying the Default Procedure
        6. 8.10.2.6. Enumerating Collection Classes
    11. 8.11. THE THREE PILLARS
      1. 8.11.1. Encapsulation
      2. 8.11.2. Inheritance
      3. 8.11.3. Polymorphism
      4. 8.11.4. Inheriting Interfaces
      5. 8.11.5. Instancing
    12. 8.12. SUMMARY
  16. 9. Extending VBA with APIs
    1. 9.1. INTRODUCING THE WINDOWS API
      1. 9.1.1. Finding API Functions
      2. 9.1.2. Why You Need the API
    2. 9.2. INTRODUCING LINKING
      1. 9.2.1. Static Linking
      2. 9.2.2. Dynamic Linking
    3. 9.3. DECLARING APIS
      1. 9.3.1. The Declare Keyword
      2. 9.3.2. The PtrSafe Keyword
      3. 9.3.3. Naming the Procedure
      4. 9.3.4. Specifying the Lib(rary) and Argument List
        1. 9.3.4.1. Passing Values
        2. 9.3.4.2. Returning Values
    4. 9.4. UNDERSTANDING C PARAMETERS
      1. 9.4.1. Signed and Unsigned Integers
      2. 9.4.2. Numeric Parameters
        1. 9.4.2.1. 8-Bit Numeric Parameters
        2. 9.4.2.2. 16-Bit Numeric Parameters
        3. 9.4.2.3. 32-Bit Numeric Parameters
        4. 9.4.2.4. 64-Bit Numeric Parameters
        5. 9.4.2.5. Currency Parameters
        6. 9.4.2.6. Floating-Point Parameters
        7. 9.4.2.7. Boolean Parameters
        8. 9.4.2.8. Handle Parameters
      3. 9.4.3. Object Parameters
      4. 9.4.4. String Parameters
      5. 9.4.5. Variant Parameters
      6. 9.4.6. Pointers to Numeric Values
      7. 9.4.7. Pointers to C Structures
      8. 9.4.8. Pointers to Arrays
      9. 9.4.9. Pointers to Functions
      10. 9.4.10. Pointers in 64-Bit Windows
        1. 9.4.10.1. Defining Type Statements
        2. 9.4.10.2. Portability of Code between Platforms
          1. 9.4.10.2.1. Conditional Compilation
          2. 9.4.10.2.2. Built-in Conditional Compilation Constants
          3. 9.4.10.2.3. Compilation of API Functions
      11. 9.4.11. The Any Data Type
    5. 9.5. ERR.LASTDLLERROR
    6. 9.6. DISTRIBUTING APPLICATIONS THAT REFERENCE TYPE LIBRARIES AND CUSTOM DLLS
    7. 9.7. USEFUL API FUNCTIONS
      1. 9.7.1. Returning the Path to the Windows Folder
      2. 9.7.2. Determining Whether the System Processor Is 32-Bit or 64-Bit
      3. 9.7.3. Determining Whether Windows Is 32-Bit or 64-Bit
      4. 9.7.4. Determining Whether Office Is 32-Bit or 64-Bit
      5. 9.7.5. Displaying the Windows Open Dialog Box
      6. 9.7.6. Finding the Position of a Form
      7. 9.7.7. Finding the Temp Directory
      8. 9.7.8. Generating a Unique Temp Filename
      9. 9.7.9. Finding the Login Name of the Current User
      10. 9.7.10. Finding the Computer Name
      11. 9.7.11. Opening or Printing Any File
      12. 9.7.12. Delaying Code Execution
      13. 9.7.13. Getting the Path to a Special Folder
      14. 9.7.14. Locking the Computer
    8. 9.8. SUMMARY
  17. 10. Working with the Windows Registry
    1. 10.1. ABOUT THE REGISTRY
      1. 10.1.1. What the Registry Does
      2. 10.1.2. What the Registry Controls
      3. 10.1.3. Accessing the Registry
        1. 10.1.3.1. RegEdit.exe
        2. 10.1.3.2. Regedt32.exe
        3. 10.1.3.3. Launching and Using the Registry Editor
      4. 10.1.4. Registry Organization
        1. 10.1.4.1. HKEY_CLASSES_ROOT
        2. 10.1.4.2. HKEY_CURRENT_USER
        3. 10.1.4.3. HKEY_LOCAL_MACHINE
        4. 10.1.4.4. HKEY_USERS
          1. 10.1.4.4.1. .DEFAULT
          2. 10.1.4.4.2. Security Identifier Keys
        5. 10.1.4.5. HKEY_CURRENT_CONFIG
      5. 10.1.5. Registry Organization on 64-Bit Windows
        1. 10.1.5.1. Registry Redirection
        2. 10.1.5.2. Registry Reflection
    2. 10.2. USING THE BUILT-IN VBA REGISTRY FUNCTIONS
      1. 10.2.1. SaveSetting
      2. 10.2.2. GetSetting
      3. 10.2.3. GetAllSettings
      4. 10.2.4. DeleteSetting
      5. 10.2.5. Typical Uses for the Built-In VBA Registry Functions
        1. 10.2.5.1. Implementing a Daily Reminders Screen
        2. 10.2.5.2. Storing and Retrieving Connection Strings
        3. 10.2.5.3. Storing User Preferences
        4. 10.2.5.4. Storing a Last Used List
    3. 10.3. USING THE WINDOWS REGISTRY APIs
      1. 10.3.1. Getting Started
        1. 10.3.1.1. Windows Registry Hive Constants
        2. 10.3.1.2. Windows Registry Data Types
        3. 10.3.1.3. Other Windows Registry Constants
        4. 10.3.1.4. Windows Registry API Function Declarations
      2. 10.3.2. Creating a Registry Key
      3. 10.3.3. Setting the Value for a Key
      4. 10.3.4. Getting the Value for a Key
      5. 10.3.5. Deleting a Registry Value
      6. 10.3.6. Deleting a Registry Key
      7. 10.3.7. Testing the Function Wrappers
      8. 10.3.8. Opening an Existing Registry Key
      9. 10.3.9. Connecting to the Registry on a Remote Computer
      10. 10.3.10. Enumerating Registry Keys and Values
    4. 10.4. SUMMARY
  18. 11. Using DAO to Access Data
    1. 11.1. DATA ACCESS OBJECTS
    2. 11.2. WHY USE DAO?
    3. 11.3. NEW FEATURES IN DAO
      1. 11.3.1. Multi-Value Lookup Fields
      2. 11.3.2. Attachment Fields
      3. 11.3.3. Append-Only Fields
      4. 11.3.4. Database Encryption
      5. 11.3.5. Calculated Fields
    4. 11.4. REFERRING TO DAO OBJECTS
    5. 11.5. THE DBENGINE OBJECT
      1. 11.5.1. The Workspaces Collection
      2. 11.5.2. ODBCDirect
        1. 11.5.2.1. Creating a Workspace
        2. 11.5.2.2. Using Transactions
      3. 11.5.3. The Errors Collection
    6. 11.6. THE DATABASE OBJECT
      1. 11.6.1. The Default (Access) Database
      2. 11.6.2. The CurrentDb Function
      3. 11.6.3. Opening an External Database
    7. 11.7. DAO OBJECT PROPERTIES
      1. 11.7.1. DAO Property Types
      2. 11.7.2. Creating, Setting, and Retrieving Properties
        1. 11.7.2.1. Setting and Retrieving Built-In Object Properties
        2. 11.7.2.2. Creating Object Properties
        3. 11.7.2.3. Setting and Retrieving SummaryInfo Properties
        4. 11.7.2.4. Setting and Retrieving User-Defined Properties
    8. 11.8. CREATING SCHEMA OBJECTS WITH DAO
      1. 11.8.1. Creating Tables and Fields
      2. 11.8.2. Creating Indexes
      3. 11.8.3. Creating Relations
        1. 11.8.3.1. Putting It All Together
      4. 11.8.4. Creating Multi-Value Lookup Fields
      5. 11.8.5. Creating Calculated Fields
    9. 11.9. DATA ACCESS WITH DAO
      1. 11.9.1. Working with QueryDefs
        1. 11.9.1.1. Creating a QueryDef
        2. 11.9.1.2. Parameters
        3. 11.9.1.3. Executing Queries
          1. 11.9.1.3.1. DoCmd.RunSQL
          2. 11.9.1.3.2. object.Execute
          3. 11.9.1.3.3. OpenRecordset
      2. 11.9.2. Working with Recordsets
        1. 11.9.2.1. Creating a Recordset
        2. 11.9.2.2. Opening a Recordset Based on a Table or Query
        3. 11.9.2.3. Opening a Recordset Based on a Parameter Query
        4. 11.9.2.4. Opening a Recordset Based on a SQL Statement
        5. 11.9.2.5. Opening a Recordset That Locks Out All Other Users
      3. 11.9.3. Filtering and Ordering Recordsets
        1. 11.9.3.1. Filtering Records
        2. 11.9.3.2. Ordering Records
          1. 11.9.3.2.1. Ordering Using the ORDER BY Clause
          2. 11.9.3.2.2. Ordering Using the Index Property
          3. 11.9.3.2.3. Ordering Using the Sort Property
      4. 11.9.4. Navigating Recordsets
        1. 11.9.4.1. Navigational Methods
        2. 11.9.4.2. AbsolutePosition, PercentPosition
        3. 11.9.4.3. RecordCount
        4. 11.9.4.4. BOF, EOF
        5. 11.9.4.5. Testing for an Empty Recordset
        6. 11.9.4.6. Navigating Recordsets with Multi-Value Lookup Fields
      5. 11.9.5. Bookmarks and Recordset Clones
        1. 11.9.5.1. Using Bookmarks
        2. 11.9.5.2. Now What about Those Clones?
      6. 11.9.6. Finding Records
        1. 11.9.6.1. The Seek Method
        2. 11.9.6.2. The Find Methods
      7. 11.9.7. Working with Recordsets
        1. 11.9.7.1. Retrieving Field Values
        2. 11.9.7.2. Adding, Editing, and Deleting Rows
          1. 11.9.7.2.1. Adding Rows
          2. 11.9.7.2.2. Editing Rows
          3. 11.9.7.2.3. Deleting Rows
          4. 11.9.7.2.4. Canceling an Edit
        3. 11.9.7.3. Using Arrays with Recordsets
      8. 11.9.8. Working with Attachment Fields
        1. 11.9.8.1. Navigating Attachments
        2. 11.9.8.2. Adding, Saving, and Deleting Attachments
          1. 11.9.8.2.1. Adding Attachments
          2. 11.9.8.2.2. Saving Attachments
          3. 11.9.8.2.3. Deleting Attachments
    10. 11.10. APPEND-ONLY FIELDS
    11. 11.11. SUMMARY
  19. 12. Using ADO to Access Data
    1. 12.1. INTRODUCTION TO ADO IN ACCESS
    2. 12.2. ADDING ADO REFERENCES
      1. 12.2.1. Referring to ADO Objects
    3. 12.3. CONNECTING TO ADO DATA SOURCES
      1. 12.3.1. Creating an Implicit Connection
      2. 12.3.2. Creating an ADO Connection Object
      3. 12.3.3. Creating a Connection String
      4. 12.3.4. Creating a Data Link Connection
      5. 12.3.5. Closing a Connection
      6. 12.3.6. Working with Cursors
        1. 12.3.6.1. Server-Side Cursors
        2. 12.3.6.2. Client-Side Cursors
      7. 12.3.7. Using Transactions
        1. 12.3.7.1. Transaction Support in ADO
        2. 12.3.7.2. Creating a Transaction
        3. 12.3.7.3. Nesting Transactions
    4. 12.4. DATA ACCESS WITH ADO
      1. 12.4.1. Overview of the ADO Object Model
      2. 12.4.2. Using the Execute Method
        1. 12.4.2.1. The Connection.Execute Method
        2. 12.4.2.2. The Command.Execute Method
        3. 12.4.2.3. Specifying Command Parameters
        4. 12.4.2.4. Creating Parameters Dynamically
      3. 12.4.3. Creating Recordsets
        1. 12.4.3.1. Creating a Recordset from a SQL Statement
        2. 12.4.3.2. Creating a Recordset from a Table or View
        3. 12.4.3.3. Creating a Shaped Recordset
        4. 12.4.3.4. Creating a Recordset Containing Multiple Recordsets
        5. 12.4.3.5. Verifying Recordset Options
      4. 12.4.4. Navigating Recordsets
        1. 12.4.4.1. The Move Methods
        2. 12.4.4.2. The Seek Method
        3. 12.4.4.3. The Find Method
        4. 12.4.4.4. The AbsolutePosition Property
      5. 12.4.5. Working with Data in Recordsets
        1. 12.4.5.1. Referring to Fields
        2. 12.4.5.2. Retrieving Data
        3. 12.4.5.3. Modifying Data
        4. 12.4.5.4. Creating Batch Updates
        5. 12.4.5.5. Adding New Data
        6. 12.4.5.6. Deleting Data
        7. 12.4.5.7. Closing Recordsets
        8. 12.4.5.8. Saving Recordset Data to a File
        9. 12.4.5.9. Loading Recordset Data from a File
        10. 12.4.5.10. Disconnected Recordsets
    5. 12.5. USING ADO EVENTS
      1. 12.5.1. Declaring WithEvents
      2. 12.5.2. Implementing ADO Event Methods
      3. 12.5.3. Implicitly Triggering Events
      4. 12.5.4. Explicitly Calling Events
      5. 12.5.5. Testing the State Property
    6. 12.6. SCHEMA RECORDSETS WITH ADO
      1. 12.6.1. ADO Schema Recordsets
      2. 12.6.2. Specifying Constraint Columns
      3. 12.6.3. Using ACE Specific Schemas
    7. 12.7. CREATING SCHEMA WITH ADOX
      1. 12.7.1. Adding References to ADOX
      2. 12.7.2. The ADOX Object Model
      3. 12.7.3. Working with Tables
        1. 12.7.3.1. Creating a Table
        2. 12.7.3.2. Deleting a Table
      4. 12.7.4. Working with Views (Queries)
        1. 12.7.4.1. Creating a Query
        2. 12.7.4.2. Modifying a Query
        3. 12.7.4.3. Deleting a Query
      5. 12.7.5. Managing Security with ADOX
    8. 12.8. SUMMARY
  20. 13. Using SQL with VBA
    1. 13.1. WORKING WITH SQL STRINGS IN VBA
      1. 13.1.1. Building SQL Strings with Quotes
      2. 13.1.2. Using Single Quotation Marks instead of Double Quotation Marks
      3. 13.1.3. Concatenating Long SQL Strings
    2. 13.2. USING SQL WHEN OPENING FORMS AND REPORTS
    3. 13.3. USING SQL TO ENHANCE FORMS
      1. 13.3.1. Sorting on Columns
      2. 13.3.2. Selections on Index Forms
        1. 13.3.2.1. Easy Selection Criteria on an Index Form
        2. 13.3.2.2. The Amazing Expandable SelectRecords Procedure
        3. 13.3.2.3. Selection Criteria Using Numeric Keys
        4. 13.3.2.4. Selection Criteria in Child Records
        5. 13.3.2.5. Disabling Buttons if No Records Are Displayed
      3. 13.3.3. Cascading Combo Boxes
      4. 13.3.4. Using SQL for Report Selection Criteria
      5. 13.3.5. Altering the SQL inside Queries
    4. 13.4. THE REPLACEORDERBYCLAUSE AND REPLACEWHERECLAUSE FUNCTIONS
    5. 13.5. SUMMARY
  21. 14. Using VBA to Enhance Forms
    1. 14.1. VBA BASICS
      1. 14.1.1. Properties
      2. 14.1.2. Event Properties: Where Does the Code Go?
      3. 14.1.3. Naming Conventions
    2. 14.2. CREATING FORMS THE 2010 WAY
      1. 14.2.1. Columnar and Tabular Layouts
      2. 14.2.2. Anchoring
      3. 14.2.3. The Modal Dialog Box Mode
      4. 14.2.4. Control Wizards - Creating Command Buttons Using VBA or Macros
      5. 14.2.5. Command Button Properties
      6. 14.2.6. Attachment Controls
      7. 14.2.7. Combo Boxes
        1. 14.2.7.1. Combo Box as a Lookup
        2. 14.2.7.2. Auto Expand
        3. 14.2.7.3. Allow Value List Edits
        4. 14.2.7.4. List Items Edit Form
        5. 14.2.7.5. Not In List()
        6. 14.2.7.6. Field List
        7. 14.2.7.7. Synchronizing Two Combo Boxes Using AfterUpdate()
      8. 14.2.8. Using the BeforeUpdate Event
      9. 14.2.9. Saving E-mail Addresses Using the Textbox AfterUpdate Event
      10. 14.2.10. Outputting to PDF
      11. 14.2.11. OpenArgs
      12. 14.2.12. IsLoaded()
      13. 14.2.13. On Timer ()
      14. 14.2.14. Late Binding
      15. 14.2.15. On Click(): Open a Form Based on a Value on the Current Form
      16. 14.2.16. Multiple Form Instances
      17. 14.2.17. Displaying Data in TreeView and ListView Controls
        1. 14.2.17.1. Filling the TreeView Control
        2. 14.2.17.2. Filling the ListView Control
        3. 14.2.17.3. Web Forms
    3. 14.3. SUMMARY
  22. 15. Enhancing Reports with VBA
    1. 15.1. INTRODUCTION TO REPORTS
      1. 15.1.1. How Reports Are Structured
      2. 15.1.2. New in Access 2007
      3. 15.1.3. New in Access 2010
        1. 15.1.3.1. Enhancements to Layout View
        2. 15.1.3.2. Web Reports
        3. 15.1.3.3. SubReports in Forms
        4. 15.1.3.4. Detecting Whether a SubReport Is Opened in a Form or Report
        5. 15.1.3.5. Improved Conditional Formatting
    2. 15.2. CREATING A REPORT
    3. 15.3. WORKING WITH VBA IN REPORTS
      1. 15.3.1. Control Naming Issues
      2. 15.3.2. The Me Object
    4. 15.4. IMPORTANT REPORT EVENTS AND PROPERTIES
      1. 15.4.1. Opening a Report
        1. 15.4.1.1. Open Event
        2. 15.4.1.2. NoData Event
        3. 15.4.1.3. Load Event
        4. 15.4.1.4. Current Event
      2. 15.4.2. Section Events
        1. 15.4.2.1. Format Event
        2. 15.4.2.2. Retreat Event
        3. 15.4.2.3. Paint Event
        4. 15.4.2.4. Print Event
        5. 15.4.2.5. Page Event
      3. 15.4.3. Closing a Report
        1. 15.4.3.1. Unload Event
        2. 15.4.3.2. Close Event
    5. 15.5. REPORT PROPERTIES
      1. 15.5.1. Section Properties
        1. 15.5.1.1. WillContinue
        2. 15.5.1.2. HasContinued
        3. 15.5.1.3. ForceNewPage
        4. 15.5.1.4. KeepTogether
        5. 15.5.1.5. RepeatSection
      2. 15.5.2. Control Properties
    6. 15.6. WORKING WITH CHARTS
    7. 15.7. COMMON REPORT REQUESTS
      1. 15.7.1. Changing the RecordSource at Runtime
      2. 15.7.2. Gathering Information from a Form
      3. 15.7.3. Changing the Printer
      4. 15.7.4. Dictionary-Style Headings
      5. 15.7.5. Shading Alternate Rows
      6. 15.7.6. Conditional Formatting of a Control
      7. 15.7.7. Creating a Progress Meter Report
    8. 15.8. LAYOUT VIEW
    9. 15.9. REPORT VIEW
      1. 15.9.1. Considerations When Designing for Report View
        1. 15.9.1.1. Where Are All My Pages?
        2. 15.9.1.2. Events
        3. 15.9.1.3. Controls
      2. 15.9.2. Interactivity
        1. 15.9.2.1. Hyperlinks
        2. 15.9.2.2. Drill-Down/Click-Through
        3. 15.9.2.3. Multiple Report Instances
        4. 15.9.2.4. Query by Report
    10. 15.10. SUMMARY
  23. 16. Customizing the Ribbon
    1. 16.1. RIBBON OVERVIEW
    2. 16.2. CUSTOM MENU BARS AND TOOLBARS
      1. 16.2.1. Custom Menu Bars
      2. 16.2.2. Shortcut Menu Bars
    3. 16.3. RIBBON CUSTOMIZATION USING THE OPTIONS DIALOG BOX
    4. 16.4. RIBBON CUSTOMIZATION
    5. 16.5. SAVING A CUSTOM RIBBON
    6. 16.6. SPECIFYING THE CUSTOM RIBBON
      1. 16.6.1. Defining a Ribbon Using XML
        1. 16.6.1.1. Using the Ribbon Schema
        2. 16.6.1.2. Writing the XML
        3. 16.6.1.3. Adding Tabs and Groups
        4. 16.6.1.4. Contextual Tabs
        5. 16.6.1.5. Adding Controls
          1. 16.6.1.5.1. Menus and Menu Separators
          2. 16.6.1.5.2. Buttons, Toggle Buttons, and Split Buttons
          3. 16.6.1.5.3. Check Boxes
          4. 16.6.1.5.4. Combo Boxes and Drop-Downs
          5. 16.6.1.5.5. Edit Boxes and Labels
          6. 16.6.1.5.6. Separator
          7. 16.6.1.5.7. DialogBoxLauncher
          8. 16.6.1.5.8. Grouping Controls
          9. 16.6.1.5.9. AutoScaling
      2. 16.6.2. Writing Callback Routines and Macros
        1. 16.6.2.1. Using Expressions
        2. 16.6.2.2. Using Access Macros
        3. 16.6.2.3. Using VBA
      3. 16.6.3. More Callback Routines
        1. 16.6.3.1. Checking a Checkbox
        2. 16.6.3.2. Determining Whether to Preselect a Checkbox
        3. 16.6.3.3. Filling a Combo Box or Drop-Down
        4. 16.6.3.4. Selecting an Item in a Combo Box or Drop-Down
        5. 16.6.3.5. Disabling a Control
      4. 16.6.4. Displaying Images
        1. 16.6.4.1. imageMso Attribute
        2. 16.6.4.2. loadImage Callback
        3. 16.6.4.3. getImage Callbacks
      5. 16.6.5. Refreshing Ribbon Content
        1. 16.6.5.1. onLoad Callback
        2. 16.6.5.2. Dynamically Setting Text for a Button Control
    7. 16.7. CREATING AN INTEGRATED RIBBON
      1. 16.7.1. Building the Report Manager
        1. 16.7.1.1. Creating the Reports Table
        2. 16.7.1.2. Using dynamicMenu
        3. 16.7.1.3. Writing the Callbacks
      2. 16.7.2. Building the Custom Filter Interface
        1. 16.7.2.1. Creating the Report
        2. 16.7.2.2. Building the Contextual Tab
        3. 16.7.2.3. Writing the Callbacks
    8. 16.8. CREATING A RIBBON FROM SCRATCH
      1. 16.8.1. Defining the Tabs and Groups
      2. 16.8.2. Building the Home Tab
        1. 16.8.2.1. Building the Flight Group
        2. 16.8.2.2. Building the Cruise Group
          1. 16.8.2.2.1. Writing the XML
          2. 16.8.2.2.2. Writing the Callbacks
        3. 16.8.2.3. Building the Hotel Group
        4. 16.8.2.4. Building the Rental Cars Group
      3. 16.8.3. Building the Settings Tab
      4. 16.8.4. Building the Administration Tab
    9. 16.9. MORE RIBBON TIPS
      1. 16.9.1. Setting Focus to a Tab
      2. 16.9.2. Additional Resources
    10. 16.10. SUMMARY
  24. 17. Customizing the Office Backstage
    1. 17.1. INTRODUCING THE OFFICE BACKSTAGE
      1. 17.1.1. Access 2010 Backstage
      2. 17.1.2. Parts of the Backstage
      3. 17.1.3. Uses for the Backstage in Custom Applications
    2. 17.2. WRITING A BACKSTAGE CUSTOMIZATION
    3. 17.3. CONTROLS IN THE BACKSTAGE
      1. 17.3.1. Tab
      2. 17.3.2. Group
        1. 17.3.2.1. primaryItem
        2. 17.3.2.2. topItems
        3. 17.3.2.3. bottomItems
      3. 17.3.3. TaskGroup, Category, and Task
      4. 17.3.4. TaskFormGroup
      5. 17.3.5. Button
        1. 17.3.5.1. style Attribute
        2. 17.3.5.2. isDefinitive Attribute
      6. 17.3.6. GroupBox
      7. 17.3.7. Hyperlink
      8. 17.3.8. ImageControl
      9. 17.3.9. LayoutContainer
      10. 17.3.10. RadioGroup
    4. 17.4. DESIGNING THE LAYOUT OF COMPONENTS
      1. 17.4.1. Single-Column Layout
      2. 17.4.2. Two-Column Layout
      3. 17.4.3. Column Widths
      4. 17.4.4. Creating a Grid
        1. 17.4.4.1. Column and Row Span
        2. 17.4.4.2. Creating a Table-Type Grid
    5. 17.5. EXTENDING THE EXISTING BACKSTAGE
      1. 17.5.1. Adding a Group to an Existing Tab
      2. 17.5.2. Adding a Category to an Existing TabForm-Group
      3. 17.5.3. Adding a Task to an Existing TaskGroup
    6. 17.6. BACKSTAGE-SPECIFIC CALLBACKS
      1. 17.6.1. onShow
      2. 17.6.2. onHide
      3. 17.6.3. getStyle
      4. 17.6.4. getHelperText
      5. 17.6.5. getTitle
      6. 17.6.6. getTarget
    7. 17.7. BACKSTAGE SCENARIOS
      1. 17.7.1. Access Runtime Experience
      2. 17.7.2. Setting the Title of a Tab to the Application Title
      3. 17.7.3. About Page and Contact Form
      4. 17.7.4. Warning for a Missing Reference
      5. 17.7.5. Custom Database Information
      6. 17.7.6. Creating a Bulleted or Numbered List
      7. 17.7.7. Welcome Page with Image
      8. 17.7.8. Other Possible Examples
        1. 17.7.8.1. Administration
        2. 17.7.8.2. Link Browser
        3. 17.7.8.3. Reminders
        4. 17.7.8.4. Report Manager
    8. 17.8. SUMMARY
  25. 18. Working with Office 2010
    1. 18.1. WORKING WITH OUTLOOK 2010
      1. 18.1.1. Setting References to Outlook
      2. 18.1.2. Creating Outlook Application Objects
        1. 18.1.2.1. Using the New Keyword
        2. 18.1.2.2. Using the CreateObject Method
        3. 18.1.2.3. New versus CreateObject
        4. 18.1.2.4. New Is Not Always New with Outlook
        5. 18.1.2.5. Using the GetObject Method
      3. 18.1.3. Working with MailItem objects
        1. 18.1.3.1. Creating an E-mail
        2. 18.1.3.2. Sending an E-mail
        3. 18.1.3.3. Adding an E-mail to a Folder
        4. 18.1.3.4. Other MailItem Settings
      4. 18.1.4. Outlook Security Features
        1. 18.1.4.1. Configuring Outlook Security with Exchange Server
        2. 18.1.4.2. Using Redemption to Send E-mail
      5. 18.1.5. Other Outlook Objects
        1. 18.1.5.1. Creating Tasks
        2. 18.1.5.2. Modifying Tasks
        3. 18.1.5.3. Deleting Tasks
        4. 18.1.5.4. Creating Calendar Items
        5. 18.1.5.5. Creating, Modifying, and Deleting Outlook Items
      6. 18.1.6. More Information about Outlook
    2. 18.2. WORKING WITH EXCEL 2010
      1. 18.2.1. Setting References to Excel
      2. 18.2.2. Creating Excel Application Objects
        1. 18.2.2.1. Using the New Keyword
        2. 18.2.2.2. Using the CreateObject Method
        3. 18.2.2.3. Using CreateObject without References to Excel
        4. 18.2.2.4. Using the GetObject Method
        5. 18.2.2.5. Showing the Excel Application Window
      3. 18.2.3. Working with Excel Workbooks
        1. 18.2.3.1. Creating a New Workbook
        2. 18.2.3.2. Opening an Existing Workbook
        3. 18.2.3.3. Saving a Workbook using SaveAs
        4. 18.2.3.4. Saving a Workbook using Save
        5. 18.2.3.5. Closing a Workbook
      4. 18.2.4. Working with Sheets in Excel
        1. 18.2.4.1. Activating an Existing Sheet
        2. 18.2.4.2. Creating a New Sheet
        3. 18.2.4.3. Deleting a Sheet
      5. 18.2.5. Working with Data in Excel
        1. 18.2.5.1. Getting Data in a Cell
        2. 18.2.5.2. Modifying Data in a Cell
        3. 18.2.5.3. Modifying Settings for a Cell
        4. 18.2.5.4. Using CopyFromRecordset
        5. 18.2.5.5. Using TransferSpreadsheet
      6. 18.2.6. More Information about Excel
    3. 18.3. WORKING WITH WORD 2010
      1. 18.3.1. Setting References to Word
      2. 18.3.2. Creating Word Application Objects
        1. 18.3.2.1. Using the New Keyword
        2. 18.3.2.2. Using the CreateObject Method
        3. 18.3.2.3. Using CreateObject without References to Word
        4. 18.3.2.4. Using the GetObject Method
        5. 18.3.2.5. Showing the Word Application Window
      3. 18.3.3. Working with Document Objects
        1. 18.3.3.1. Creating a New Document
        2. 18.3.3.2. Opening an Existing Document
        3. 18.3.3.3. Saving a Document using SaveAs
        4. 18.3.3.4. Saving a Document using Save
        5. 18.3.3.5. Closing a Document
      4. 18.3.4. Working with Data in Word
        1. 18.3.4.1. Adding Text to a Document
        2. 18.3.4.2. Adding Data to the Ends of a Document
        3. 18.3.4.3. Formatting Text in a Word Document
        4. 18.3.4.4. Automating Mail Merges
        5. 18.3.4.5. Using OutputTo
      5. 18.3.5. More Information about Word
    4. 18.4. SUMMARY
  26. 19. Working with SharePoint
    1. 19.1. SHAREPOINT 2010
      1. 19.1.1. What Is SharePoint?
      2. 19.1.2. SharePoint 2010 Requirements
      3. 19.1.3. SharePoint 2010 Versions
      4. 19.1.4. Access Services on SharePoint Server
    2. 19.2. ACCESS FEATURES OVERVIEW
      1. 19.2.1. SharePoint Features in Access 2010
      2. 19.2.2. Access Features in SharePoint 2010
    3. 19.3. SHAREPOINT FEATURES IN ACCESS
      1. 19.3.1. Access Web Applications
        1. 19.3.1.1. Traditional Apps versus Web Apps
          1. 19.3.1.1.1. Access Web Application Design Basics
          2. 19.3.1.1.2. Hybrid Web Application Design Basics
        2. 19.3.1.2. Getting Started with Web Apps
          1. 19.3.1.2.1. Creating a New Web Application Database
          2. 19.3.1.2.2. Creating a Web Application from Template
        3. 19.3.1.3. Creating Web Tables
          1. 19.3.1.3.1. Creating a New Web Table
          2. 19.3.1.3.2. The Web Table Designer
          3. 19.3.1.3.3. Adding Fields to a Web Table
          4. 19.3.1.3.4. Removing Fields from a Web Table
          5. 19.3.1.3.5. Data Macros
          6. 19.3.1.3.6. Working with Relationships
          7. 19.3.1.3.7. Linking to Other Data Sources
        4. 19.3.1.4. Creating Web Queries
          1. 19.3.1.4.1. Creating a New Web Query
          2. 19.3.1.4.2. The Web Query Designer
          3. 19.3.1.4.3. Access Query Database Objects
        5. 19.3.1.5. Creating Web Forms
          1. 19.3.1.5.1. Creating a New Web Form
          2. 19.3.1.5.2. The Web Form Designer
          3. 19.3.1.5.3. Access Form Database Objects
        6. 19.3.1.6. Creating Web Reports
          1. 19.3.1.6.1. Creating a New Web Report
          2. 19.3.1.6.2. The Web Report Designer
          3. 19.3.1.6.3. Access Report Database Objects
        7. 19.3.1.7. Creating Web Macros
          1. 19.3.1.7.1. Creating a New Web Macro
          2. 19.3.1.7.2. Access Macros and VBA Modules
        8. 19.3.1.8. Publishing to Access Services
          1. 19.3.1.8.1. Publishing an Application Using Access 2010
          2. 19.3.1.8.2. The Web Compatibility Wizard
        9. 19.3.1.9. Working with the Web Application
          1. 19.3.1.9.1. Running from the Browser
          2. 19.3.1.9.2. Rehydrating a Web Application
          3. 19.3.1.9.3. Modifying a Web Application
        10. 19.3.1.10. Access Web Application Summary
      2. 19.3.2. Linked Tables to SharePoint
        1. 19.3.2.1. SharePoint Linked Tables in an ACCDB
        2. 19.3.2.2. SharePoint Linked Tables in an MDB
        3. 19.3.2.3. Creating Linked Tables with VBA Code
          1. 19.3.2.3.1. TransferSharePointList Object Model
          2. 19.3.2.3.2. Creating a SharePoint Linked Table in Code
        4. 19.3.2.4. Query Processing for SharePoint Data
        5. 19.3.2.5. Offline Mode for SharePoint Linked Tables
          1. 19.3.2.5.1. Data Storage during Offline Mode
          2. 19.3.2.5.2. Offline Mode Data Synchronization Model
          3. 19.3.2.5.3. Using Offline Mode via the Access UI
          4. 19.3.2.5.4. Discarding Changes to an Offline Linked Table
          5. 19.3.2.5.5. Caching List Data for SharePoint Linked Tables
          6. 19.3.2.5.6. Using Offline Mode via Code
          7. 19.3.2.5.7. VBA Code for Offline Mode
          8. 19.3.2.5.8. VBA Code for Caching Mode
      3. 19.3.3. Migrating a Database to SharePoint
        1. 19.3.3.1. Using the Export to SharePoint Wizard
        2. 19.3.3.2. Data Type Conversion
        3. 19.3.3.3. Database Changes When Migrating to SharePoint
        4. 19.3.3.4. Features That Do Not Migrate to SharePoint
          1. 19.3.3.4.1. The Move to SharePoint Issues Table
          2. 19.3.3.4.2. Table Feature Not Available on SharePoint
      4. 19.3.4. Publishing a Database to SharePoint
        1. 19.3.4.1. Publishing a Traditional Database Application
        2. 19.3.4.2. The PublishURL Property
        3. 19.3.4.3. Opening in Read-Only Mode
          1. 19.3.4.3.1. Read-Only Mode for Local Tables
          2. 19.3.4.3.2. Read-Only Mode for Linked Tables
        4. 19.3.4.4. Opening in Edit Mode
        5. 19.3.4.5. Opening Published Databases with VBA Code
    4. 19.4. ACCESS FEATURES ON SHAREPOINT
      1. 19.4.1. SharePoint 2.0 Shows Access Features
      2. 19.4.2. Access Web Datasheet
        1. 19.4.2.1. Edit in Datasheet
        2. 19.4.2.2. Datasheet Task Pane
          1. 19.4.2.2.1. Track this List in Access
          2. 19.4.2.2.2. Export to Access
          3. 19.4.2.2.3. Report with Access
        3. 19.4.2.3. Open with Access
        4. 19.4.2.4. Access Application Templates for SharePoint
          1. 19.4.2.4.1. How It Works
          2. 19.4.2.4.2. Access SharePoint Tasks Template
          3. 19.4.2.4.3. Access SharePoint Issue Tracking Template
          4. 19.4.2.4.4. Using the AppendOnly Property
          5. 19.4.2.4.5. Using the ColumnHistory Method
          6. 19.4.2.4.6. Creating SharePoint Templates with NewCurrentDatabase
          7. 19.4.2.4.7. Open with Access for Non-Template Linked Lists
        5. 19.4.2.5. Importing from SharePoint
          1. 19.4.2.5.1. Importing from SharePoint 2010 into an ACCDB
          2. 19.4.2.5.2. Importing from SharePoint 2010 into an MDB
          3. 19.4.2.5.3. Importing from SharePoint Using VBA Code
          4. 19.4.2.5.4. Importing through the Access User Interface
        6. 19.4.2.6. Access Views on SharePoint
          1. 19.4.2.6.1. Advertising Access Views on the View Menu
          2. 19.4.2.6.2. Using the DisplayOnSharePointSite Property
    5. 19.5. SUMMARY
  27. 20. Working with .NET
    1. 20.1. OVERVIEW
      1. 20.1.1. Example Files
    2. 20.2. VISUAL STUDIO .NET 2010
      1. 20.2.1. Getting Visual Studio 2010
      2. 20.2.2. Installing Visual Studio 2010
        1. 20.2.2.1. Installing Visual Studio before Access
        2. 20.2.2.2. Installing Access before Visual Studio
      3. 20.2.3. .NET Terminology
      4. 20.2.4. Writing Code in Visual Studio 2010
        1. 20.2.4.1. Creating a New Project
        2. 20.2.4.2. The Program.cs File
        3. 20.2.4.3. Writing Code in C#
          1. 20.2.4.3.1. Defining Namespaces
          2. 20.2.4.3.2. Defining Classes
          3. 20.2.4.3.3. Defining Constructors
          4. 20.2.4.3.4. Defining Variables
          5. 20.2.4.3.5. Defining Methods
          6. 20.2.4.3.6. Instantiating Objects
          7. 20.2.4.3.7. Setting Properties
          8. 20.2.4.3.8. Calling Methods
          9. 20.2.4.3.9. Using Statements
        4. 20.2.4.4. Adding Items to the Project
        5. 20.2.4.5. Building the Project
        6. 20.2.4.6. Executing the Binaries
      5. 20.2.5. Debugging Code in Visual Studio 2010
        1. 20.2.5.1. Executing Code with the Debugger
        2. 20.2.5.2. Setting Breakpoints
          1. 20.2.5.2.1. Stepping Into Code
          2. 20.2.5.2.2. Stepping Over Code
          3. 20.2.5.2.3. Continuing Code Execution
          4. 20.2.5.2.4. Resetting Code Execution
          5. 20.2.5.2.5. Using Conditional Breakpoints
      6. 20.2.6. The MSDN Library
    3. 20.3. USING ACCESS DATABASES IN .NET
      1. 20.3.1. Working with ADO.NET
        1. 20.3.1.1. Adding Using Statements
        2. 20.3.1.2. Creating an OleDbConnection Object
        3. 20.3.1.3. Maintaining Connections
        4. 20.3.1.4. Creating an OleDbCommand Object
        5. 20.3.1.5. Executing Commands Against a Database
          1. 20.3.1.5.1. The ExecuteReader Method
          2. 20.3.1.5.2. The ExecuteNonQuery Method
          3. 20.3.1.5.3. The OleDbDataAdaptor Object
        6. 20.3.1.6. Working with SQL
      2. 20.3.2. Types of .NET Applications
      3. 20.3.3. Building Client Applications
        1. 20.3.3.1. Database File Permissions
        2. 20.3.3.2. Deciding on a Database Location
        3. 20.3.3.3. Manually Setting Permissions
        4. 20.3.3.4. Expanding Environment Variables
        5. 20.3.3.5. Setting Environment Variables
      4. 20.3.4. Building Web Applications
        1. 20.3.4.1. Creating an ASP.NET Web Application
        2. 20.3.4.2. Code Execution
        3. 20.3.4.3. The App_Data Folder
        4. 20.3.4.4. Setting Permissions
        5. 20.3.4.5. Working with Third-Party Web Hosts
        6. 20.3.4.6. The Server.MapPath Method
      5. 20.3.5. Other Methods of Using Access Databases
    4. 20.4. AUTOMATING ACCESS WITH .NET
      1. 20.4.1. The Access PIA
      2. 20.4.2. Setting References
      3. 20.4.3. Creating Code to Automate Access
        1. 20.4.3.1. Add Using Statements
        2. 20.4.3.2. The Access Application Object
        3. 20.4.3.3. Creating an Instance of Access
        4. 20.4.3.4. Calling the Access Object Model
        5. 20.4.3.5. Calling Access from the Windows Form
      4. 20.4.4. Running the Automated Application
    5. 20.5. CREATING COM ADD-INS FOR ACCESS
      1. 20.5.1. The Benefits of COM Add-Ins
      2. 20.5.2. Creating a New COM Add-In Project
      3. 20.5.3. Setting References to the Access PIA
      4. 20.5.4. Adding Custom Code to the Add-In
        1. 20.5.4.1. Adding Support for the Ribbon
          1. 20.5.4.1.1. Inheriting IRibbonExtensibility Interface
          2. 20.5.4.1.2. Adding the Ribbon XML
          3. 20.5.4.1.3. Add the GetCustomUI Method
          4. 20.5.4.1.4. Create the Code for the Add-In
      5. 20.5.5. Installing the COM Add-In
      6. 20.5.6. Running the COM Add-In
    6. 20.6. USING .NET CODE IN ACCESS
      1. 20.6.1. Creating a Managed Library in .NET
        1. 20.6.1.1. Creating a Managed Class Library Project
        2. 20.6.1.2. Coding a Managed Class
          1. 20.6.1.2.1. Adding Using Statements
          2. 20.6.1.2.2. Creating an Interface for the Class
          3. 20.6.1.2.3. Choosing a Class Name
          4. 20.6.1.2.4. Creating the Data Members
          5. 20.6.1.2.5. Creating the Constructors
          6. 20.6.1.2.6. Creating the Methods
        3. 20.6.1.3. Signing the Managed Assemblies
          1. 20.6.1.3.1. Creating an SNK File
          2. 20.6.1.3.2. Setting the Project's SNK File
        4. 20.6.1.4. Building the Managed Class
        5. 20.6.1.5. Creating a COM Type Library for the Assembly
        6. 20.6.1.6. Deploying the Managed Class
      2. 20.6.2. Calling a Managed Library from VBA
        1. 20.6.2.1. Choosing a Database
        2. 20.6.2.2. Setting References
        3. 20.6.2.3. Calling the .NET Code from VBA Code
    7. 20.7. SUMMARY
  28. 21. Building Client-Server Applications with Access
    1. 21.1. DATABASE APPLICATION EVOLUTION
    2. 21.2. CLIENT-SERVER APPLICATIONS
      1. 21.2.1. Using the Sample Files
      2. 21.2.2. Installing the Sample Database
      3. 21.2.3. Choosing the Correct File Format
    3. 21.3. THE ACCDB/MDB FILE FORMAT
      1. 21.3.1. Linking to External Data
      2. 21.3.2. Creating a DSN via Access
      3. 21.3.3. DSN Connection Types
      4. 21.3.4. Using ACE with ODBC Data Sources
        1. 21.3.4.1. The SQL Server Profiler Tool
        2. 21.3.4.2. LinkedTable Performance Considerations
        3. 21.3.4.3. Query Performance Considerations
        4. 21.3.4.4. Compound Key Performance Considerations
        5. 21.3.4.5. Increasing DSN Performance
      5. 21.3.5. Increasing ODBC Performance
        1. 21.3.5.1. Server Resource Considerations
        2. 21.3.5.2. Client Machine Resource Considerations
        3. 21.3.5.3. Network Performance Considerations
        4. 21.3.5.4. Pass-Through Queries
          1. 21.3.5.4.1. pass-through Query Uses
          2. 21.3.5.4.2. Creating a pass-through Query
    4. 21.4. THE ADP FILE FORMAT
      1. 21.4.1. Using ADPs to Link to Data
        1. 21.4.1.1. Linked Servers in SQL Server
        2. 21.4.1.2. Creating Linked Servers with Access
        3. 21.4.1.3. Creating Linked Servers with VBA Code
      2. 21.4.2. Query Options on SQL Server
        1. 21.4.2.1. SQL Server Views
        2. 21.4.2.2. SQL Server Stored Procedures
        3. 21.4.2.3. SQL Server Functions
    5. 21.5. ACCDB/MDB VERSUS ADP
      1. 21.5.1. Recordset Differences
      2. 21.5.2. Security Differences
      3. 21.5.3. Local Data Storage
      4. 21.5.4. Sharing Application Files
    6. 21.6. CONTROLLING THE LOGON PROCESS
      1. 21.6.1. Controlling Login for ACCDB/MDB Files
      2. 21.6.2. Controlling the Login Process for ADPs
    7. 21.7. BINDING ADO RECORDSETS
      1. 21.7.1. Binding to a Form, ComboBox, or ListBox
      2. 21.7.2. Binding to a Report
      3. 21.7.3. Using Persisted Recordsets
        1. 21.7.3.1. Persisting the Data to XML
        2. 21.7.3.2. Loading the XML Data
    8. 21.8. WORKING WITH UNBOUND FORMS
      1. 21.8.1. When to Use Unbound Forms
      2. 21.8.2. Creating Unbound Forms
        1. 21.8.2.1. Modifying the Design of the Form
        2. 21.8.2.2. Creating the Recordset
        3. 21.8.2.3. Adding Code to Navigate the Recordset
        4. 21.8.2.4. Enabling Records for Editing
    9. 21.9. SUMMARY
  29. 22. The Access 2010 Templates
    1. 22.1. ACCESS 2010 TEMPLATE FEATURES
    2. 22.2. ACCESS 2010 TEMPLATES TYPES
      1. 22.2.1. Standalone Database Templates
        1. 22.2.1.1. Instantiating a Standalone Template in Access 2010
        2. 22.2.1.2. Community Templates
      2. 22.2.2. Access Web Application Templates
      3. 22.2.3. Templates for SharePoint Applications
    3. 22.3. APPLICATION PARTS
    4. 22.4. TABLE FIELD TEMPLATES
    5. 22.5. SAVE AS TEMPLATE
      1. 22.5.1. Creating ACCDT Files
      2. 22.5.2. Features Not Supported in ACCDT Files
      3. 22.5.3. Deploying ACCDT Files
        1. 22.5.3.1. Opening a Template Using the Access UI
          1. 22.5.3.1.1. Double-Click
          2. 22.5.3.1.2. Use the Open Dialog Box
          3. 22.5.3.1.3. Selecting Templates by Category
        2. 22.5.3.2. Showing Custom Templates in the Backstage
        3. 22.5.3.3. Using the Access Object Model to Create Templates
    6. 22.6. THE ACCDT FILE FORMAT
      1. 22.6.1. The ACCDT File Parts
      2. 22.6.2. The Template's Root Folder
      3. 22.6.3. The Template Folder
        1. 22.6.3.1. Preview Image
        2. 22.6.3.2. template.xml
        3. 22.6.3.3. Database Folder
        4. 22.6.3.4. _rels Folder
      4. 22.6.4. The Database Folder
        1. 22.6.4.1. databaseProperties.xml
        2. 22.6.4.2. navpane.xml
        3. 22.6.4.3. relationships.xml
        4. 22.6.4.4. vbaReferences.xml
      5. 22.6.5. The Objects Folder
        1. 22.6.5.1. Database Object Files
        2. 22.6.5.2. sampleData Folder
        3. 22.6.5.3. Properties Folder
        4. 22.6.5.4. _rels folder
    7. 22.7. SUMMARY
  30. 23. Access Runtime Deployment
    1. 23.1. THE ACCESS 2010 RUNTIME
      1. 23.1.1. Why Use the Access Runtime?
      2. 23.1.2. Access 2010 Runtime Versions
      3. 23.1.3. Getting the Access 2010 Runtime
      4. 23.1.4. Using the Access Runtime
        1. 23.1.4.1. The ACCDR File Format
        2. 23.1.4.2. The /Runtime Command-Line Switch
        3. 23.1.4.3. Side-by-Side Installations
        4. 23.1.4.4. Full Access versus the Access Runtime
    2. 23.2. DEPLOYING THE ACCESS RUNTIME
      1. 23.2.1. Manual Installation of the Runtime
      2. 23.2.2. The Package Solution Wizard
      3. 23.2.3. Using the Package Solution Wizard
        1. 23.2.3.1. Starting the Package Solution Wizard
        2. 23.2.3.2. Page 1: Package Solution Wizard Options
          1. 23.2.3.2.1. Target System Requirements for the Setup Package
          2. 23.2.3.2.2. Starting New or Choosing an Existing Template
        3. 23.2.3.3. Page 2: Installation and Shortcut Options
          1. 23.2.3.3.1. The Installation Options
          2. 23.2.3.3.2. The Pre-Installation Requirements
          3. 23.2.3.3.3. Shortcut Options
          4. 23.2.3.3.4. Command-Line Options
        4. 23.2.3.4. Page 3: Additional Files and Registry Keys
          1. 23.2.3.4.1. Additional Files
          2. 23.2.3.4.2. Additional Registry Keys
        5. 23.2.3.5. Page 4: Additional MSI File Settings
          1. 23.2.3.5.1. General Properties
          2. 23.2.3.5.2. Feature Information
          3. 23.2.3.5.3. Add/Remove Programs Information
          4. 23.2.3.5.4. File Properties
          5. 23.2.3.5.5. Advanced Options
        6. 23.2.3.6. Finishing the Wizard
        7. 23.2.3.7. More Information about MSI Files
        8. 23.2.3.8. MSI Editing Tools
        9. 23.2.3.9. Install Chaining
    3. 23.3. SUMMARY
  31. 24. Database Security
    1. 24.1. ACCDB FILE SECURITY
      1. 24.1.1. Shared-Level Security for ACCDBs
        1. 24.1.1.1. Data Encryption Is Key
        2. 24.1.1.2. Encrypt with Password
        3. 24.1.1.3. Using the Access UI to Password Protect
        4. 24.1.1.4. Using the Access UI to Remove a Password
        5. 24.1.1.5. Using Code to Encrypt with Password
          1. 24.1.1.5.1. Using DAO to Set the Database Password
          2. 24.1.1.5.2. Using DAO to Set Encryption Options
          3. 24.1.1.5.3. Using ADO to Set the Database Password
          4. 24.1.1.5.4. Using the Access OM to Set the Password
      2. 24.1.2. Securing VBA Code in ACCDB
        1. 24.1.2.1. Locking the VBA Project
          1. 24.1.2.1.1. Protecting the VBA Project
          2. 24.1.2.1.2. Removing Protection from the VBA Project
        2. 24.1.2.2. Creating an ACCDE File
          1. 24.1.2.2.1. Using the Access UI to Create an ACCDE File
        3. 24.1.2.3. Using VBA to Create an ACCDE
          1. 24.1.2.3.1. Using SysCmd 603 to Create an ACCDE
      3. 24.1.3. ACCDB Security Summary
    2. 24.2. MDB FILE SECURITY
      1. 24.2.1. Shared-Level Security for MDBs
        1. 24.2.1.1. Setting a Password for an MDB File
        2. 24.2.1.2. Using the Access UI to Set the Database Password
        3. 24.2.1.3. Using VBA Code to Set the Database Password
      2. 24.2.2. Encoding an MDB File
        1. 24.2.2.1. Using the Access UI to Encode an MDB
      3. 24.2.3. Securing VBA Code for MDBs
        1. 24.2.3.1. Locking the VBA Project
        2. 24.2.3.2. Creating an MDE file
          1. 24.2.3.2.1. Using the Access UI to Create an MDE File
          2. 24.2.3.2.2. Using VBA to Make an MDE
      4. 24.2.4. User-Level Security
        1. 24.2.4.1. User-Level Security Overview
          1. 24.2.4.1.1. Planning User-Level Security
          2. 24.2.4.1.2. Notes about Other Security Methods
        2. 24.2.4.2. The MDW File
        3. 24.2.4.3. The Database to be Secured
      5. 24.2.5. Working with User-Level Security
      6. 24.2.6. Using the User-Level Security Wizard
      7. 24.2.7. Using the Access User Interface
      8. 24.2.8. User-Level Security Using DAO
        1. 24.2.8.1. Adding Groups
        2. 24.2.8.2. Removing Groups
        3. 24.2.8.3. Adding Users
        4. 24.2.8.4. Removing Users
        5. 24.2.8.5. Adding Users to Groups
        6. 24.2.8.6. Removing Users from Groups
        7. 24.2.8.7. Setting Permissions for the Database
        8. 24.2.8.8. setting permissions for database objects
        9. 24.2.8.9. Combining Permission Values
        10. 24.2.8.10. Removing Permission Values
        11. 24.2.8.11. Changing the Owner of an Object
      9. 24.2.9. User-Level Security Using ADO
        1. 24.2.9.1. Opening an ADO Connection
        2. 24.2.9.2. Adding Groups
        3. 24.2.9.3. Removing Groups
        4. 24.2.9.4. Adding Users
        5. 24.2.9.5. Adding Users to Groups
        6. 24.2.9.6. Removing Users
        7. 24.2.9.7. Removing Users from Groups
        8. 24.2.9.8. Modifying a User's Password
        9. 24.2.9.9. Ading Permissions
        10. 24.2.9.10. Removing Permissions
      10. 24.2.10. User-Level Security Using ADOX
    3. 24.3. SUMMARY
  32. 25. Access 2010 Security Features
    1. 25.1. THE OFFICE TRUST CENTER
      1. 25.1.1. What Is the Trust Center?
      2. 25.1.2. Trust Center Features
        1. 25.1.2.1. Trusted Publishers
        2. 25.1.2.2. Trusted Locations
        3. 25.1.2.3. Trusted Documents
        4. 25.1.2.4. File Validation
        5. 25.1.2.5. Add-Ins
        6. 25.1.2.6. Macro Settings
        7. 25.1.2.7. Message Bar
        8. 25.1.2.8. Privacy Options
    2. 25.2. DISABLED MODE
      1. 25.2.1. Why Do We Have Disabled Mode?
      2. 25.2.2. Enabling a Database
      3. 25.2.3. Modal Prompts
      4. 25.2.4. AutomationSecurity
        1. 25.2.4.1. Opening Remote Databases Programmatically
        2. 25.2.4.2. Other Uses for AutomationSecurity
      5. 25.2.5. Macros in Access 2010
        1. 25.2.5.1. Unsafe Actions
    3. 25.3. DIGITAL SIGNATURES AND CERTIFICATES
      1. 25.3.1. Types of Digital Certificates
        1. 25.3.1.1. Commercial Certificates
        2. 25.3.1.2. Internal Certificates
        3. 25.3.1.3. Obtaining a Digital Certificate
      2. 25.3.2. Using Self-Certification
        1. 25.3.2.1. Creating a Self-Certification Certificate
        2. 25.3.2.2. Adding a Certificate to Your Database
        3. 25.3.2.3. Using a Self-Signed Certificate on Another Computer
      3. 25.3.3. Signed Packages
        1. 25.3.3.1. Creating the Signed Package
        2. 25.3.3.2. Extracting the Signed Package
    4. 25.4. ACCESS DATABASE ENGINE EXPRESSION SERVICE
      1. 25.4.1. Sandbox Mode in Access 2010
      2. 25.4.2. Sandbox Mode Limitations
      3. 25.4.3. Workarounds
        1. 25.4.3.1. Blocked Functions
        2. 25.4.3.2. Blocked Custom Properties of ActiveX Controls
    5. 25.5. SUMMARY
  33. A. The Access Object Model
    1. A.1. THE APPLICATION OBJECT
      1. A.1.1. Application Object Properties
      2. A.1.2. Application Object Methods
    2. A.2. THE CURRENTDATA OBJECT
    3. A.3. THE CURRENTPROJECT OBJECT
    4. A.4. ACCESSOBJECT
    5. A.5. THE DOCMD OBJECT
    6. A.6. THE FORM OBJECT
      1. A.6.1. Form Object Properties
      2. A.6.2. Form Object Methods
      3. A.6.3. Form Object Events
    7. A.7. THE CONTROL OBJECT
      1. A.7.1. control object properties
      2. A.7.2. Control Object Methods
    8. A.8. CONTROLS ON FORMS AND REPORTS
      1. A.8.1. The Attachment Control
        1. A.8.1.1. Attachment Control Object Properties
        2. A.8.1.2. Attachment Control Object Methods
        3. A.8.1.3. Attachment Control Object Events
      2. A.8.2. The ComboBox Control
        1. A.8.2.1. ComboBox Control Object Properties
        2. A.8.2.2. Combobox Control Object Methods
        3. A.8.2.3. Combobox Control Object Events
      3. A.8.3. The CommandButton Control
        1. A.8.3.1. CommandButton Control Object Properties
      4. A.8.4. The ListBox Control
        1. A.8.4.1. ListBox Control Object Properties
        2. A.8.4.2. ListBox Control Object Methods
      5. A.8.5. The NavigationButton Control
        1. A.8.5.1. NavigationButton Control Object Properties
      6. A.8.6. The NavigationControl Control
        1. A.8.6.1. NavigationControl Control Object Properties
      7. A.8.7. The Subform Control
        1. A.8.7.1. SubForm Control Object Properties
        2. A.8.7.2. Subform Control Object Methods
        3. A.8.7.3. Subform Control Object Events
      8. A.8.8. The TextBox Control
        1. A.8.8.1. TextBox Control Object Properties
        2. A.8.8.2. Textbox Control Object Events
      9. A.8.9. The WebBrowserControl Control
        1. A.8.9.1. WebBrowserControl Control Object Properties
        2. A.8.9.2. WebBrowserControl Control Object Events
    9. A.9. OTHER COMMON CONTROL MEMBERS
    10. A.10. THE IMPORTEXPORTSPECIFICATION OBJECT
      1. A.10.1. ImportExportSpecification Object Properties
      2. A.10.2. ImportExportSpecification Object Methods
    11. A.11. THE MODULE OBJECT
      1. A.11.1. Module Object Properties
      2. A.11.2. Module Object Methods
    12. A.12. THE PRINTER OBJECT
      1. A.12.1. Printer Object Properties
    13. A.13. THE REFERENCES COLLECTION AND REFERENCE OBJECT
    14. A.14. THE REPORTS COLLECTION AND REPORT OBJECT
      1. A.14.1. Report Object Properties
      2. A.14.2. Report Object Methods
      3. A.14.3. Report Object Events
    15. A.15. THE SCREEN OBJECT
    16. A.16. THE SECTION OBJECT
      1. A.16.1. Section Object Properties
      2. A.16.2. Section Object Events
    17. A.17. OTHER HELPFUL INFORMATION
      1. A.17.1. Order of Events
        1. A.17.1.1. Forms, Controls, and Subforms
        2. A.17.1.2. Reports and Sections
          1. A.17.1.2.1. Report View and Layout View
          2. A.17.1.2.2. Print Preview
        3. A.17.1.3. Records
          1. A.17.1.3.1. Adding Records
          2. A.17.1.3.2. Editing Records
          3. A.17.1.3.3. Deleting Records
  34. B. DAO Object Method and Property Descriptions
    1. B.1. DAO-SUPPORTED OBJECTS
      1. B.1.1. ODBCDirect
      2. B.1.2. User-Level Security
      3. B.1.3. Containers Collection
      4. B.1.4. Container Object
        1. B.1.4.1. Collections
      5. B.1.5. DBEngine
      6. B.1.6. Collections
      7. B.1.7. Databases Collection
      8. B.1.8. Database Object
      9. B.1.9. Collections
      10. B.1.10. Documents Collection
      11. B.1.11. Document Object
      12. B.1.12. Collection
      13. B.1.13. Errors Collection
      14. B.1.14. Error Object
        1. B.1.14.1. Collections
      15. B.1.15. Fields Collection
      16. B.1.16. Field Object
      17. B.1.17. Collection
      18. B.1.18. Field2 Object
      19. B.1.19. Collection
      20. B.1.20. Groups Collection
      21. B.1.21. Group Object
      22. B.1.22. Collections
      23. B.1.23. Indexes Collection
      24. B.1.24. Index Object
      25. B.1.25. Collection
      26. B.1.26. Parameters Collection
      27. B.1.27. Parameter Object
      28. B.1.28. Collection
      29. B.1.29. Recordsets Collection
      30. B.1.30. Recordset Object
      31. B.1.31. Collections
      32. B.1.32. Recordset2 Object
      33. B.1.33. Collections
      34. B.1.34. Properties Collection
      35. B.1.35. Property Object
      36. B.1.36. Collection
      37. B.1.37. QueryDefs Collection
      38. B.1.38. QueryDefObject
      39. B.1.39. Collections
      40. B.1.40. Relations Collection
      41. B.1.41. Relation Object
        1. B.1.41.1. Collections
      42. B.1.42. TableDefs Collection
      43. B.1.43. TableDef Object
        1. B.1.43.1. Collections
      44. B.1.44. Users Collection
      45. B.1.45. User Object
        1. B.1.45.1. Collections
      46. B.1.46. Workspaces Collection
      47. B.1.47. Workspace Object
        1. B.1.47.1. Collections
    2. B.2. UNDOCUMENTED TOOLS AND RESOURCES
      1. B.2.1. Utilities ISAMStats
        1. B.2.1.1. Method 1
        2. B.2.1.2. Method 2
      2. B.2.2. Methods DAO.PrivDBEngine
        1. B.2.2.1. Recordset.Collect
          1. B.2.2.1.1. Recordset.Parent
    3. B.3. DAO FIELD TYPES
    4. B.4. OPENRECORDSET CONSTANTS
  35. C. ADO Object Model Reference
    1. C.1. THE CONNECTION OBJECT
      1. C.1.1. Properties of the Connection Object
      2. C.1.2. Methods of the Connection Object
        1. C.1.2.1. The Connection.BeginTrans Method
        2. C.1.2.2. The Connection.Cancel Method
        3. C.1.2.3. The Connection.Close Method
        4. C.1.2.4. The Connection.CommitTrans Method
        5. C.1.2.5. The Connection.Execute Method
        6. C.1.2.6. The Connection.Open Method
        7. C.1.2.7. The Connection.OpenSchema Method
        8. C.1.2.8. The Connection.RollbackTrans Method
      3. C.1.3. Collections of the Connection Object
        1. C.1.3.1. The Connection.Properties Collection
        2. C.1.3.2. The Connection.Errors Collection
          1. C.1.3.2.1. Properties of the Errors Collection
          2. C.1.3.2.2. Methods for the Errors Collection
    2. C.2. THE ERROR OBJECT
      1. C.2.1. Properties of the Error Object
    3. C.3. THE COMMAND OBJECT
      1. C.3.1. Properties of the Command Object
      2. C.3.2. Methods of the Command Object
        1. C.3.2.1. The Command.Cancel Method
        2. C.3.2.2. The Command.CreateParameter Method
        3. C.3.2.3. The Command.Execute Method
      3. C.3.3. Collections of the Command Object
        1. C.3.3.1. The Command.Parameters Collection
          1. C.3.3.1.1. Properties of the Parameters Collection
          2. C.3.3.1.2. Methods of the Parameters Collection
        2. C.3.3.2. The Parameters.Append Method
        3. C.3.3.3. The Parameters.Delete Method
        4. C.3.3.4. The Parameters.Refresh Method
        5. C.3.3.5. The Command.Properties Collection
    4. C.4. THE PARAMETER OBJECT
      1. C.4.1. Properties of the Parameter Object
      2. C.4.2. Methods of the Parameter Object
        1. C.4.2.1. The Parameter.AppendChunk Method
      3. C.4.3. Collections of the Parameter Object
        1. C.4.3.1. The Parameter.Properties Collection
    5. C.5. THE RECORDSET OBJECT
      1. C.5.1. Properties of the Recordset Object
      2. C.5.2. Methods of the Recordset Object
        1. C.5.2.1. The Recordset.AddNew Method
        2. C.5.2.2. The Recordset.Cancel Method
        3. C.5.2.3. The Recordset.CancelBatch Method
        4. C.5.2.4. The Recordset.CancelUpdate Method
        5. C.5.2.5. The Recordset.Clone Method
        6. C.5.2.6. The Recordset.Close Method
        7. C.5.2.7. The Recordset.CompareBookmarks Method
        8. C.5.2.8. The Recordset.Delete Method
        9. C.5.2.9. The Recordset.Find Method
        10. C.5.2.10. The Recordset.GetRows Method
        11. C.5.2.11. The Recordset.GetString Method
        12. C.5.2.12. The Recordset.Move Method
        13. C.5.2.13. The Recordset.MoveFirst Method
        14. C.5.2.14. The Recordset.MoveLast Method
        15. C.5.2.15. The Recordset.MoveNext Method
        16. C.5.2.16. The Recordset.MovePrevious Method
        17. C.5.2.17. The Recordset.NextRecordset Method
        18. C.5.2.18. The Recordset.Open Method
        19. C.5.2.19. The Recordset.Requery Method
        20. C.5.2.20. The Recordset.Resync Method
        21. C.5.2.21. The Recordset.Save Method
        22. C.5.2.22. The Recordset.Seek Method
        23. C.5.2.23. The Recordset.Supports Method
        24. C.5.2.24. The Recordset.Update Method
        25. C.5.2.25. The Recordset.UpdateBatch Method
      3. C.5.3. Collections of the Recordset Object
        1. C.5.3.1. The Recordset.Fields Collection
        2. C.5.3.2. The Recordset.Properties Collection
    6. C.6. THE RECORD OBJECT
      1. C.6.1. Properties of the Record Object
      2. C.6.2. Methods of the Record Object
        1. C.6.2.1. The Record.Cancel Method
        2. C.6.2.2. The Record.Close Method
        3. C.6.2.3. The Record.CopyRecord Method
        4. C.6.2.4. The Record.DeleteRecord Method
        5. C.6.2.5. The Record.GetChildren Method
        6. C.6.2.6. The Record.MoveRecord Method
        7. C.6.2.7. The Record.Open Method
      3. C.6.3. Collections of the Record Object
        1. C.6.3.1. The Record.Fields Collection
        2. C.6.3.2. The Record.Properties Collection
    7. C.7. THE FIELDS COLLECTION
      1. C.7.1. Properties of the Fields Collection
      2. C.7.2. Methods of the Fields Collection
        1. C.7.2.1. The Fields.Append Method
        2. C.7.2.2. The Fields.CancelUpdate Method
        3. C.7.2.3. The Fields.Delete Method
        4. C.7.2.4. The Fields.Refresh Method
        5. C.7.2.5. The Fields.Resync Method
        6. C.7.2.6. The Fields.Update Method
    8. C.8. THE FIELD OBJECT
      1. C.8.1. Properties of the Field Object
      2. C.8.2. Methods of the Field Object
        1. C.8.2.1. The Field.AppendChunk Method
        2. C.8.2.2. The Field.GetChunk Method
      3. C.8.3. Collections of the Field Object
        1. C.8.3.1. The Field.Properties Collection
    9. C.9. THE STREAM OBJECT
      1. C.9.1. Properties for the Stream Object
      2. C.9.2. Methods for the Stream Object
        1. C.9.2.1. The Stream.Cancel Method
        2. C.9.2.2. The Stream.Close Method
        3. C.9.2.3. The Stream.CopyTo Method
        4. C.9.2.4. The Stream.Flush Method
        5. C.9.2.5. The Stream.LoadFromFile Method
        6. C.9.2.6. The Stream.Open Method
        7. C.9.2.7. The Stream.Read Method
        8. C.9.2.8. The Stream.ReadText Method
        9. C.9.2.9. The Stream.SaveToFile Method
        10. C.9.2.10. The Stream.SetEOS Method
        11. C.9.2.11. The Stream.SkipLine Method
        12. C.9.2.12. The Stream.Write Method
        13. C.9.2.13. The Stream.WriteText Method
    10. C.10. THE PROPERTIES COLLECTIONS
      1. C.10.1. The Properties Collection
        1. C.10.1.1. Properties of the Properties Collection
      2. C.10.2. Methods of the Properties Collection
    11. C.11. THE PROPERTY OBJECT
      1. C.11.1. Properties of the Property Object
    12. C.12. THE ADO ENUMERATIONS
      1. C.12.1. The AffectEnum Members
      2. C.12.2. The BookmarkEnum Members
      3. C.12.3. The CommandTypeEnum Members
      4. C.12.4. The CompareEnum Members
      5. C.12.5. The ConnectOptionEnum Members
      6. C.12.6. The ConnectModeEnum Members
      7. C.12.7. The CopyRecordOptionsEnum Members
      8. C.12.8. The CursorLocationEnum Members
      9. C.12.9. The CursorOptionEnum Members
      10. C.12.10. The CursorTypeEnum Members
      11. C.12.11. The DataTypeEnum Members
      12. C.12.12. The EditModeEnum Members
      13. C.12.13. The ExecuteOptionEnum Members
      14. C.12.14. The FieldAttributeEnum Members
      15. C.12.15. The FieldStatusEnum Members
      16. C.12.16. The FilterGroupEnum Members
      17. C.12.17. The GetRowsOptionEnum Members
      18. C.12.18. The LineSeparatorEnum Members
      19. C.12.19. The LockTypeEnum Members
      20. C.12.20. The MarshalOptionsEnum Members
      21. C.12.21. The MoveRecordOptionsEnum Members
      22. C.12.22. The ObjectStateEnum Members
      23. C.12.23. The ParameterAttributesEnum Members
      24. C.12.24. The ParameterDirectionEnum Members
      25. C.12.25. The PersistFormatEnum Members
      26. C.12.26. The PositionEnum Members
      27. C.12.27. The RecordCreateOptionsEnum Members
      28. C.12.28. The RecordOpenOptionsEnum Members
      29. C.12.29. The RecordStatusEnum Members
      30. C.12.30. The RecordTypeEnum Members
      31. C.12.31. The ResyncEnum Members
      32. C.12.32. The SaveOptionsEnum Members
      33. C.12.33. The SchemaEnum Members
      34. C.12.34. The SearchDirectionEnum Members
      35. C.12.35. The SeekEnum Members
      36. C.12.36. The StreamOpenOptionsEnum Members
      37. C.12.37. The StreamReadEnum Members
      38. C.12.38. The StreamTypeEnum Members
      39. C.12.39. The StreamWriteEnum Members
      40. C.12.40. The StringFormatEnum Members
  36. D. 64-Bit Access
    1. D.1. INTRODUCING THE 64-BIT VERSION OF MICROSOFT OFFICE 2010
    2. D.2. 32-BIT TO 64-BIT ACCESS 2010 COMPARISON
    3. D.3. THE VBA 7 CODE BASE
    4. D.4. ACTIVEX CONTROL AND COM ADD-IN COMPATIBILITY
    5. D.5. API COMPATIBILITY
    6. D.6. DEALING WITH LEGACY CODE
    7. D.7. PERFORMANCE AND THE 64-BIT ENVIRONMENT
  37. E. References for Projects
    1. E.1. TYPES OF REFERENCES
    2. E.2. ADDING REFERENCES TO YOUR PROJECTS
      1. E.2.1. Reference Order Is Important
      2. E.2.2. The Object Browser
    3. E.3. BUILDING CODE LIBRARIES
      1. E.3.1. Using CurrentDB versus CodeDB
      2. E.3.2. Working with References Programmatically
        1. E.3.2.1. The Reference Object
        2. E.3.2.2. Running a Procedure from a Library Database
        3. E.3.2.3. Compiling to Validate References
      3. E.3.3. Fixing Broken References
      4. E.3.4. Avoiding Broken References
      5. E.3.5. References in Access 2010 64-bit
      6. E.3.6. Considerations When Upgrading to Access 2010
    4. E.4. RESOURCES
  38. F. Reserved Words and Special Characters
    1. F.1. WHAT ARE THE SOURCES OF RESERVED WORDS?
    2. F.2. RESERVED WORDS WITH ERROR MESSAGES
    3. F.3. RESERVED WORD LIST
    4. F.4. WHAT ARE SPECIAL CHARACTERS?
      1. F.4.1. ASCII Characters to Avoid
      2. F.4.2. Web Objects
      3. F.4.3. Bonus Code Example
  39. G. Naming Conventions
    1. G.1. THE BENEFITS OF USING A NAMING CONVENTION
    2. G.2. A BRIEF HISTORY
    3. G.3. THE FUNDAMENTALS OF THE HUNGARIAN CONVENTION
    4. G.4. RULES FOR CREATING NAMES — ADDING THE PERSONAL TOUCH
      1. G.4.1. Starting with the Basics
      2. G.4.2. Some Additional Thoughts about Other Objects
        1. G.4.2.1. Variables and Routines
        2. G.4.2.2. Functions
          1. G.4.2.2.1. Constants
          2. G.4.2.2.2. Classes
          3. G.4.2.2.3. Arrays and Collections
          4. G.4.2.2.4. Attachments
          5. G.4.2.2.5. Macros
          6. G.4.2.2.6. Web Objects
    5. G.5. MORE DOS AND DON'TS
    6. G.6. TABLES OF TAGS
    7. G.7. STANDARDS
  40. H. The Access Source Code Control
    1. H.1. GETTING THE ACCESS SCC
    2. H.2. INSTALLING THE ACCESS SCC
      1. H.2.1. Installing an SCC Program
      2. H.2.2. Registering an SCC Database
      3. H.2.3. Adding Users
    3. H.3. USING THE ACCESS SCC
      1. H.3.1. Adding a Database to the SCC
      2. H.3.2. Modifying SCC Databases
      3. H.3.3. Creating a Database from the SCC
    4. H.4. THE ACCESS SCC OPTIONS
    5. H.5. SUMMARY
  41. I. Tips and Tricks
    1. I.1. VISUAL INTERFACE STANDARDS
      1. I.1.1. Use Businesslike Colors
      2. I.1.2. Provide a Well-Marked Exit
      3. I.1.3. Watch Your Punctuation
      4. I.1.4. Use Consistent Button Placement & Shortcut Keys
      5. I.1.5. Hide Higher-Level Forms
      6. I.1.6. Use Read-Only "Index" Forms
      7. I.1.7. Check Your Table Linkage
      8. I.1.8. Translate Default Delete Messages
      9. I.1.9. Looking Good
    2. I.2. DAISY CHAIN YOUR FORMS
      1. I.2.1. Form A Opens Form B
      2. I.2.2. Form B Opens
      3. I.2.3. Form B Closes
      4. I.2.4. When Form A Is a Subform
    3. I.3. FIND RECORDS
      1. I.3.1. Calling the Record Finder Code
      2. I.3.2. Record Finder Code
        1. I.3.2.1. Passing Control and Form References to a Function
        2. I.3.2.2. Optional Parameters
      3. I.3.3. Using the RecordsetClone
      4. I.3.4. Searching Multiple Fields Using Concatenation
      5. I.3.5. Handling Quotes in the Search Phrase
      6. I.3.6. Setting Focus from Afar
    4. I.4. SPLIT YOUR APPLICATION
    5. I.5. DISPLAY INFORMATIVE FORM CAPTIONS
    6. I.6. PRELOAD RECORDS
    7. I.7. USE A SPLASH SCREEN
    8. I.8. POP-UP MEMO WORKSPACE FORM WITH SPELL CHECK
    9. I.9. DETERMINE THE USER NAME
      1. I.9.1. The Current Access User
      2. I.9.2. The Current Windows User
    10. I.10. CONTRIBUTOR TIPS
      1. I.10.1. Need Data in Columns: IIF Queries to the Rescue
        1. I.10.1.1. The IIF Query Solution
        2. I.10.1.2. Taking the IIF Statement a Little Further
      2. I.10.2. TempVars
        1. I.10.2.1. Creating a TempVar
        2. I.10.2.2. Compared with Global Variables
        3. I.10.2.3. Using TempVars to Identify Application Users
      3. I.10.3. Tips for Tables and Colors
        1. I.10.3.1. Listing All Indexed Fields in a Database
        2. I.10.3.2. Prohibit Manually Deleting a Table
        3. I.10.3.3. Scripting Access Tables
        4. I.10.3.4. Implementing Audit Trail Capabilities
        5. I.10.3.5. Color Blender
      4. I.10.4. Access Services 2010 in Action: Screencast Tutorial Database Project
        1. I.10.4.1. The Web Database
        2. I.10.4.2. Benefits to the End User