Microsoft Access 2000 Power Programming
http://www.empowermentzone.com/accpower.zip
Table of Contents
Introduction
PART I--The Root of Power Programming
CHAPTER 1--Macros Are for Weenies; Code Is Cool!
Understanding Where Macros End and Code
Begins
When Are Macros Necessary?
When Is Code Necessary?
Looking at Macro-to-Code Changes
Using the DoCmd Object
Code Equivalents of Macro
Commands
Converting Existing Macros to VBA Code
Summary
CHAPTER 2--Coding in Access 2000 with VBA
Getting Started with Programming
Using Code Modules
Declaring Variables
Declaring Procedures
Controlling Program Flow
Commenting Code
Handling Errors
Programming Style Used
Throughout This Book
Getting Started with VBA
Introducing Objects
Using the Object Browser
Programming with Objects
The Public Keyword
The Private Keyword
Using Properties and Methods
Using Existing Properties
Using Existing Methods
Specifying Named Parameters
Assigning Objects to Variables
Using Collections
Counting the Number of Elements
Accessing Elements of the
Collection
Iterating over Collections
Customizing a Form
Writing Custom Properties
Writing Object-Valued Properties
Writing Custom Methods
Coding Class Modules
Creating the Support Objects
Creating the Class Module
Using the Class Module
Summary
CHAPTER 3--Making the Choice: MDB or ADP, DAO or
ADO
Using Microsoft Database Versus Access
Database Project
Looking at the Objects Used in
Each
Using Data Access Objects Versus Activex
Data Objects
Summary
CHAPTER 4--Looking at the Access Collections
Creating Custom Collections
Defining a New Collection
Adding Items to the Collection
Removing Items from the
Collection
Comparing Custom Collections to Arrays
Creating a Collection of
Integers
Creating an Array of Integers
Understanding Advanced Uses of
Collections
Accessing the Access Object Model
Using the Application Object
Looking at the References
Collection
Working with the Forms and
Reports Collections
Programming Multiple Copies of the Same
Form
Supporting Multiple-Form
Instances
Examining the Employees Form's
Code
Closing the Employees Forms
Automatically
Summary
CHAPTER 5--Working with Data Access Objects
Understanding Data Access Objects
Understanding the Anatomy of
Your Database
Getting Started with DAO
Getting into Your Database
Examining Your Database
Examining Table Attributes
Examining Query Types
Creating a Database with DAO
Creating the Database Object
Copying Table Structures
Fielding the Field Object
Copying Queries
Copying Relationships
Copying Data
Increasing Speed with Transactions
Using Custom Properties
Summary
CHAPTER 6--Introducing Activex Data Objects
Looking at the Object Models
The ActiveX Data Objects 2.1
(ADODB) Object Model
The ADO Extensions 2.1 for DDL
and Security (ADOX) Object Model
Jet and Replication Objects 2.1
(JRO) Object Model
Referencing the Type Libraries
Opening a Connection to a Database
Connecting to the Current
Database
Connecting to Another Database
Creating a Recordset with ADO
Opening a Simple Recordset
Looping Through and Editing
Recordsets
Creating Persistent Recordsets
Using the RecordCount, BOF, and
EOF Properties
Checking to See What Operations
a Recordset Will Support
Cloning Recordsets
Bookmarks
Working with Queries Using ADO
Creating a New Query
Creating a Parameterized Query
Opening a Recordset off a
Parameterized Query
Executing Bulk Queries
Modifying an Existing Query
Deleting a Query
Working with Tables Using ADO
Looking at the Tables Collection
Creating a New Table with Fields
and Indexes
Modifying an Existing Table by
Adding an Index
Summary
CHAPTER 7--Handling Your Errors in Access with
VBA
Access Error Messaging
Different Ways of Using Error Handling
Examining Access's Runtime Error
Handling
Using the On Error Command
Using the Exit Sub|Function
Command
Using Resume, Resume Next, and
Resume LineLabel
Working with the Err and Error Objects
The Err Object's Clear Method
The Err Object's Raise Method
Working with the Errors Collection
Creating User-Defined Errors
Tracking Errors by Using a Custom Error
Log
The Declarations Section for
Error Log Routines
An Example Error Handler Calling
the Error Log
The Information Tracked for Each
Error
Examining the Actual Error Log
Code
Logging to the Back End First,
or Front End if Necessary
Updating the Back End with Any
Errors That Occur
Creating a Centralized Error-Handling
Routine
A Last Look at Error-Handling Issues
Watching for Environment
Switches
Using Your Error Handler to Roll
Back Transactions
Using a Form's On Error Event
Nesting Error Handlers
Looking at Some New Options for
Error Handling
Summary
PART II--Manipulating and Presenting Data
CHAPTER 8--Using Queries to Get the Most Out of
your Data
Understanding Where Queries Are Used in
Access
Using Queries with Form and
Report Record Source Properties
Giving Users Access to Queries
Using Naming Conventions and
Query Documentation
Using Select Queries: Power in the Query
Design Grid
Joining Tables
Using the Same Table Twice (Self
Joins)
Using the Access AutoLookup
Feature
Working with Action Queries: Foundations
for Power
Make Table Query (SELECT INTO)
Append Query (INSERT INTO)
Update Query (UPDATE..SET)
Delete Query (DELETE)
Using Advanced Query Operations
Some Summary Queries
Individual or All Choices Using
Union Queries
Nested Queries
Subqueries
Queries That Create Objects
(DDL)
Adding More Power with VBA
Building Faster Queries in VBA
Using Query by Form
Creating Temporary QueryDefs
Using the DoCmd Object's RunSQL
Method
Issuing Parameter Queries From
VBA
Working with Queries to Feed Reports and
Forms
Solving Problems with Queries
Grouping to Get Percentages
Finding and Deleting Duplicate
Records
Nesting Groups to Get the
Complete Solution
Distinguishing Between New and
Old Records
Creating a Total Row for
Crosstab Queries
Examining the Architecture of the Query
Resolution Process
Defining the Query
Compiling
Preparing the Execution Plan
(Optimization)
Discovering Jet Optimization Methods
Using Rushmore Technology
Examining the Clustered Primary
Index
Working with Read-Ahead
Using the SetOption Command for
Jet's Registry Settings
Understanding Optimization Techniques
Increasing Performance with
Table Relationships
Adding Indexes
Tweaking the Database Structure
to Affect Performance
Optimizing Join Performance
Using Unconventional Optimization
Techniques
Understanding Some
Performance-Tuning Pitfalls
Diagnosing Slow Queries
Resolving Ambiguous Field
References with the Query Design
Grid
Using the Analyzer Wizards
The Table Analyzer Wizard
The Performance Analyzer Wizard
The Database Documentor
Summary
CHAPTER 9--Creating Powerful Forms
Increasing the Performance of Your Forms
How to Increase Form Performance
Using Access 2000's New Form Features
Using the Form Recordset
Property
Using the Dirty Event
Taking Advantage of Other Form Features
Specifying a Splash Screen Form
at Startup
Using Form Background Properties
Reusing Forms to Perform Standard Tasks
with the OpenArgs and Tag Properties
Increasing Tabbed Form Performance
Summary
CHAPTER 10--Expanding the Power of Your Forms
with Controls
Setting Up a Field's Lookup Properties
for Use on Forms
Tapping Into the Power of Combo Boxes
Using the Combo Box Wizard
Programming Combo Boxes Beyond
the Wizard
Using a Union Query to Give the
Choice of One or All
Using a UNION SQL Statement to
Requery All in a Subform
Displaying Combo Box Columns
Outside the Control
Adding New Combo Box Items Based
on User Input
Working with the Native Access Tab
Control
An Overview of the Native Tab
Control
Creating and Editing a New Tab
Control
Moving Pages in the Tab Control
Adding Controls to the Tab Pages
Using Code with the Access Tab
Control
Morphing Access Controls
Morphing Controls at Design Time
Morphing Controls with VBA at
Runtime
Programming for Power with Multiselect
Listbox Controls
List Box Properties Dealing with
Multiple Selection
Manipulating Items Selected in a
Multiselect List Box with VBA
Using the Subform/Subreport Wizard for
Relief
Giving Spreadsheet-Type Cursor Movements
to Controls
Looking at the Problem
Creating a Solution
Manipulating Controls Through Code
Examining the Pieces of the
Option Group Menu Form
Introducing the
ManipulatingControlsExample Form
Looking at the Code Behind the
Form
Summary
CHAPTER 11--Creating Powerful Reports
Using the Same Report for Summary,
Detail, and Summary/Detail Reports
Using Query by Form to Create Dynamic
Groupings for the Same Report
The Elusive Feature: Creating Snaking
Reports
Looking at the Before Report
Examining the Properties of the
Columns Page
Working with the After Report
Using Dynamic Columns to Create a Report
Off a Crosstab Query
Looking at the Query by Form
Used for the Report
Looking at the Crosstab Query
Used for the Report
Looking at the
DynamicColumnsExample Report
Choosing Multiple Topics to Print by
Using the MultiSelect List Box
Looking at the
MultiSelectCategoryExample
Report
Looking at the MultiSelect List
Box Form
Code Listings for the
MultiSelect List Box Form
Creating a Wizard-Like Interface for
Selecting Group-By Items
The Core Tables: WizExReports
and WizExElements
Working with the WizExReports
Form
Using the Group Element Wizard
with a New Report
Formatting Reports Dynamically
Looking at the
DynamicFormattingExample Report
Using Conditional Formatting in
Reports
Summary
CHAPTER 12--Working with Data Pages
Why Data Access Pages?
Understanding How Data Access
Pages Are Structured
Understanding the Navigation
Control
Comparing Data Access Pages to
Forms and Reports
Understanding What Users Need
for Data Access Pages
Saving Time with the Data Access Page
Wizards
Using AutoPage: Columnar
Taking Off with the Page Wizard
Creating and Enhancing Simple Data
Access Pages
Looking at the Data Access Page
Field List
Adding Hyperlinks
Using Expressions on Data Access
Pages
Using Bound Combo and List Boxes
Formatting with Themes
Additional Controls to Be Used
on Data Access Pages
Grouping Data Access Pages: Reports for
the Web
Creating the Base Page
Creating a Relationship on a
Data Access Page
Creating Group Levels with
Promote
Adding a Caption Section
Viewing Your Data Hierarchically
with Banded Data Access Pages
Using a Combo for a Group Filter
Control
Finding Additional Resources
Summary
PART III--Extending Access with Interoperability
CHAPTER 13--Driving Office Applications with
Automation and DDE
Understanding Automation
Examining the Office Products' Object
Models
Using Automation
Declaring Object Variables in
VBA
Using the CreateObject()
Function
Using the GetObject() Function
Running Other Applications from Access
with Automation
Driving Word from Access
Driving Excel from Access
Driving Microsoft Graph from
Access
Driving Microsoft Project from
Access
Using Automation to Drive Access from
Microsoft Project
Using Automation to Drive Outlook from
Access
Creating a Outlook Mail Item
Creating a Outlook Task Item
from Access
Putting Contacts into Outlook
from Access
Deleting Contacts in Outlook
from Access
Creating Outlook Calendar
Entries from Access
Driving Other Applications with DDE
Understanding DDE Commands Used
in Access
Performing the Complicated Word
Example with DDE
Summary
CHAPTER 14--Programming for Power with ActiveX
Controls
Understanding the ActiveX Windows Common
Controls
Using the TabStrip Control
Differences in Programming the
Access Tab and ActiveX TabStrip
Controls
Taking a Closer Look at the ImageList
Control
Adding Images During Design Time
Adding Images to the ImageList
Control at Runtime
Emulating the Windows 95 Explorer with
the ListView Control
Looking at the Different Views
of the ListView Control
Seeing the Major Groupings of
the ListView Control Properties
Setting Up a ListView Control
Manually
Creating and Filling a ListView
Control Using VBA
Displaying a Task's Progress with the
ProgressBar Control
Using SysCmd() to Display the
Access Progress Bar
Using the ActiveX ProgressBar
Control
Sizing Text Boxes at Runtime with the
Slider Control
Telling It Like It Is with the Microsoft
Rich TextBox Control
Properties of the Rich Textbox
Control
Code Behind the Microsoft Rich
Textbox Control
Creating Status Bars for Individual
Forms with the StatusBar Control
Setting Status Bar Properties at
Runtime
Docking Toolbars on Forms Using the
ToolBar Control
Viewing Data File Manager Style with the
TreeView Control
Summary
CHAPTER 15--Using API Calls to Extend the Power
of Access
Understanding Dynamic Link Libraries
Links Performed
Memory Considerations
Commonly Used DLLs
Examining the Syntax for API Calls
Finding API Declarations
Viewing the Possible API Calls
Using the API Viewer to Locate
Calls
Finding API Calls in the
Win32api.txt File
Considering Some Issues When Using API
Calls
Creating Your Own API
Declarations from Scratch
Converting 16-Bit to 32-Bit API
Calls
Looking at Some Examples of API Calls
Finding an Executable
Application Associated with a
File
Looking at the Form Used
Connecting and Disconnecting
Network Drives from Within
Access
Displaying the Current User and
Computer Name
Displaying Pertinent Folders from Within
Your Application
Using the Open File Dialog API Call
Summary
CHAPTER 16--Extending Your VBA Library Power
with Class Modules and Collections
Looking at the First Scenario
Feature Set of the Bookmark
Tracker
Some Basic Objects of the
Bookmark Tracker
Let's Have a Little
Class...Modules, That Is!
Wrapping Up with the Bookmark
Tracker
Managing Multiple Instances of the Same
Form
Looking at the Feature Set
Looking at the Forms Used in
Opening Copies of the Same Form
Example
Examining the Code Used for
Managing Multiple Copies of the
Same Form
Summary
CHAPTER 17--Creating Your Own Wizards and
Add-ins
Understanding Access Wizards, Builders,
and Add-Ins
Looking at the Wizards and Add-In
Registry Entries
Creating Your Own Add-Ins
Working with the Bookmark
Tracker Wizard
Installing Add-Ins in Access
2000
Programming the Bookmark
Tracking Wizard
Finishing Up with the Wizard
Using Access Code Libraries
Looking at the Pros and Cons of
Code Libraries
Considering Where to Put the
Library Database
Setting a Reference to a Library
Viewing Library Routines in the
Object Browser
Looking at Some Library Coding
Issues
Summary
CHAPTER 18--Manipulating the Registry With VBA
Looking at the History of the Window's
Registry
Using the Windows Registry in
Your Applications
Parts Making Up the Registry
Tools Used For Working with the
Registry
Using VBA's Registry Commands
Performing Tasks with the Registry API
Calls
Working with Multiple Back-End
Databases
Looking at the Sample
Application
Working with the Actual Code
Summary
CHAPTER 19--Using Access with the Internet
Looking at Access's Hyperlink Features
Working with Unbound Hyperlink
Controls
Maintaining a Hyperlink Base for
a Database
Looking at the Hyperlink Data
Type
Adding Hyperlinks to Your
Interface by Using the
IsHyperlink Property
Programmatically Using
Hyperlinks with the Follow,
FollowHyperlink, and
HyperlinkPart Methods
Looking at Access's Hyperlink Options
Importing and Exporting Access Objects
to HTML Documents the Easy Way
Using Export for Exporting to
HTML
Importing and Linking to HTML
Files
Publishing to Other Web File Formats
Summary
PART IV--Adding the Professional Look and Distributing
Application
CHAPTER 20--Programming Office Command Bars and
the Office Assistant
Using Command Bars
The Customize Dialog's Toolbars
Page
The Customize Dialog's Commands
Page
Options Tab of the Customize
Dialog
Creating a Toolbar Through the
User Interface
Working with Command Bars Through VBA
Looking at the Command Bars
Object Model
Modifying a Command Bar
Programmatically
Working with the Office Assistant
Looking at the Office Assistant
Object Model
Using the Office Assistant as
Help for a Form
Looking at the FileSearch Object
Working with a Simple Example
Using FileSearch Properties
Using the PropertyTests
Collection
Looking at a More Complex
Example That Uses the
PropertyTest Object
Summary
CHAPTER 21--Securing Your Application
Understanding the Purpose of Securing
Your Application
Protecting Sensitive Data
Protecting Developer's Code
Understanding Security in Access 2000
Understanding the Model and the
Function of System.mdw
Share-Level Security: The
Database Password
User-Level Security: The Real
Security System of Access
Users and Groups
Permissions
Do I Have Permissions?
Understanding Ownership
Encrypting Your Database for
Added Protection
The System.mdw File
Looking at the Security User Interface
Working with PIDs, SIDs, WIDs,
and Passwords
Creating a New User
Creating a New Group
Removing Users and Groups
Adding a User to a Group
Adding a Password to a User
Account
Removing a Password from a User
Account
Setting Permissions on an Object
Securing Modules in the VBE
Setting Database Permissions
Changing the Owner of an Object
Encrypting a Database
Creating a Workgroup Information
File
Manually Securing a Database
Using Tools to Make Life with Access
Security Easier
Using the Security Wizard
Printing Users and Groups from
Access
Reading the Security White
Papers
Using Other Security Resources
Avoiding Common Pitfalls Found in Access
Security
Planning Security
Creating Objects with Default
Accounts
Securing Linked Tables in a
Multiuser Environment
Running with Owner's Permissions
Using Security in a Replication
Environment
Distributing Secured
Applications with the Microsoft
Office Developer
Distributing Secured
Applications by Creating an .mde
File
Managing Security Through Code
Using DAO to Program Security
Creating a New User Through Code
Deleting a User Through Code
Setting the Database Password
Through Code
Creating a Group Through Code
Deleting a Group Through Code
Adding a User to a Group Through
Code
Removing a User from a Group
Through Code
Changing the Owner of an Object
Through Code
Setting Permissions for an
Object Through Code
Checking Permissions Through
Code
Determining Who You're Logged On
As Through Code
Denying Users the Ability to
Create Databases
Denying the Creation of Table
and Query Objects
Compacting, Encrypting, or
Decrypting a Database Through
Code
Disabling the Bypass Key Through
Code
Using the Secured Sample Database:
Chap21s.mdb
Summary
PART V--Managing Databases
CHAPTER 22--Handling Multiuser Situations
Looking at Multiuser Terminology
Understanding Access Multiuser Handling
Default Record Locking
Default Open Mode: Shared Versus
Exclusive
Number of Update Retries
ODBC Refresh Interval
Refresh Interval
Update Retry Interval
One or Two Database Containers: Knowing
Where to Put the Pieces
Knowing What Should Go Where: An
Overview
Understanding the Advantages and
Disadvantages of Splitting
Databases
Splitting Databases Manually
Working with the Database
Splitter Wizard
Looking at the Built-In Locking Modes
Using Record Versus Page-Level
Locking
Locking All Records
Locking Edited Records
Using the No Locks Locking Mode
Using the Locking Modes in VBA
Using Alternative Locking
Schemes
Working in VBA with Unbound Forms
Creating the Routines for
Handling Unbound Forms
Walking Through the Steps of
Using the Sample Form
Using Support Routines
Working with the DAO Version
Setting Up the ADO Version of
the Sample Application
Coding for Multiuser Error Handling
Getting a List of Logged-In Users with
ADO
Summary
CHAPTER 23--Welcome to the World of Database
Replication
Understanding Database Replication
Concepts
Focusing on the Replication
Design Goal
Looking at Some Typical
Replication Applications
Understanding the Jet Replication Tools
The Briefcase
Access Menus
Replication Manager
Jet and Replication Objects
Programming
Converting a Database to a Replica
Synchronizing Replicas
Understanding the Design Master
and Replicas
Recovering the Design Master
Replication Visibilities
Replication System Columns,
Tables, and Other Mysteries
Using Replica Sets
Understanding Replica Set Topologies
Singly Connected List
Star and Hub Topologies
Automating Star and Hub Synchronization
Distributing Replicable Applications
Using Replicable and
Non-Replicable Objects
Partial Replicas
Replicating Back-End and Front-End
Applications
Dealing with Replication Conflicts
Understanding Data Conflicts
Using the Access Conflict
Resolver
Using an Alternative
Conflict-Resolution Algorithm
Understanding Various
Replication Conflicts
Understanding Replication Synchronizers
Synchronization Phases
Direct and Indirect
Synchronizations
Scheduled and On-Demand
Synchronizations
Synchronizing Replicas over the
Internet
Handling Counter Fields
Using Read-Only Attributes with
Replication
Performing Replication
Identification Fixup
Using the Last Synchronization
Partner
Using the Compact Utility with
Replicated Databases
Deciding Whether to Back Up Your
Replicas
Upgrading Replica Sets from Access 97 to
Access 2000
Securing Replicated Applications
Using MDE Files with Replicated
Databases
Creating Successful Replication
Applications
Summary
CHAPTER 24--Moving Workgroup Applications to
Client/Server
Understanding Client/Server
Explaining the Term
Client/Server
Working with Open Database
Connectivity
Understanding the Reasons to Use
Access for Client/Server
Factoring for Migration to Client/Server
Amount of Data
Use and Purpose of Database
Database Design
Concurrent Use and Number of
Users
Backup and Recovery
Security
Data Sharing Among Applications
Network Traffic
Record Aggregation
Bet Your Career on Choosing the
Right System
Planning for Client/Server
Field and Table Names
Reserved Words
Case Sensitivity
Query Processing on the Server
Knowing What to Watch for in Application
Development
Limiting Your Data
Using Combo Boxes
Using Access-Specific and
User-Defined Functions
Creating Heterogeneous and
Cross-Database Joins
Dealing with OLE Objects
Using Local Tables for Static
Information
Converting Existing Applications
Starting with a Well-Designed
Database
Using Timestamp Fields
Cleaning Up Queries
Reworking Forms
Developing Advanced Applications
Working with Current Access
Security
Upsizing Access Databases
Using the Upsizing Tools
Distributing a Client/Server Solution
Programmatically Setting Up an
ODBC Data Source
Re-creating a SQL Database with
Server Scripts
Loading Existing Data into SQL
Server
Keeping Certain Issues in Mind with
Access and SQL Server
Summary
CHAPTER 25--Developing SQL Server Projects Using
ADPS
Project File Architecture
Introducing OLE DB
Linking to Data
Data Links and Access Projects
Data Links and VBA Code
The Microsoft Data Engine
Objects on a SQL Server
Working with Projects
Creating a New Project
Project Properties
Securing a Project
Building a Client/Server Application
Working with Tables
Naming Conventions for Objects
Server Data Types
Using Constraints
Using Triggers
Optimizing Data Access
Working with Views
Working with Stored Procedures
Creating Stored Procedures
Comparing Stored Procedure and
Access Syntax
Summary
PART VI--Adding Finishing Touches
CHAPTER 26--Startup Checking System Routines
Using DAO
Performing Startup System Checks
Using Custom Database Properties
Creating Database Properties
Through the User Interface
Accessing Custom Database
Properties from VBA
Notifying and Logging Users Out of an
Application
Keeping Users Out at Startup
Time
Logging Users Out in the Middle
of the Application
Setting the Flag File to Log
Users Out of the Back End
Testing the Connections of Linked Tables
at Startup
Linking and Unlinking Tables Through VBA
Linking and Unlinking Tables in
a Jet Back End Located in the
Application's Folder
Finding the Jet Back End with
the OpenFile API Call
Testing and Repairing Corrupted Jet
Back-End Databases
Checking and Notifying Users of a New
Version
Summary
CHAPTER 27--Startup Checking System Routines
Using ADO
Performing Startup System Checks
Setting and Retrieving System Settings
with ADO
Testing the Connections of Linked Tables
at Startup
Linking Tables Through VBA AND ADO
Testing and Repairing Corrupted Jet
Back-End Databases
Replicating Code Tables Using ADO
Summary
CHAPTER 28--Creating Maintenance Routines
Creating an Export Dialog to Export an
Application's Tables
Looking at What the Export
Utility Demonstrates
Examining the Parts That Make Up
the Export Utility
Examining the Code Creating the
Export Utility
Compacting and Repairing the Back End on
Demand
Creating a Generic Code Table Editor
Replicating Tables from Back End to
Front End for Better Performance
Creating a Replicated Table
Editor
Looking at Startup Routines for
Replicating Semi-Static Data
Summary
PART VII--Appendixes
APPENDIX A--Debugging Code in Access 2000
Setting the Correct Module Options for
Maximum Debugging Power
Taking Advantage of the Immediate Window
Printing Data to the Immediate
Window From Your Application
Displaying Data While in the
Immediate Window
Assigning Values to Variables
and Objects in the Immediate
Window
Running Code from the Immediate
Window
Stopping Program Execution
Using the Stop Statement
Using Breakpoints
Using Debug.Assert
Debugging One Step at a Time
Stepping into Code Line by Line
Stepping Through Code with Step
Over
Bailing Out of a Routine with
Step Out
Skipping Tested Code with Run to
Cursor
Viewing the Order of Procedure Calls
Watching Expressions During Program
Execution
Keeping in Touch with the Locals
Taking a Quick Look with the
Quick Watch Dialog
Adding and Viewing Expressions
in the Watches Window
Setting Break Conditions and
Editing Expressions
Controlling Code with Conditional
Compilation Commands
Summary
APPENDIX B--Getting started with Activex
controls
Working with Activex Controls
Looking at the ActiveX Control
Shipped with Access
Placing an ActiveX Control on a
Form
Setting Properties on an ActiveX
Control at Design Time
Counting the Days with the Calendar
Control
Understanding the Properties of
the Calendar ActiveX Control
Programming VBA with the
Calendar Control
Using a Standard Interface with the
Common Dialog Activex Control
Locating a File with the Common
Dialog Control
Changing the Default System
Printer by Using the Common
Dialog ActiveX Control
Summary
APPENDIX C--Access 2000 and Jet 4 Errors
APPENDIX D--Leszynski Naming Conventions for
Microsoft Access(R)
Naming Conventions: A Primer
Access Object Types
Structuring Object Names
What Is a Prefix?
What Is a Tag?
What Is a Base Name?
What Is a Qualifier?
What Is a Suffix?
Creating Database Object Base Names
Rules for Base Names
Base Name Length Limits
Compound Base Names
Field Base Names
Ordering Base Name Elements
Naming Conventions for Database Objects
Tags for Database Window Objects
Tags for Form and Report Control
Objects
Prefixes for Database Objects
Using Menu Macros
Database Object Name Examples
Creating VBA Object Base Names
Rules for VBA Object Base Names
VBA Object Base Name Lengths
Compound VBA Object Base Names
Naming Conventions for VBA Objects
Tags for Variables
Prefixes for Variables
Naming Constants
Tags and Prefixes for Procedures
Using Macros Instead of VBA
Visual Basic Object Name
Examples
Creating Your Own Tags
VBA Coding Conventions
Code Comments
Handling Errors
Standardized Abbreviations
Standardized Terminology
Additional Information About LNC
How to Get LNC
Index
VICUG-L is the Visually Impaired Computer User Group List.
To join or leave the list, send a message to
[log in to unmask] In the body of the message, simply type
"subscribe vicug-l" or "unsubscribe vicug-l" without the quotations.
VICUG-L is archived on the World Wide Web at
http://maelstrom.stjohns.edu/archives/vicug-l.html
|