61
Succeeding in Business with Microsoft Access 2013 Enhancing User Interaction Through Programming Chapter 7

Ch07 cmpt110

Embed Size (px)

Citation preview

Page 1: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013

Enhancing User Interaction Through Programming

Chapter 7

Page 2: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 2

Chapter Introduction

• Visual basic for applications (VBA)– Fully customize and automate a database– Perform more complex validity checking– Use functions and actions not available with

macros

Page 3: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 3

Tools Covered in This Chapter

• Assignment statement • Breakpoints• Code window • DateDiff function • DateSerial function• Debug• DoCmd statement

Page 4: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 4

Tools Covered in This Chapter (cont’d.)

• If statement• Immediate window• Variables• Visual Basic editor• Watch window

Page 5: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 5

Level 1 Objectives:Writing Visual Basic for Applications Code

• Understand Visual Basic for Applications programming

• Design, create, and test a subroutine in a standard module

• Design, create, and test an event procedure• Design, create, and test a function in a

standard module

Page 6: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 6

Understanding Visual Basic for Applications

• Programming language for Microsoft Office programs – Including Access

• Common syntax and set of common features for all Microsoft Office programs

• Features unique for each Microsoft Office program• Use programming language– Write set of instructions to direct computer to perform

specific operations in specific order

Page 7: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 7

Understanding Visual Basic for Applications (cont’d.)

• Coding• Statement• Event-driven language• Object-oriented language

Page 8: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 8

Event-Driven Programming

• Event – State, condition, or occurrence that Access recognizes– Has associated event property– Appears in property sheet for forms reports, and

controls• Create group of statements using VBA code – Set event property value to name of that group of

statements– Event procedure

Page 9: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 9

Page 10: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 10

Table 7.2: Common events for selected controls

Page 11: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 11

Coding VBA

• Types of procedures – Function procedures• Performs operations • Returns value • Accepts input values • Can be used in expressions

– Sub procedures• Performs operations and accepts input values • Does not return value • Cannot be used in expressions

Page 12: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 12

Coding VBA (cont’d.)

• Module– Group of related procedures– Starts with Declarations section– One or more procedures

• Basic types of modules – Standard modules

• Database object stored in memory• Use from anywhere in database

– Class modules• Usually associated with particular form or report

Page 13: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 13

Coding VBA (cont’d.)

• Public procedure– More than one object can use

• Local procedure or a private procedure – Can only be used by the form or report for which

class module created

Page 14: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 14

Creating a Subroutine in a Standard Module

• Replace macros with VBA procedures– Better error handling and greater capabilities– Some tasks cannot be performed with VBA• AutoKeys• AutoExec

Page 15: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 15

Creating a New Standard Module

• Click CREATE tab– Click Module button in the Macros & Code group

• Begin new procedure in module– Click Insert menu– Click procedure– Type name– Select options

Page 16: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 16

Creating a New Standard Module (cont’d.)

• Visual Basic Editor (VBE)– Create and modify VBA code

• Visual Basic window – Program window that opens within VBE

• Code window – Window to create modify and display specific VBA

procedures– Can have as many code windows open as modules

in database

Page 17: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 17

Creating a New Standard Module (cont’d.)

• Sub statement – Ends with End Sub statement– Includes • Scope of procedure• Name of procedure • Opening and closing parenthesis

• Option compare statement – Designates technique Access uses to compare and

sort text data

Page 18: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 18

Creating a Subroutine

• Type statements in procedure between Sub and End Sub statements

• DoCmd statement– Executes action in procedure– Access object

• Method – Function or procedure that operates on specific

objects or controls

Page 19: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 19

Creating a Subroutine (cont’d.)

• Comment – Include anywhere in VBA procedure – Describe what procedure or statement does• Make it easier for programmers to identify purpose of

statements– Begin comment with • Word Rem (for “remark”) • Or single quotation mark (')

– Appear green in code window

Page 20: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 20

Creating a Subroutine (cont’d.)

• Line label– Statement that serves as starting point for block of

statements in procedure– Begins at start of line and ends with semicolon (;)

• Run procedure– Click Run Sub/UserForm button

• Save module– Click Save button

Page 21: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 21

Designing an Event Procedure in a Form’s Class Module

• Associate procedure with form’s BeforeUpdate event property– Runs for the current record– Triggered when moving to another record

• Add event procedure– Open Property Sheet for form– Switch to Event tab– Click BeforeUpdate box list arrow– Click [Event Procedure]– Click Build button in BeforeUpdate box

Page 22: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 22

Using the If Statement in Decision Making

• Decision-making statement – Executes group of statements based on outcome

of condition– In simplest statement, Access executes a group of

statements if the condition is true• Executes nothing if False

Page 23: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 23

Using the If Statement in Decision Making (cont’d.)

• If statement– Tests condition follows one of two paths

depending on outcome of condition– General form• If condition Then

– True-statement group• [Else

– False-statement group]• End If

Page 24: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 24

Using the If Statement in Decision Making (cont’d.)

• Assignment statement – Assigns value of expression to control or property– Example

• EstSalary.ForeColor = vbGreen

• ForeColor property• Color constants

– Predefined VBA names – Have values that represent system color value

• IsNull function returns– True value when field or control null– False when not

Page 25: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 25

Testing an Event Procedure

• Switch to Form view• Navigate through records – Make sure results correct in different situations

Page 26: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 26

Using a Function in a Standard Module

• Similar calculation requests– Create function to perform calculation – Change the calculation in only one place to correct

an inaccuracy or enhance the calculation

Page 27: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 27

Using Functions in VBA

• Similar to way built-in functions used– Access encounters a function name– Executes the function– Passes the argument values to the function– The function performs its operations– When finished, the calculated value replaces the

function in the expression

Page 28: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 28

Using Functions in VBA (cont’d.)

• VBA naming rules– Must begin with letter– Cannot exceed 255 characters– Include letters numbers and underscore character – Cannot use space, punctuation, or special characters– Cannot be same as keywords or reserved words– Each variable has data type

• A function begins with a Function statement and ends with an End Function statement

Page 29: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 29

Page 30: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 30

Using Variables

• Named location in computer memory • Can contain value• Use to store and retrieve data• Reference a memory location using variable

name assigned to the location• Holds only one value at a time

Page 31: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 31

Testing a Function in the Immediate Window

• When statement entered– Editor checks statement to make sure syntax

correct• Logic error – Occurs when procedure produces incorrect results

• Immediate window– Test VBA procedures without changing data in

database– Enter different values to test procedure

Page 32: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 32

Testing a Function in the Immediate Window (cont’d.)

• Immediate window– Type keyword “print” or question mark (?) – Followed by procedure name and argument values

to test in parentheses and separated by commas– Access executes the function and prints the value

returned by the function

Page 33: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 33

Modifying Functions

• A number of solutions can solve a single problem– Some solutions are long and complicated– Others are short and simple

• DateSerial function– Returns a value for a specified year, month, and day

• Access stores– A True comparison result as a zero value– A False comparison result as a value of minus one (-1)

Page 34: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 34

Level 1 Summary

• VBA– Programming language for Microsoft Office programs

• Create procedures in module• Event-driven programming– Program statement execution triggered by events

• If statement– Used to make decisions

• Function– Returns a value

Page 35: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 35

Level 2 Objectives:Using Custom Functions and Verifying Data

• Design, create, and test a custom function in an event procedure

• Verify data using event procedures• Use the case control structure

Page 36: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 36

Enhancing an Event Procedure to Use a Custom Function

• Add functionality to display a message or perform a calculation– Add a text box to display the message– Add VBA statements to BeforeUpdate event

procedure so the focus changes to a new record– Design decision-making logic in the VBA procedure

to perform the calculation– Design additional decision-making logic to make

the text box control visible or not

Page 37: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 37

Using an ElseIf Statement in an If Statement

• Date function– Returns current computer system date

• ElseIf statement – Equivalent to Else clause followed by If statement

• Choice of which If statement version used – Matter of personal preference

• Arranging order of condition testing– Order of condition testing critical– Place conditions in order from least inclusive to most

inclusive

Page 38: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 38

Figure 7.14: Comparing an ElseIf clause with an Else…If clause

Page 39: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 39

Using an ElseIf Statement in an If Statement (cont’d.)

• Dim statement– Declare variables and associated data types in

procedure

Page 40: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 40

Verifying Data with VBA

• Before Update event – Occurs before changed data in control or record

updated in database– Use to verify entered data

Page 41: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 41

Designing the Field Validation Procedure to Verify Zip Codes

• Dim ZipFirstThree As Integer– Declares the integer variable named ZipFirstThree– Verifies that ZIP codes begin in the correct range– Uses the built-in Val and Left functions

• Left function – Returns string containing specified number of characters

from left side of specified string• Val function – Returns numbers contained in specified string as

numeric value

Page 42: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 42

Using the Case Control Structure

• Control structure – Set of VBA statements work together as a unit

• Case control structure– Evaluates expression– Performs one of several alternative sets of

statements – Based on resulting value (or condition) of

evaluated expression

Page 43: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 43

Using the Case Control Structure (cont’d.)

• Use Case Else statement as last Case statement– Include false-statement group

• SetFocus – Moves focus to specified object or control

Page 44: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 44

Testing the Field Validation Procedure to Verify ZIP Codes

• Switch to Form view to test validation procedure

• Using event procedure for control or form– BeforeUpdate event for each control on form– Disadvantage• All changes made to record canceled

Page 45: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 45

Designing the Field Validation Procedure to Verify Phone Area Codes

• Must test first three digits of phone number• Message can suggest potential error– Must accept any phone area code entry

Page 46: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 46

Level 2 Summary

• ElseIf statement • Case Control structure• Verify data using VBA

Page 47: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 47

Level 3 Objectives: Testing and Exploring VBA

• Troubleshoot VBA procedure errors• Compile modules• Develop sources for learning VBA

Page 48: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 48

Troubleshooting VBA Procedures

• Syntax error – Occurs when VBA statement violates language

rules for statement such as • Misspelling • Incorrect sequence of keywords• Missing parenthesis

– Detected immediately when statement completed• Error message opens and explains error

Page 49: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 49

Page 50: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 50

Troubleshooting VBA Procedures (cont’d.)

• Compilation error – Occurs when procedures translated into form

computer cannot understand• Compilation– Process of translating modules from VBA to form

computer understands

Page 51: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 51

Troubleshooting VBA Procedures (cont’d.)

• Prevent compilation errors at run time– Use Compile command on Debug menu – Compile as last step before saving module

• Execution error or run-time error – Occurs when procedure executes and stops

because it tries to perform operation that is impossible to perform

Page 52: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 52

Using the Debugger to Correct Errors

• Breakpoint – Run subroutine or function up until line on which

breakpoint set – Procedure halts execution at breakpoint and

displays module screen– Good way to isolate place at which procedure

stops producing anticipated result

Page 53: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 53

Using the Debugger to Correct Errors (cont’d.)

• Use mouse pointer to get more information about procedure– Pointing to variable name displays ScreenTip with

value contained in variable at point that procedure halted

• Execute procedure one statement at a time– Try and identify cause of error – Click Debug on menu bar• Click Step Into

Page 54: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 54

Using the Debugger to Correct Errors (cont’d.)

• Step Into– Procedure executes next statement and stops

• Step Out– Executes current subroutine or function and then halts

• Reset button– Stops debugger so you can fix problem

• Recompile and save

• When done, click Debug and Clear all Breakpoints

Page 55: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 55

Identifying Errors Using the Watch Window

• Watch window – Shows current value of specified variable

• Add Watch dialog box– Enter variable name to watch

• “<Out of context>” in Value column – Appears for watch expression – When Access not executing procedure that

contains watch expression

Page 56: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 56

Figure 7.28: Add Watch dialog box

Page 57: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 57

Building Procedures Slowly to Isolate Problems

• Prevent problems in procedures – Build them slowly using small groups of

statements– Prove them to be correct as you go• Easier to correct small groups than long procedure

Page 58: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 58

Using Help to Learn More About Programming and VBA

• Access Help contains useful information about programming in Access and VBA– F1 Help downloaded at installation– Help button (? symbol) on the Ribbon– Click in the Search box and type the topic you

would like to search

Page 59: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 59

Figure 7.32: Access Help on Visual Basic

Page 60: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 60

Level 3 Summary

• Errors– Syntax – Compilation– Execution or run-time

• Debugger– Use to find and correct errors

• Help– Learn more about VBA

Page 61: Ch07 cmpt110

Succeeding in Business with Microsoft Access 2013 61

Chapter Summary

• Enhance a form using VBA procedures– Subroutine– Event procedure– Code control structure adds to decision making– Variables

• Custom functions• Troubleshooting errors– Breakpoints

• Access Help