| Acknowledgments |
|
xxv | |
| Introduction |
|
xxvii | |
| Part I Access VBA Primer |
|
1 | (238) |
|
Chapter 1 Getting Started with Access VBA |
|
|
3 | (24) |
|
Understanding VBA Modules and Procedure Types |
|
|
4 | (3) |
|
Writing Procedures in a Standard Module |
|
|
7 | (3) |
|
Executing Your Procedures |
|
|
10 | (2) |
|
Understanding Class Modules |
|
|
12 | (2) |
|
Events, Event Properties, and Event Procedures |
|
|
14 | (7) |
|
|
|
15 | (1) |
|
Walking Through an Event Procedure |
|
|
15 | (6) |
|
Compiling Your Procedures |
|
|
21 | (1) |
|
Placing a Database in a Trusted Location |
|
|
22 | (3) |
|
|
|
25 | (2) |
|
Chapter 2 Getting to Know Visual Basic Editor (VBE) |
|
|
27 | (24) |
|
Understanding the Project Explorer Window |
|
|
28 | (2) |
|
Understanding the Properties Window |
|
|
30 | (2) |
|
Understanding the Code Window |
|
|
32 | (2) |
|
|
|
34 | (1) |
|
Assigning a Name to the VBA Project |
|
|
35 | (1) |
|
|
|
36 | (1) |
|
Syntax and Programming Assistance |
|
|
36 | (6) |
|
|
|
36 | (2) |
|
|
|
38 | (1) |
|
|
|
39 | (1) |
|
|
|
40 | (1) |
|
|
|
40 | (1) |
|
|
|
41 | (1) |
|
Comment Block/Uncomment Block |
|
|
42 | (1) |
|
|
|
42 | (3) |
|
Using the VBA Object Library |
|
|
45 | (1) |
|
Using the Immediate Window |
|
|
46 | (3) |
|
|
|
49 | (2) |
|
Chapter 3 Access VBA Fundamentals |
|
|
51 | (32) |
|
Introduction to Data Types |
|
|
51 | (3) |
|
Understanding and Using Variables |
|
|
54 | (26) |
|
|
|
54 | (4) |
|
Specifying the Data Type of a Variable |
|
|
58 | (3) |
|
Using Type Declaration Characters |
|
|
60 | (1) |
|
Assigning Values to Variables |
|
|
61 | (2) |
|
Forcing Declaration of Variables |
|
|
63 | (2) |
|
Understanding the Scope of Variables |
|
|
65 | (5) |
|
Procedure-Level (Local) Variables |
|
|
66 | (1) |
|
|
|
66 | (3) |
|
|
|
69 | (1) |
|
Understanding the Lifetime of Variables |
|
|
70 | (1) |
|
Using Temporary Variables |
|
|
70 | (4) |
|
Creating a Temporary Variable with a TempVars Collection Object |
|
|
71 | (1) |
|
Retrieving Names and Values of TempVar Objects |
|
|
72 | (1) |
|
Using Temporary Global Variables in Expressions |
|
|
73 | (1) |
|
Removing a Temporary Variable from a TempVars Collection Object |
|
|
73 | (1) |
|
|
|
74 | (1) |
|
|
|
75 | (3) |
|
Disposing of Object Variables |
|
|
78 | (1) |
|
Finding a Variable Definition |
|
|
78 | (1) |
|
Determining the Data Type of a Variable |
|
|
78 | (2) |
|
Using Constants in VBA Procedures |
|
|
80 | (2) |
|
|
|
81 | (1) |
|
|
|
82 | (1) |
|
Chapter 4 Access VBA Built-In and Custom Functions |
|
|
83 | (26) |
|
Writing Function Procedures |
|
|
83 | (1) |
|
Various Methods of Running Function Procedures |
|
|
84 | (2) |
|
Specifying the Data Type for a Function's Result |
|
|
86 | (2) |
|
Passing Arguments to by Reference and by Value |
|
|
88 | (1) |
|
|
|
89 | (2) |
|
Using the IsMissing Function |
|
|
91 | (1) |
|
Using VBA Built-In Functions for User Interaction |
|
|
91 | (14) |
|
Using the MsgBox Function |
|
|
92 | (10) |
|
Returning Values from the MsgBox Function |
|
|
101 | (1) |
|
Using the InputBox Function |
|
|
102 | (3) |
|
|
|
105 | (2) |
|
|
|
107 | (2) |
|
Chapter 5 Adding Decisions to Your Access VBA Programs |
|
|
109 | (22) |
|
Relational and Logical Operators |
|
|
109 | (1) |
|
|
|
110 | (2) |
|
Multiline If...Then Statement |
|
|
112 | (2) |
|
Decisions Based on More than One Condition |
|
|
114 | (2) |
|
If... Then ...Else Statement |
|
|
116 | (2) |
|
If... Then ...ElseIf Statement |
|
|
118 | (1) |
|
Nested If...Then Statements |
|
|
119 | (4) |
|
|
|
123 | (6) |
|
Using is with the Case Clause |
|
|
125 | (1) |
|
Specifying a Range of Values in a Case Clause |
|
|
126 | (2) |
|
Specifying Multiple Expressions in a Case Clause |
|
|
128 | (1) |
|
|
|
129 | (2) |
|
Chapter 6 Adding Repeating Actions to Your Access VBA Programs |
|
|
131 | (14) |
|
Using the Do... While Statement |
|
|
132 | (3) |
|
Another Approach to the Do... While Statement |
|
|
134 | (1) |
|
Using the Do...Until Statement |
|
|
135 | (2) |
|
Another Approach to the Do...Until Statement |
|
|
136 | (1) |
|
Using the For...Next Statement |
|
|
137 | (3) |
|
Using the For Each...Next Statement |
|
|
140 | (1) |
|
|
|
141 | (2) |
|
|
|
143 | (1) |
|
|
|
144 | (1) |
|
Chapter 7 Keeping Track of Multiple Values Using Arrays |
|
|
145 | (28) |
|
|
|
146 | (6) |
|
|
|
148 | (1) |
|
Array Upper and Lower Bounds |
|
|
149 | (1) |
|
Initializing and Filling an Array |
|
|
150 | (11) |
|
Filling an Array Using Individual Assignment Statements |
|
|
150 | (1) |
|
Filling an Array Using the Array Function |
|
|
150 | (1) |
|
Filling an Array Using the For...Next Loop |
|
|
151 | (1) |
|
Using a One-Dimensional Array |
|
|
152 | (2) |
|
Arrays and Looping Statements |
|
|
154 | (4) |
|
Using a Two-Dimensional Array |
|
|
158 | (1) |
|
Static and Dynamic Arrays |
|
|
159 | (2) |
|
|
|
161 | (5) |
|
|
|
162 | (1) |
|
|
|
162 | (1) |
|
|
|
163 | (1) |
|
The LBound and UBound Functions |
|
|
164 | (2) |
|
|
|
166 | (2) |
|
|
|
168 | (1) |
|
Passing Arrays to Function Procedures |
|
|
169 | (1) |
|
|
|
170 | (2) |
|
|
|
172 | (1) |
|
Chapter 8 Keeping Track of Multiple Values Using Object Collections |
|
|
173 | (30) |
|
Working with Collections of Objects |
|
|
174 | (4) |
|
Declaring a Custom Collection |
|
|
176 | (1) |
|
Adding Objects to a Custom Collection |
|
|
176 | (2) |
|
Removing Objects from a Custom Collection |
|
|
178 | (1) |
|
Creating Custom Objects in Class Modules |
|
|
178 | (10) |
|
|
|
179 | (1) |
|
|
|
180 | (1) |
|
Defining the Properties for the Class |
|
|
181 | (4) |
|
Creating the Property Get Procedures |
|
|
182 | (1) |
|
Creating the Property Let Procedures |
|
|
183 | (2) |
|
Creating the Class Methods |
|
|
185 | (1) |
|
Creating an Instance of a Class |
|
|
186 | (1) |
|
Event Procedures in the Class Module |
|
|
187 | (1) |
|
Creating the User Interface |
|
|
188 | (10) |
|
Running the Custom Application |
|
|
198 | (1) |
|
Watching the Execution of Your VBA Procedures |
|
|
199 | (3) |
|
|
|
202 | (1) |
|
Chapter 9 Getting to Know Built-In Tools for Testing and Debugging |
|
|
203 | (36) |
|
|
|
205 | (1) |
|
|
|
206 | (6) |
|
|
|
211 | (1) |
|
Using the Immediate Window in Break Mode |
|
|
212 | (2) |
|
|
|
214 | (1) |
|
Using the Assert Statement |
|
|
214 | (2) |
|
Using the Add Watch Window |
|
|
216 | (4) |
|
Removing Watch Expressions |
|
|
220 | (1) |
|
|
|
220 | (1) |
|
|
|
221 | (2) |
|
Using the Call Stack Dialog Box |
|
|
223 | (1) |
|
Stepping Through VBA Procedures |
|
|
224 | (3) |
|
Stepping Over a Procedure |
|
|
225 | (1) |
|
Stepping Out of a Procedure |
|
|
226 | (1) |
|
Running a Procedure to Cursor |
|
|
227 | (1) |
|
Setting the Next Statement |
|
|
227 | (1) |
|
Showing the Next Statement |
|
|
227 | (1) |
|
Navigating with Bookmarks |
|
|
227 | (1) |
|
Stopping and Resetting VBA Procedures |
|
|
228 | (1) |
|
|
|
229 | (9) |
|
|
|
230 | (4) |
|
|
|
234 | (2) |
|
Setting Error-Trapping Options |
|
|
236 | (2) |
|
|
|
238 | (1) |
| Part II Access VBA Programming With DAO And ADO |
|
239 | (368) |
|
Chapter 10 Data Access Technologies in Microsoft Access |
|
|
241 | (62) |
|
Understanding Database Engines: Jet/ACE |
|
|
242 | (1) |
|
Understanding Access Versions and File Formats |
|
|
243 | (3) |
|
Understanding Library References |
|
|
246 | (2) |
|
Overview of Object Libraries in Microsoft Access |
|
|
248 | (4) |
|
The Visual Basic for Applications Object Library (VBA) |
|
|
248 | (1) |
|
The Microsoft Access 16.0 Object Library |
|
|
249 | (1) |
|
The Microsoft Office 16.0 Access Database Engine Object Library |
|
|
249 | (1) |
|
The Microsoft DAO 3.6 Object Library |
|
|
249 | (1) |
|
The Microsoft ActiveX Data Objects 6.1 Library (ADO) |
|
|
250 | (2) |
|
Creating a Reference to the ADO Library |
|
|
252 | (2) |
|
Understanding Connection Strings |
|
|
254 | (1) |
|
Using ODBC Connection Strings |
|
|
255 | (7) |
|
Creating and Using ODBC DSN Connections |
|
|
255 | (6) |
|
Creating and Using DSN-Less ODBC Connections |
|
|
261 | (1) |
|
Using OLE DB Connection Strings |
|
|
262 | (1) |
|
Connection String via a Data Link File |
|
|
263 | (4) |
|
Opening Microsoft Access Databases |
|
|
267 | (15) |
|
Opening a Microsoft Jet Database in Read/Write Mode with DAO |
|
|
268 | (2) |
|
Opening a Microsoft Jet Database in Read/Write Mode with ADO |
|
|
270 | (3) |
|
Opening a Microsoft Access Database in Read-Only Mode with DAO |
|
|
273 | (1) |
|
Opening a Microsoft Jet Database in Read-Only Mode with ADO |
|
|
273 | (1) |
|
Opening a Microsoft Jet Database Secured with a Password |
|
|
274 | (5) |
|
Opening a Microsoft Jet Database with User-Level Security |
|
|
279 | (3) |
|
Connecting to the Current Access Database |
|
|
282 | (1) |
|
Opening Other Databases, Spreadsheets, and Text Files from Access |
|
|
283 | (8) |
|
Connecting to an SQL Server Database |
|
|
283 | (1) |
|
Opening a Microsoft Excel Workbook |
|
|
284 | (5) |
|
Opening a Text File Using ADO |
|
|
289 | (2) |
|
Creating a New Access Database |
|
|
291 | (2) |
|
Creating a Database with DAO |
|
|
291 | (1) |
|
Creating a Database with ADO |
|
|
292 | (1) |
|
|
|
293 | (3) |
|
Copying a Database with DAO |
|
|
294 | (1) |
|
Copying a Database with FileSystemObject |
|
|
295 | (1) |
|
|
|
296 | (3) |
|
|
|
299 | (3) |
|
|
|
302 | (1) |
|
Chapter 11 Creating and Accessing Database Tables and Fields |
|
|
303 | (46) |
|
Creating a Microsoft Access Table and Setting Field Properties (DAO Method) |
|
|
304 | (6) |
|
Creating a Microsoft Access Table and Setting Field Properties (ADO Method) |
|
|
310 | (3) |
|
|
|
313 | (1) |
|
Deleting a Database Table |
|
|
314 | (2) |
|
Adding New Fields to an Existing Table |
|
|
316 | (2) |
|
Creating Calculated Fields |
|
|
318 | (2) |
|
Creating Multivalue Lookup Fields with DAO |
|
|
320 | (3) |
|
Creating Attachment Fields with DAO |
|
|
323 | (2) |
|
Creating Append Only Memo Fields with DAO |
|
|
325 | (7) |
|
Creating Rich Text Memo Fields with DAO |
|
|
332 | (2) |
|
Removing a Field from a Table |
|
|
334 | (2) |
|
Retrieving Table Properties |
|
|
336 | (2) |
|
Retrieving Field Properties |
|
|
338 | (1) |
|
Linking a Microsoft Access Table |
|
|
339 | (1) |
|
|
|
340 | (1) |
|
Linking a Microsoft Excel Worksheet |
|
|
340 | (3) |
|
|
|
343 | (1) |
|
Listing Tables and Fields |
|
|
344 | (2) |
|
|
|
346 | (1) |
|
|
|
346 | (2) |
|
|
|
348 | (1) |
|
Chapter 12 Setting Up Primary Keys, Indexes, and Table Relationships |
|
|
349 | (16) |
|
Creating a Primary Key Index |
|
|
349 | (1) |
|
Creating Indexes Using ADO |
|
|
350 | (2) |
|
Creating Indexes Using DAO |
|
|
352 | (2) |
|
Creating a Single-Field Index Using ADO |
|
|
354 | (2) |
|
Adding a Multiple-Field Index to a Table Using DAO |
|
|
356 | (2) |
|
Listing Indexes in a Table |
|
|
358 | (1) |
|
|
|
359 | (2) |
|
Creating Table Relationships Using ADO |
|
|
361 | (3) |
|
|
|
364 | (1) |
|
Chapter 13 Finding and Reading Records |
|
|
365 | (48) |
|
Introduction to DAO Recordsets |
|
|
365 | (13) |
|
Opening Various Types of Recordsets |
|
|
367 | (2) |
|
Opening a Snapshot and Counting Records |
|
|
369 | (2) |
|
Retrieving the Contents of a Specific Field in a Table |
|
|
371 | (1) |
|
Moving between Records in a Table |
|
|
372 | (1) |
|
Finding Records in a Table-Type Recordset |
|
|
373 | (2) |
|
Finding Records in Dynasets or Snapshots |
|
|
375 | (2) |
|
Finding the nth Record in a Snapshot |
|
|
377 | (1) |
|
Introduction to ADO Recordsets |
|
|
378 | (34) |
|
|
|
380 | (1) |
|
|
|
381 | (2) |
|
|
|
383 | (1) |
|
|
|
384 | (4) |
|
|
|
388 | (9) |
|
Opening a Recordset Based on a Table or Query |
|
|
389 | (5) |
|
Opening a Recordset Based on an SQL Statement |
|
|
394 | (1) |
|
Opening a Recordset Based on Criteria |
|
|
395 | (1) |
|
Opening a Recordset Directly |
|
|
396 | (1) |
|
Moving Around in a Recordset |
|
|
397 | (1) |
|
Finding the Record Position |
|
|
398 | (1) |
|
Reading Data from a Field |
|
|
399 | (1) |
|
Returning a Recordset as a String |
|
|
400 | (2) |
|
Finding Records Using the Find Method |
|
|
402 | (2) |
|
Finding Records Using the Seek Method |
|
|
404 | (2) |
|
Finding a Record Based on Multiple Conditions |
|
|
406 | (1) |
|
|
|
407 | (3) |
|
Using Bookmarks to Filter a Recordset |
|
|
410 | (1) |
|
Using the GetRows Method to Fill the Recordset |
|
|
411 | (1) |
|
|
|
412 | (1) |
|
Chapter 14 Working with Records |
|
|
413 | (40) |
|
Adding a New Record with DAO |
|
|
413 | (2) |
|
Adding a New Record with ADO |
|
|
415 | (2) |
|
|
|
417 | (3) |
|
Adding Values to Multivalue Lookup Fields |
|
|
420 | (3) |
|
Modifying a Record with DAO |
|
|
423 | (3) |
|
Modifying a Record with ADO |
|
|
426 | (1) |
|
Editing Multiple Records with ADO |
|
|
427 | (2) |
|
Deleting a Record with DAO |
|
|
429 | (2) |
|
Deleting a Record with ADO |
|
|
431 | (1) |
|
|
|
432 | (1) |
|
Copying Records to an Excel Worksheet |
|
|
433 | (5) |
|
Copying Records to a Word Document |
|
|
438 | (4) |
|
Copying Records to a Text File |
|
|
442 | (2) |
|
Filtering Records Using the SQL WHERE Clause |
|
|
444 | (2) |
|
Filtering Records Using the Filter Property |
|
|
446 | (3) |
|
|
|
449 | (2) |
|
|
|
451 | (2) |
|
Chapter 15 Creating and Running Queries with DAO/ADO |
|
|
453 | (48) |
|
Creating a Select Query Manually |
|
|
453 | (5) |
|
Creating a Select Query with DAO |
|
|
458 | (2) |
|
Creating a Select Query with ADO |
|
|
460 | (3) |
|
Executing an Existing Select Query with ADO |
|
|
463 | (3) |
|
Modifying an Existing Query with ADO |
|
|
466 | (2) |
|
Creating and Running a Parameter Query with DAO |
|
|
468 | (3) |
|
Creating and Running a Parameter Query with ADO |
|
|
471 | (3) |
|
Creating and Running a Make-Table Query with DAO |
|
|
474 | (2) |
|
Creating and Running an Update Query with DAO |
|
|
476 | (2) |
|
Executing an Update Query with ADO |
|
|
478 | (2) |
|
Running an Append Query with DAO/ADO |
|
|
480 | (3) |
|
Running a Delete Query with DAO |
|
|
483 | (3) |
|
Creating and Running a Pass-Through Query with DAO |
|
|
486 | (2) |
|
Creating and Executing a Pass-Through Query with ADO |
|
|
488 | (5) |
|
Performing Other Operations with Queries |
|
|
493 | (6) |
|
Retrieving Query Properties with DAO |
|
|
493 | (1) |
|
Listing All Queries in a Database with DAO/ADO |
|
|
494 | (1) |
|
Deleting a Query from a Database with DAO/ADO |
|
|
495 | (2) |
|
Determining If a Query Is Updatable |
|
|
497 | (2) |
|
|
|
499 | (2) |
|
Chapter 16 Using Advanced ADO/DAO Features |
|
|
501 | (60) |
|
|
|
501 | (4) |
|
|
|
505 | (2) |
|
Saving a Recordset to Disk |
|
|
507 | (16) |
|
|
|
523 | (6) |
|
Introduction to Data Shaping |
|
|
529 | (24) |
|
Writing a Simple SHAPE Statement |
|
|
530 | (2) |
|
Working with Data Shaping |
|
|
532 | (5) |
|
Writing a Complex SHAPE Statement |
|
|
537 | (16) |
|
Shaped Recordsets with Multiple Children |
|
|
537 | (4) |
|
Shaped Recordsets with Grandchildren |
|
|
541 | (12) |
|
|
|
553 | (7) |
|
Creating a Transaction with ADO |
|
|
554 | (2) |
|
Creating a Transaction with DAO |
|
|
556 | (4) |
|
|
|
560 | (1) |
|
Chapter 17 Implementing Database Security |
|
|
561 | (46) |
|
Two Types of Security in Microsoft Access |
|
|
562 | (1) |
|
Share-Level Security (in Access .accdb and .mdb File Formats) |
|
|
562 | (1) |
|
|
|
562 | (1) |
|
Understanding Workgroup Information Files |
|
|
563 | (9) |
|
Creating and Joining Workgroup Information Files |
|
|
566 | (6) |
|
Opening a Secured MDB Database |
|
|
572 | (3) |
|
Creating and Managing Group and User Accounts |
|
|
575 | (9) |
|
Deleting User and Group Accounts |
|
|
579 | (1) |
|
Listing User and Group Accounts |
|
|
580 | (2) |
|
|
|
582 | (2) |
|
Setting and Retrieving User and Group Permissions |
|
|
584 | (20) |
|
Determining the Object Owner |
|
|
584 | (3) |
|
Setting User Permissions for an Object |
|
|
587 | (3) |
|
Setting User Permissions for a Database |
|
|
590 | (2) |
|
Setting User Permissions for Containers |
|
|
592 | (3) |
|
Checking Permissions for Objects |
|
|
595 | (3) |
|
Setting a Database Password Using the CompactDatabase Method |
|
|
598 | (1) |
|
Setting a Database Password Using the NewPassword Method |
|
|
599 | (2) |
|
|
|
601 | (3) |
|
Encrypting a Secured MDB Database |
|
|
604 | (2) |
|
|
|
606 | (1) |
| Part III Programming With The Jet Data Definition Language |
|
607 | (84) |
|
Chapter 18 Creating, Modifying, and Deleting Tables and Fields |
|
|
609 | (24) |
|
|
|
612 | (5) |
|
|
|
617 | (1) |
|
Modifying Tables with DDL |
|
|
618 | (13) |
|
Adding New Fields to a Table |
|
|
619 | (1) |
|
Changing the Data Type of a Table Column |
|
|
620 | (1) |
|
Changing the Size of a Text Column |
|
|
621 | (1) |
|
Deleting a Column from a Table |
|
|
622 | (1) |
|
Adding a Primary Key to a Table |
|
|
623 | (1) |
|
Adding a Multiple-Field Index to a Table |
|
|
624 | (1) |
|
Deleting an Indexed Column |
|
|
625 | (1) |
|
|
|
626 | (1) |
|
Setting a Default Value for a Table Column |
|
|
627 | (2) |
|
Changing the Seed and Increment Values of AutoNumber Columns |
|
|
629 | (2) |
|
|
|
631 | (2) |
|
Chapter 19 Enforcing Data Integrity and Relationships between Tables |
|
|
633 | (14) |
|
|
|
634 | (6) |
|
Establishing Relationships between Tables |
|
|
640 | (3) |
|
Using the Data Definition Query Window |
|
|
643 | (3) |
|
|
|
646 | (1) |
|
Chapter 20 Defining Indexes and Primary Keys |
|
|
647 | (12) |
|
Creating Tables with Indexes |
|
|
647 | (2) |
|
Adding an Index to an Existing Table |
|
|
649 | (2) |
|
Creating a Table with a Primary Key |
|
|
651 | (1) |
|
Creating Indexes with Restrictions |
|
|
652 | (5) |
|
|
|
657 | (1) |
|
|
|
658 | (1) |
|
Chapter 21 Database Security |
|
|
659 | (16) |
|
Setting the Database Password |
|
|
659 | (2) |
|
Removing the Database Password |
|
|
661 | (1) |
|
|
|
662 | (2) |
|
|
|
664 | (1) |
|
|
|
665 | (1) |
|
|
|
666 | (1) |
|
Removing a User from a Group |
|
|
667 | (1) |
|
|
|
668 | (1) |
|
Granting Permissions for an Object |
|
|
669 | (2) |
|
Revoking Security Permissions |
|
|
671 | (2) |
|
|
|
673 | (1) |
|
|
|
673 | (2) |
|
Chapter 22 Views and Stored Procedures |
|
|
675 | (16) |
|
|
|
675 | (4) |
|
|
|
679 | (1) |
|
|
|
680 | (1) |
|
Creating a Stored Procedure |
|
|
681 | (1) |
|
Creating a Parameterized Stored Procedure |
|
|
682 | (3) |
|
Examining the Contents of a Stored Procedure |
|
|
685 | (1) |
|
Executing a Parameterized Stored Procedure |
|
|
686 | (2) |
|
Deleting a Stored Procedure |
|
|
688 | (1) |
|
Changing Database Records with Stored Procedures |
|
|
689 | (1) |
|
|
|
689 | (2) |
| Part IV Enhancing The User Experience |
|
691 | (190) |
|
Chapter 23 Enhancing Access Forms |
|
|
693 | (14) |
|
|
|
694 | (2) |
|
Grouping Controls Using Layouts |
|
|
696 | (2) |
|
Rich Text Support in Forms |
|
|
698 | (1) |
|
Using Built-In Formatting Tools |
|
|
699 | (1) |
|
Using Images in Access Forms |
|
|
699 | (2) |
|
Using the Attachments Control |
|
|
701 | (5) |
|
|
|
706 | (1) |
|
Chapter 24 Using Form Events |
|
|
707 | (38) |
|
|
|
708 | (12) |
|
|
|
709 | (2) |
|
|
|
711 | (1) |
|
|
|
712 | (1) |
|
|
|
712 | (1) |
|
|
|
713 | (3) |
|
|
|
716 | (1) |
|
|
|
716 | (1) |
|
|
|
717 | (1) |
|
|
|
718 | (1) |
|
|
|
719 | (1) |
|
|
|
720 | (2) |
|
|
|
720 | (1) |
|
|
|
721 | (1) |
|
|
|
722 | (1) |
|
|
|
722 | (1) |
|
|
|
722 | (4) |
|
|
|
722 | (1) |
|
|
|
723 | (1) |
|
|
|
723 | (2) |
|
|
|
725 | (1) |
|
|
|
725 | (1) |
|
|
|
725 | (1) |
|
|
|
726 | (4) |
|
|
|
726 | (2) |
|
|
|
728 | (1) |
|
|
|
729 | (1) |
|
|
|
730 | (2) |
|
|
|
731 | (1) |
|
|
|
732 | (3) |
|
|
|
732 | (1) |
|
|
|
733 | (2) |
|
|
|
735 | (2) |
|
|
|
736 | (1) |
|
Events Recognized by Form Sections |
|
|
737 | (1) |
|
DblClick (Form Section Event) |
|
|
737 | (1) |
|
Understanding and Using the OpenArgs Property |
|
|
738 | (6) |
|
|
|
744 | (1) |
|
Chapter 25 Events Recognized by Controls |
|
|
745 | (18) |
|
|
|
746 | (2) |
|
|
|
748 | (1) |
|
|
|
749 | (2) |
|
|
|
751 | (1) |
|
|
|
752 | (6) |
|
|
|
758 | (3) |
|
|
|
761 | (2) |
|
Chapter 26 Enhancing Access Reports and Using Report Events |
|
|
763 | (24) |
|
|
|
764 | (1) |
|
|
|
764 | (8) |
|
|
|
764 | (3) |
|
|
|
767 | (1) |
|
|
|
767 | (1) |
|
|
|
768 | (1) |
|
|
|
768 | (1) |
|
|
|
769 | (1) |
|
|
|
770 | (2) |
|
Events Recognized by Report Sections |
|
|
772 | (7) |
|
Format (Report Section Event) |
|
|
772 | (3) |
|
Print (Report Section Event) |
|
|
775 | (4) |
|
Retreat (Report Section Event) |
|
|
779 | (1) |
|
|
|
779 | (2) |
|
Sorting and Grouping Data |
|
|
781 | (1) |
|
Saving Reports in .pdf or .xps File Format |
|
|
782 | (1) |
|
Using the OpenArgs Property of the Report Object |
|
|
783 | (3) |
|
|
|
786 | (1) |
|
Chapter 27 Advanced Event Programming |
|
|
787 | (22) |
|
Sinking Events in Standalone Class Modules |
|
|
788 | (10) |
|
Writing Event Procedure Code in Two Places |
|
|
798 | (1) |
|
Responding to Control Events in a Class |
|
|
799 | (4) |
|
Declaring and Raising Events |
|
|
803 | (5) |
|
|
|
808 | (1) |
|
Chapter 28 Programming the User Interface |
|
|
809 | (72) |
|
The Initial Microsoft Access 2019 Window |
|
|
809 | (1) |
|
Customizing the Navigation Pane |
|
|
810 | (4) |
|
Using VBA to Customize the Navigation Pane |
|
|
814 | (6) |
|
Locking the Navigation Pane |
|
|
814 | (1) |
|
Controlling the Display of Database Objects |
|
|
815 | (2) |
|
Setting Displayed Categories |
|
|
817 | (1) |
|
Saving and Loading the Configuration of the Navigation Pane |
|
|
817 | (3) |
|
A Quick Overview of the Access 2019 Ribbon Interface |
|
|
820 | (3) |
|
Ribbon Programming with XML, VBA, and Macros |
|
|
823 | (22) |
|
Creating the Ribbon Customization XML Markup |
|
|
824 | (4) |
|
Loading Ribbon Customizations from an External XML Document |
|
|
828 | (7) |
|
Embedding Ribbon XML Markup in a VBA Procedure |
|
|
835 | (1) |
|
Storing Ribbon Customization XML Markup in a Table |
|
|
835 | (6) |
|
Assigning Ribbon Customizations to Forms and Reports |
|
|
841 | (4) |
|
Using Images in Ribbon Customizations |
|
|
845 | (11) |
|
Requesting Images via the loadImage Callback |
|
|
845 | (5) |
|
Requesting Images via the getImage Callback |
|
|
850 | (5) |
|
Understanding Attributes and Callbacks |
|
|
855 | (1) |
|
Using Various Controls in Ribbon Customizations |
|
|
856 | (14) |
|
|
|
857 | (1) |
|
Creating Split Buttons, Menus, and Submenus |
|
|
858 | (1) |
|
|
|
859 | (2) |
|
|
|
861 | (1) |
|
Creating Combo Boxes and Drop Downs |
|
|
862 | (2) |
|
Creating a Dialog Box Launcher |
|
|
864 | (1) |
|
|
|
865 | (1) |
|
Repurposing a Built-in Control |
|
|
866 | (1) |
|
|
|
866 | (4) |
|
The CommandBars Object and the Ribbon |
|
|
870 | (2) |
|
Tab Activation and Group Auto-Scaling |
|
|
872 | (1) |
|
Customizing the Backstage View |
|
|
873 | (5) |
|
Customizing the Quick Access Toolbar (QAT) |
|
|
878 | (1) |
|
|
|
879 | (2) |
| Part V VBA And MACROS |
|
881 | (58) |
|
Chapter 29 Macros and Templates |
|
|
883 | (56) |
|
|
|
884 | (1) |
|
Access 2019 Macro Security |
|
|
884 | (3) |
|
|
|
887 | (5) |
|
Understanding Macro Actions, Arguments, and Program Flow |
|
|
889 | (3) |
|
Creating and Using Macros in Access 2019 |
|
|
892 | (33) |
|
Creating Standalone Macros |
|
|
892 | (8) |
|
Running Standalone Macros |
|
|
898 | (2) |
|
Creating and Using Submacros |
|
|
900 | (2) |
|
Creating and Using Embedded Macros |
|
|
902 | (7) |
|
|
|
903 | (6) |
|
|
|
909 | (21) |
|
|
|
910 | (8) |
|
Creating a Named Data Macro |
|
|
918 | (2) |
|
Editing an Existing Named Macro |
|
|
920 | (1) |
|
Calling a Named Macro from Another Macro |
|
|
921 | (1) |
|
Using ReturnVars in Data Macros |
|
|
921 | (2) |
|
Tracing Data Macro Execution Errors |
|
|
923 | (2) |
|
|
|
925 | (3) |
|
Using Temporary Variables in Macros |
|
|
928 | (2) |
|
Converting Macros to VBA Code |
|
|
930 | (3) |
|
Converting a Standalone Macro to VBA |
|
|
930 | (2) |
|
Converting Embedded Macros to VBA |
|
|
932 | (1) |
|
|
|
933 | (5) |
|
Creating a Custom Blank Database Template |
|
|
933 | (1) |
|
Understanding the .accdt File Format |
|
|
934 | (4) |
|
|
|
938 | (1) |
| Part VI Taking Your VBA Programming Skills To The Web |
|
939 | (144) |
|
Chapter 30 Access and Active Server Pages |
|
|
941 | (64) |
|
Introduction to Classic ASP |
|
|
941 | (3) |
|
|
|
944 | (5) |
|
|
|
949 | (1) |
|
Installing Internet Information Services (IIS) |
|
|
950 | (4) |
|
Creating a Virtual Directory |
|
|
954 | (3) |
|
Setting ASP Configuration Properties |
|
|
957 | (1) |
|
Turning off Friendly HTTP Error Messages |
|
|
958 | (2) |
|
Running Your First ASP Script |
|
|
960 | (2) |
|
|
|
962 | (15) |
|
Breaking up a Recordset When Retrieving Records |
|
|
964 | (9) |
|
Retrieving Records with the GetRows Method |
|
|
973 | (4) |
|
Database Lookup Using Drop-Down Lists |
|
|
977 | (4) |
|
Database Lookup Using a Multiple-Selection Listbox |
|
|
981 | (6) |
|
|
|
987 | (5) |
|
|
|
992 | (4) |
|
|
|
996 | (5) |
|
|
|
1001 | (3) |
|
|
|
1004 | (1) |
|
Chapter 31 XML Features in Access 2019 |
|
|
1005 | (78) |
|
|
|
1005 | (3) |
|
What Is a Well-Formed XML Document? |
|
|
1007 | (1) |
|
XML Support in Access 2019 |
|
|
1008 | (1) |
|
|
|
1008 | (18) |
|
Understanding the XML Data File |
|
|
1011 | (3) |
|
Understanding the XML Schema File |
|
|
1014 | (2) |
|
Understanding the XSL Transformation Files |
|
|
1016 | (4) |
|
Viewing XML Documents Formatted with Stylesheets |
|
|
1020 | (2) |
|
Advanced XML Export Options |
|
|
1022 | (17) |
|
|
|
1022 | (1) |
|
|
|
1023 | (1) |
|
Presentation Export Options |
|
|
1024 | (2) |
|
Applying XSLT Transforms to Exported Data |
|
|
1026 | (6) |
|
|
|
1032 | (7) |
|
Programmatically Exporting to and Importing from XML |
|
|
1039 | (19) |
|
Exporting to XML Using the ExportXML Method |
|
|
1039 | (9) |
|
Transforming XML Data with the TransformXML Method |
|
|
1048 | (9) |
|
Importing to XML Using the ImportXML Method |
|
|
1057 | (1) |
|
Manipulating XML Documents Programmatically |
|
|
1058 | (9) |
|
Loading and Retrieving the Contents of an XML File |
|
|
1059 | (2) |
|
Working with XML Document Nodes |
|
|
1061 | (2) |
|
Retrieving Information from Element Nodes |
|
|
1063 | (2) |
|
Retrieving Specific Information from Element Nodes |
|
|
1065 | (1) |
|
Retrieving the First Matching Node |
|
|
1066 | (1) |
|
Using ActiveX Data Objects with XML |
|
|
1067 | (13) |
|
Saving an ADO Recordset as XML to Disk |
|
|
1067 | (2) |
|
Attribute-Centric and Element-Centric XML |
|
|
1069 | (1) |
|
Changing the Type of an XML File |
|
|
1070 | (2) |
|
Applying an XSL Stylesheet |
|
|
1072 | (2) |
|
Transforming Attribute-Centric XML Data into an HTML Table |
|
|
1074 | (4) |
|
Loading an XML Document in Excel |
|
|
1078 | (2) |
|
|
|
1080 | (3) |
| Index |
|
1083 | |