Introduction |
|
xxvii | |
Part I: Access Web Application Design and Development |
|
|
Chapter 1 Introduction To Access Web Apps And Architecture |
|
|
3 | (22) |
|
|
4 | (8) |
|
|
5 | (1) |
|
|
6 | (1) |
|
|
6 | (1) |
|
Import/Export/Link to Jet 3.x and dBASE Files |
|
|
7 | (1) |
|
PivotTables and PivotCharts |
|
|
8 | (1) |
|
|
8 | (1) |
|
|
8 | (1) |
|
Source Code Control Extension |
|
|
9 | (1) |
|
|
10 | (1) |
|
|
10 | (1) |
|
Creating Access Web Databases |
|
|
11 | (1) |
|
|
12 | (1) |
|
|
12 | (1) |
|
Audit and Control Management Server |
|
|
13 | (1) |
|
|
13 | (2) |
|
|
15 | (1) |
|
How Is an App Distributed? |
|
|
16 | (2) |
|
App Marketplace for Publicly Available Solutions |
|
|
16 | (1) |
|
App Catalogs for Internal-Facing Solutions |
|
|
16 | (2) |
|
How Are Security and Trust Managed in Apps? |
|
|
18 | (6) |
|
Setting Up a SharePoint Site for Your Apps |
|
|
20 | (1) |
|
Setting Up an Office 365 Trial Account |
|
|
21 | (3) |
|
Solving Business Problems |
|
|
24 | (1) |
|
The Maid To Order Work Schedule Database |
|
|
24 | (1) |
|
|
24 | (1) |
|
Chapter 2 Designing Tables |
|
|
25 | (20) |
|
|
26 | (1) |
|
Keeping Your Log Ins Straight |
|
|
27 | (2) |
|
|
29 | (9) |
|
Creating Tables Using Nouns |
|
|
29 | (2) |
|
Creating Tables from Imported Data Sources |
|
|
31 | (5) |
|
Creating Tables the Traditional Way |
|
|
36 | (1) |
|
Tables and Their Related Views |
|
|
37 | (1) |
|
Data Type Changes from Previous Versions |
|
|
38 | (2) |
|
|
38 | (1) |
|
|
39 | (1) |
|
|
39 | (1) |
|
|
40 | (1) |
|
|
40 | (1) |
|
|
40 | (1) |
|
|
40 | (1) |
|
|
41 | (1) |
|
|
42 | (3) |
|
Chapter 3 Understanding The New User Interface |
|
|
45 | (28) |
|
|
46 | (14) |
|
|
46 | (5) |
|
The New Approach to Layout |
|
|
51 | (4) |
|
|
55 | (5) |
|
|
60 | (5) |
|
SharePoint and Office 365 |
|
|
65 | (5) |
|
Creating a Web App via Team Site |
|
|
67 | (2) |
|
|
69 | (1) |
|
Sharing Web Apps with Others |
|
|
69 | (1) |
|
|
70 | (3) |
|
Chapter 4 Designing Views |
|
|
73 | (42) |
|
|
74 | (19) |
|
|
75 | (1) |
|
|
76 | (2) |
|
|
78 | (1) |
|
|
79 | (5) |
|
|
84 | (4) |
|
Manipulating Control Placement |
|
|
88 | (4) |
|
|
92 | (1) |
|
Action Bar and Action Bar Buttons |
|
|
93 | (3) |
|
Action Bar Button Properties |
|
|
93 | (1) |
|
|
94 | (1) |
|
|
95 | (1) |
|
|
96 | (18) |
|
|
96 | (7) |
|
|
103 | (5) |
|
|
108 | (1) |
|
Client Controls with No Counterparts |
|
|
109 | (1) |
|
|
110 | (4) |
|
|
114 | (1) |
|
Chapter 5 Creating Queries And Writing Expressions |
|
|
115 | (34) |
|
|
116 | (3) |
|
|
116 | (1) |
|
|
117 | (2) |
|
Changes in the Query Designer |
|
|
119 | (9) |
|
Creating, Editing, Saving, and Previewing Queries |
|
|
119 | (6) |
|
|
125 | (1) |
|
|
125 | (1) |
|
Aggregates, Unique Values, and Top Values |
|
|
126 | (1) |
|
|
127 | (1) |
|
Functions and Expressions |
|
|
128 | (20) |
|
|
129 | (1) |
|
|
129 | (2) |
|
|
131 | (1) |
|
Data Type Inspection and Conversion |
|
|
132 | (3) |
|
|
135 | (4) |
|
|
139 | (2) |
|
|
141 | (4) |
|
|
145 | (1) |
|
|
146 | (2) |
|
|
148 | (1) |
|
Chapter 6 Creating Macros |
|
|
149 | (28) |
|
Why We Need a New Web-Compatible Macro Language |
|
|
150 | (2) |
|
|
150 | (1) |
|
Access's Traditional Role as Tool of First Choice |
|
|
151 | (1) |
|
|
152 | (5) |
|
|
153 | (1) |
|
Expressions and Expression Builder |
|
|
153 | (1) |
|
|
154 | (1) |
|
|
155 | (1) |
|
|
155 | (1) |
|
Interacting with the Macro Designer |
|
|
155 | (2) |
|
Different Types of Macros |
|
|
157 | (3) |
|
|
157 | (1) |
|
|
157 | (1) |
|
|
158 | (1) |
|
|
159 | (1) |
|
|
160 | (1) |
|
Creating and Editing Data Macros |
|
|
160 | (6) |
|
Creating a Standalone Data Macro |
|
|
162 | (1) |
|
|
162 | (1) |
|
Using the Add New Action Drop-Down |
|
|
162 | (1) |
|
Using Program Flow Actions |
|
|
162 | (3) |
|
How to Use the LookupRecord Data Block |
|
|
165 | (1) |
|
How to Use ForEachRecord and EditRecord |
|
|
165 | (1) |
|
|
166 | (1) |
|
Creating and Editing UI Macros |
|
|
166 | (6) |
|
|
168 | (1) |
|
How to Use ChangeView and OpenPopup |
|
|
169 | (2) |
|
How to Use RequeryRecords |
|
|
171 | (1) |
|
How to Use Data Entry Operations |
|
|
171 | (1) |
|
Using UI and Data Macros Together |
|
|
172 | (3) |
|
How to Create and Use Parameters |
|
|
172 | (2) |
|
|
174 | (1) |
|
|
175 | (2) |
|
Chapter 7 Designing The Table Structure |
|
|
177 | (26) |
|
|
178 | (15) |
|
Short and Long Text Fields |
|
|
178 | (4) |
|
|
182 | (1) |
|
|
183 | (4) |
|
|
187 | (1) |
|
|
188 | (1) |
|
|
188 | (1) |
|
|
189 | (1) |
|
|
190 | (1) |
|
|
191 | (2) |
|
Validation Rules and Text |
|
|
193 | (4) |
|
|
193 | (2) |
|
|
195 | (1) |
|
Editing Validation Rules with Existing Data |
|
|
195 | (1) |
|
Validation Rules Design Consideration |
|
|
196 | (1) |
|
Leveraging Calculated Fields |
|
|
197 | (3) |
|
Creating Concatenated Fields |
|
|
197 | (2) |
|
|
199 | (1) |
|
|
199 | (1) |
|
|
200 | (1) |
|
|
200 | (3) |
|
Chapter 8 Designing The User Interface |
|
|
203 | (62) |
|
Naming Convention for Web Apps |
|
|
204 | (1) |
|
Planning the User Interface |
|
|
205 | (1) |
|
Reusing Create, Read, Update, and Delete Views |
|
|
205 | (1) |
|
Effective Navigation Design |
|
|
206 | (10) |
|
Traditional Navigation Patterns |
|
|
206 | (5) |
|
|
211 | (4) |
|
Tile-Bound View and Popup Views |
|
|
215 | (1) |
|
|
216 | (3) |
|
|
219 | (18) |
|
List View: Searching on a field |
|
|
219 | (4) |
|
Summary View: Searching on an Aggregated Value |
|
|
223 | (7) |
|
Datasheet: Filtering Cumulatively |
|
|
230 | (7) |
|
|
237 | (26) |
|
|
237 | (4) |
|
|
241 | (5) |
|
|
246 | (2) |
|
|
248 | (1) |
|
Creating Data Macro to Clear Selections |
|
|
249 | (1) |
|
|
249 | (3) |
|
|
252 | (5) |
|
Building Data Macros to Populate Filter Tables |
|
|
257 | (3) |
|
Building a Popup View to Display the Filter Results |
|
|
260 | (1) |
|
Building a Click Event Handler |
|
|
261 | (2) |
|
|
263 | (2) |
|
Chapter 9 Solving Business Problems With Macros |
|
|
265 | (40) |
|
Macro Design Considerations |
|
|
266 | (4) |
|
|
266 | (2) |
|
|
268 | (1) |
|
|
269 | (1) |
|
Using Freestanding Macros |
|
|
270 | (26) |
|
|
270 | (8) |
|
Generating a Set of Records with Variable Parameters |
|
|
278 | (12) |
|
Generating Records in Different Tables |
|
|
290 | (4) |
|
Updating and/or Deleting Several Records |
|
|
294 | (2) |
|
|
296 | (7) |
|
Performance Considerations |
|
|
297 | (1) |
|
Preventing Deletions of Completed Records |
|
|
298 | (2) |
|
Acquiring Default Values from Other Tables |
|
|
300 | (1) |
|
Maintaining a History of Change |
|
|
301 | (2) |
|
|
303 | (2) |
|
Chapter 10 Extending Web Apps |
|
|
305 | (92) |
|
|
306 | (5) |
|
|
307 | (3) |
|
Introduction to Web Services |
|
|
310 | (1) |
|
Linking a Web App for Additional Functionality |
|
|
311 | (11) |
|
Locating and Adding the Locations Mapper App |
|
|
311 | (4) |
|
Configuring and Using the Locations Mapper App |
|
|
315 | (7) |
|
Inlining a Web App in Access Web App |
|
|
322 | (11) |
|
|
333 | (8) |
|
|
333 | (3) |
|
Authoring a Custom Page in SharePoint Designer |
|
|
336 | (2) |
|
Allowing Framing of Custom Page |
|
|
338 | (1) |
|
|
339 | (1) |
|
Showing a PayPal Button on an Access Web App |
|
|
340 | (1) |
|
|
341 | (21) |
|
Configuration for a Site Mailbox |
|
|
342 | (1) |
|
Setting Up the Site Mailbox |
|
|
343 | (4) |
|
Team Site Mailbox as a Shared Tool |
|
|
347 | (15) |
|
Using APIs with a Web Browser Control |
|
|
362 | (9) |
|
Building a Page to Handle JavaScript Code |
|
|
363 | (3) |
|
|
366 | (2) |
|
Adding the Charting Page to Access Web App |
|
|
368 | (3) |
|
Consuming ZIP-Lookup Web Services in the Client |
|
|
371 | (23) |
|
Creating a User Account for the Web Service |
|
|
372 | (1) |
|
Library References and Code |
|
|
373 | (21) |
|
|
394 | (3) |
|
Chapter 11 Connecting To Your Web App |
|
|
397 | (52) |
|
|
398 | (1) |
|
|
399 | (2) |
|
Enable/Disable Connection |
|
|
400 | (1) |
|
Getting Connection Details |
|
|
401 | (1) |
|
|
401 | (1) |
|
|
401 | (11) |
|
Adding VBA Code to Relink |
|
|
406 | (3) |
|
|
409 | (3) |
|
|
412 | (18) |
|
Creating an ODC Connection |
|
|
412 | (3) |
|
|
415 | (1) |
|
Creating an Excel PivotChart |
|
|
416 | (4) |
|
Creating an Excel PivotTable |
|
|
420 | (1) |
|
External Data Considerations |
|
|
421 | (4) |
|
Sharing Excel Workbooks on the Web |
|
|
425 | (5) |
|
|
430 | (16) |
|
Connecting to a Web App Database |
|
|
430 | (3) |
|
Adding a Linked Server on the Web App Database |
|
|
433 | (4) |
|
Querying Data in a Linked Server |
|
|
437 | (5) |
|
Using Linked Server Programmability Objects |
|
|
442 | (4) |
|
|
446 | (3) |
|
Chapter 12 Web Apps In The Enterprise |
|
|
449 | (32) |
|
Creating a Document Library |
|
|
450 | (13) |
|
Creating a Custom Content Type |
|
|
452 | (3) |
|
|
455 | (1) |
|
|
456 | (2) |
|
Customizing a Library Ribbon |
|
|
458 | (2) |
|
|
460 | (3) |
|
Customizing an App Package |
|
|
463 | (4) |
|
Linking to a Template File |
|
|
467 | (1) |
|
Synchronizing Data Between App Databases |
|
|
468 | (11) |
|
Local Differential Backup |
|
|
468 | (11) |
|
|
479 | (1) |
|
|
479 | (2) |
|
Chapter 13 Implementing Security Models For The Access Web App |
|
|
481 | (58) |
|
|
482 | (3) |
|
|
482 | (1) |
|
|
482 | (1) |
|
Securing Web Apps on SharePoint |
|
|
483 | (1) |
|
Security in the Application Layer |
|
|
484 | (1) |
|
|
485 | (9) |
|
Team Sites and Personal Storage |
|
|
486 | (1) |
|
|
486 | (4) |
|
|
490 | (1) |
|
|
491 | (1) |
|
|
492 | (2) |
|
Securing Web Apps in the Web Browser |
|
|
494 | (15) |
|
Using Subsites to Restrict Users to Specific Apps |
|
|
498 | (1) |
|
|
499 | (10) |
|
Traditional Methods for Security in Client Solutions |
|
|
509 | (4) |
|
Web App Linked File Security |
|
|
513 | (24) |
|
DSN-Less Linking and Relinking |
|
|
514 | (1) |
|
Password Storage/Non-Storage |
|
|
515 | (17) |
|
|
532 | (5) |
|
|
537 | (2) |
|
Chapter 14 Deploying Access Web Apps |
|
|
539 | (26) |
|
Deploying Access Web Apps |
|
|
540 | (22) |
|
Web Apps and App Catalogs |
|
|
540 | (1) |
|
On-Premises SharePoint Server |
|
|
541 | (10) |
|
|
551 | (11) |
|
|
562 | (3) |
Part II: Client-Server Design and Development |
|
|
Chapter 15 Managing Data Sources |
|
|
565 | (20) |
|
|
566 | (2) |
|
First Normal Form: Eliminate Repeating Groups |
|
|
566 | (1) |
|
Second Normal Form: Eliminate Duplicate Data |
|
|
567 | (1) |
|
Third Normal Form: Eliminate Fields That Do Not Depend on the Key |
|
|
567 | (1) |
|
Other Normalization Forms |
|
|
568 | (1) |
|
|
568 | (2) |
|
|
568 | (1) |
|
First Normal Form: Eliminate Repeating Groups |
|
|
568 | (1) |
|
Second Normal Form: Eliminate Duplicate Data |
|
|
569 | (1) |
|
Third Normal Form: Eliminate Fields That Do Not Depend on the Key |
|
|
569 | (1) |
|
|
570 | (2) |
|
Overview of Access Files and the Database Engine |
|
|
572 | (1) |
|
|
572 | (7) |
|
|
573 | (3) |
|
|
576 | (3) |
|
Querying External Data Effectively |
|
|
579 | (3) |
|
Linked Object Performance and Query Optimization |
|
|
579 | (1) |
|
Passthrough Query and T-SQL |
|
|
580 | (1) |
|
Comparing Access SQL and T-SQL |
|
|
581 | (1) |
|
|
582 | (3) |
|
Chapter 16 Programming Using VBA, APIs, And Macros |
|
|
585 | (58) |
|
|
586 | (11) |
|
|
586 | (1) |
|
|
586 | (5) |
|
|
591 | (5) |
|
|
596 | (1) |
|
|
597 | (11) |
|
Enhancing Query Techniques |
|
|
597 | (7) |
|
|
604 | (2) |
|
Creating a Query On the Fly Using VBA |
|
|
606 | (2) |
|
|
608 | (16) |
|
Obtaining Documentation for API Functions |
|
|
609 | (1) |
|
|
609 | (1) |
|
VBA User-Defined Types and C-Style Structs |
|
|
610 | (1) |
|
|
611 | (1) |
|
|
611 | (2) |
|
Putting It All Together: Create and Manage an Explorer Window |
|
|
613 | (4) |
|
|
617 | (1) |
|
Declaring the Enumeration Function |
|
|
618 | (1) |
|
Declaring the Callback Function |
|
|
619 | (1) |
|
Determining the Class Name of a Window |
|
|
619 | (1) |
|
Preparing the EnumChildProc for Two Different Uses |
|
|
620 | (1) |
|
Creating the Main Procedure |
|
|
620 | (1) |
|
Retrieving Window Information |
|
|
621 | (1) |
|
|
622 | (2) |
|
Introduction to Data Macros |
|
|
624 | (4) |
|
|
625 | (1) |
|
Differences in Client and Web Data Macros |
|
|
625 | (1) |
|
Use Cases for Data Macros |
|
|
626 | (2) |
|
|
628 | (13) |
|
Maintaining Calculated Values to Support Indexing |
|
|
628 | (3) |
|
Maintaining Quantity On Hand to Support Business Logic |
|
|
631 | (9) |
|
|
640 | (1) |
|
|
641 | (2) |
|
Chapter 17 Creating Intuitive Forms |
|
|
643 | (44) |
|
|
644 | (3) |
|
|
645 | (1) |
|
Guiding the User Through the Process |
|
|
645 | (1) |
|
Showing and Verifying Data in a Timely Manner |
|
|
646 | (1) |
|
User-Friendly Messages and Tips |
|
|
646 | (1) |
|
Leveraging Built-in Functionality |
|
|
647 | (6) |
|
|
647 | (1) |
|
|
648 | (1) |
|
|
649 | (1) |
|
|
650 | (2) |
|
Pop-up, Modal, or Dialog Forms |
|
|
652 | (1) |
|
|
653 | (10) |
|
|
653 | (1) |
|
|
654 | (2) |
|
|
656 | (1) |
|
Datasheet View Search Forms |
|
|
657 | (3) |
|
Multiple Instances of a Form |
|
|
660 | (3) |
|
|
663 | (5) |
|
|
664 | (1) |
|
|
665 | (3) |
|
|
668 | (17) |
|
|
668 | (1) |
|
Setting Up the Report and Its Criteria Fields |
|
|
669 | (4) |
|
Selecting the Criteria and Running the Report |
|
|
673 | (12) |
|
|
685 | (2) |
|
Chapter 18 Creating Powerful Reports |
|
|
687 | (30) |
|
|
688 | (1) |
|
|
689 | (11) |
|
|
689 | (4) |
|
Creating and Customizing Reports |
|
|
693 | (3) |
|
|
696 | (2) |
|
|
698 | (2) |
|
|
700 | (9) |
|
|
700 | (1) |
|
Reports with Simple Criteria |
|
|
701 | (1) |
|
Reports with Simple Groupings |
|
|
702 | (1) |
|
|
702 | (4) |
|
Calling the Criteria Form from the Report |
|
|
706 | (1) |
|
Reports that Compare Values |
|
|
706 | (3) |
|
|
709 | (3) |
|
|
709 | (2) |
|
Confidentiality Statement |
|
|
711 | (1) |
|
Page Numbers and Report Date |
|
|
711 | (1) |
|
|
711 | (1) |
|
|
711 | (1) |
|
Filling Out PDF Forms Using Access |
|
|
712 | (3) |
|
|
712 | (1) |
|
|
713 | (2) |
|
|
715 | (2) |
|
Chapter 19 Automating And Integrating With Other Programs |
|
|
717 | (46) |
|
Overview of Interoperability |
|
|
717 | (2) |
|
Getting Started with Automation |
|
|
719 | (5) |
|
Declare and Instantiate Variables |
|
|
721 | (1) |
|
Early Binding Versus Late Binding |
|
|
722 | (2) |
|
Automating Office Programs |
|
|
724 | (1) |
|
Microsoft Excel Integration |
|
|
725 | (12) |
|
Integration with Excel Using Ribbons, Menus, and Macros |
|
|
725 | (3) |
|
Referencing the Excel Object Library |
|
|
728 | (1) |
|
Working with the Excel Object Model |
|
|
728 | (1) |
|
Using Automation to Send Data to Excel |
|
|
728 | (3) |
|
Creating an Excel PivotTable from Access |
|
|
731 | (3) |
|
Generating an Excel Chart from Access |
|
|
734 | (3) |
|
|
737 | (7) |
|
Integration with Word Using Ribbons, Menus, and Macros |
|
|
737 | (1) |
|
Referencing the Word Object Library |
|
|
737 | (1) |
|
Working with the Word Object Model |
|
|
738 | (1) |
|
Sending Access Data to Word with Automation |
|
|
738 | (3) |
|
Using Access Automation to Create Word Tables |
|
|
741 | (3) |
|
|
744 | (5) |
|
Setting a Reference to the PowerPoint Object Library |
|
|
745 | (1) |
|
Working with the PowerPoint Object Model |
|
|
745 | (1) |
|
Creating a Presentation from an Access Table |
|
|
745 | (4) |
|
|
749 | (10) |
|
Sending Outlook Mail Using a Macro Action |
|
|
750 | (1) |
|
Referencing the Outlook Object Model |
|
|
751 | (1) |
|
Sending Mail Using VBA and Automation |
|
|
751 | (2) |
|
Reading and Moving Mail Using VBA and Automation |
|
|
753 | (2) |
|
Creating Other Outlook Items Using VBA and Automation |
|
|
755 | (4) |
|
Integrating Access with Other Applications |
|
|
759 | (3) |
|
|
762 | (1) |
|
Chapter 20 Securing, Deploying, And Maintaining Access Applications |
|
|
763 | (32) |
|
User Level Security and Audit Trail |
|
|
764 | (8) |
|
|
765 | (1) |
|
|
766 | (1) |
|
Network Identity with a User Table in Access Database |
|
|
766 | (1) |
|
Different Front-end Files for Different User Roles |
|
|
767 | (1) |
|
|
767 | (1) |
|
Converting from .mdb with User Level Security to .accdb |
|
|
768 | (1) |
|
|
769 | (1) |
|
|
770 | (1) |
|
|
771 | (1) |
|
|
772 | (1) |
|
Deployment Considerations |
|
|
772 | (6) |
|
Deploying Front-end Files |
|
|
773 | (2) |
|
Auto-Updating the Front End |
|
|
775 | (1) |
|
Deploying Back-end Changes |
|
|
776 | (2) |
|
Maintaining Different Environments |
|
|
778 | (1) |
|
Development, Test, and Production Environments |
|
|
778 | (8) |
|
Promoting Files from Test to Production |
|
|
784 | (1) |
|
|
785 | (1) |
|
|
786 | (5) |
|
|
786 | (3) |
|
|
789 | (2) |
|
How to Kick Users Out of the Application |
|
|
791 | (1) |
|
|
791 | (3) |
|
Intellectual Property Rights |
|
|
791 | (1) |
|
|
792 | (2) |
|
|
794 | (1) |
|
Chapter 21 Maximizing SQL Server Capabilities |
|
|
795 | (28) |
|
|
795 | (12) |
|
|
796 | (6) |
|
|
802 | (3) |
|
Things to Watch for When Upsizing |
|
|
805 | (2) |
|
Working with SQL Server as the Back End |
|
|
807 | (13) |
|
SQL Server Management Studio |
|
|
807 | (7) |
|
|
814 | (3) |
|
|
817 | (3) |
|
|
820 | (3) |
Index |
|
823 | |