Ch07 Access

Post on 14-Jan-2015

1.106 views 0 download

Tags:

description

 

Transcript of Ch07 Access

Enhancing User Interaction Through Programming

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 1

Chapter 7

“I like thinking big. If you’re going to be thinking anything, youmight as well think big.”

—Donald Trump

XPXPChapter Introduction• Visual basic for applications (VBA)

– Fully customize and automate a database– Perform more complex validity– Use functions and actions not available with macros

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 2

XPXPTools Covered in This Chapter• Assignment statement • Breakpoints• Code window • DateDiff function • DateSerial function• Debug• DoCmd statement

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 3

XPXPTools Covered in This Chapter (continued)• If statement• Immediate window• Northwind sample database• Variables• Visual Basic editor• Watches window

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 4

XPXPLevel 1 Objectives:Writing Visual Basic for Applications Code• Design create and test a subroutine in a standard

module• Design create, and test an event procedure• Analyze decisions using procedures• Design create, and test a function in a standard

module

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 5

XPXPUnderstanding 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 orderSucceeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 6

XPXPUnderstanding Visual Basic for Applications (continued)• Coding• Statement• Event-driven language• Object-oriented language

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 7

XPXPEvent-Driven Programming• Event

– State condition or occurrence that Access recognizes– Has associated event property– Appear 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 8

XPXPFrequently Used Access Events

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 9

XPXPCommon Events for Selected Controls

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 10

XPXPCoding 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 11

XPXPCoding VBA (continued)• 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 12

XPXPCoding VBA (continued)• Public procedure

– More than one object can use• Local procedure or a private procedure

– Only the form or report for which class module created can use event procedure

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 13

XPXPCreating a Subroutine in a Standard Module• Replace macros with VBA procedures

– Some tasks cannot be performed with VBA• AutoKeys• AutoExec

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 14

XPXPCreating a New Standard Module• Click Create tab

– Click Macro button arrow, and then click Module• Begin new procedure in module

– Click Insert menu– Click procedure– Type name– Select options

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 15

XPXPCreating a New Standard Module (continued)• Visual Basic Editor

– 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 16

XPXPCreating a New Standard Module (continued)• 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 17

XPXPCreating a Subroutine• Type statements in procedure between Sub and

End Sub statements• DoCmd statement

– Executes action in procedure– Access object

• Method – Action that operates on specific objects or controls

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 18

XPXPCreating a Subroutine (continued)• 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 19

XPXPCreating a Subroutine (continued)• Line label

– Statement that serves as starting point for block of statements in procedure

– Begins at start of line and ends with colon

• Underscore character at end of line– Statement continues to next line

• Run procedure– Click Run Sub/UserForm button

• Saves module– Click Save button

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 20

XPXPCreating an Event Procedure

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 21

XPXPDesigning an Event Procedure• Associate procedure with form’s On Current

event property– Triggered when form’s Current event occurs– Occurs when focus moves to record

• Add event procedure– Open property sheet for form– Click On Current text box– Click list arrow– Click [event procedure]– Click Build button to right of On Current text box

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 22

XPXPMaking Decisions Using the If Statement• Decision-making statement

– Executes group of statements based on outcome of condition

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 23

XPXPMaking Decisions Using the If Statement (continued)• If statement

– Tests condition follows one of two paths depending on outcome of condition

– General formIf condition Then

True-statement group

[ElseFalse-statement group]

End If

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 24

XPXPMaking Decisions Using the If Statement (continued)• 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 functions returns– True value when field or control null– False when not

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 25

XPXPComparison Operators and How to Use Them in Conditions

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 26

XPXPTesting an Event Procedure• Switch to form view• Navigate through records

– Make sure results correct in different situations

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 27

XPXPCreating a Function• Similar calculation requests

– Create function to perform calculation • Function

– Begins with Function statement – Ends with End Function statement

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 28

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

location• Holds only one value at a time

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 29

XPXPVariables (continued)• 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 30

XPXPCommon VBA Data Types

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 31

XPXPUsing Functions• Similar to way built-in functions used• Call a function

– Function name followed by argument(s)– Commas separate multiple arguments

• DateDiff function– Calculates number of time intervals between two

dates

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 32

XPXPTesting 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 33

XPXPTesting a Function in the Immediate Window (continued)• Immediate window

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

test in parentheses and separated by commas• DateSerial function

– Returns date value for specified year, month, and day

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 34

XPXPLevel 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 35

XPXPLevel 2 Objectives:Using Custom Functions and Verifying Data• Design create and test a custom function in an

event procedure• Use ElseIf and If statements• Verify data using event procedures• Use the Case control structure

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 36

XPXPEnhancing an Event Procedure to Use a Custom Function• Add and change statements in a procedure

– Open object that contains event procedure in Design view– Click View Code button on Design Ribbon– Add new procedure module or class module

• Click Insert on menu bar • Click Procedure, Module, or Class Module

– Edit existing statements• Scroll code window to desired statement • Make necessary changes

– Press Save button on Visual Basic toolbar

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 37

XPXPUsing 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

inclusiveSucceeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 38

XPXPComparing an ElseIf Clause to an Else…if Clause

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 39

XPXPUsing an ElseIf Statement in an if Statement (continued)• Dim statement

– Declare variables and associated data types in procedure

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 40

XPXPVerifying Data with VBA• Before Update event

– Occurs before changed data in control or record updated in database

– Use to verify entered data

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 41

XPXPDesigning the Field Validation Procedure to Verify Zip Codes• Cancel As Integer

– Defines Cancel as parameter with Integer data type– For some events access executes attached event

procedure before performing default behavior– Can cancel default behavior in event procedure or

macro– Using Cancel parameter

• Left function – Returns string containing specified number of

characters from left side of specified string

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 42

XPXPDesigning the Field Validation Procedure to Verify Zip Codes (continued)• Val function

– Returns numbers contained in specified string as numeric value

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 43

XPXPUsing 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– Use Case Else statement as last Case statement

• Include false-statement group

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 44

XPXPUsing the Case Control Structure (continued)• CancelEvent action

– Cancels event that caused procedure or macro containing action to execute

• Me keyword – Refers to current object

• Undo – Method that clears all changes made to current

record• SetFocus

– Moves focus to specified object or controlSucceeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 45

XPXPTesting the Field Validation Procedure to Verify Zip Codes• Switch to form view to test validation procedure• Using event procedure for control or form

– Before Update event for each control on form– Need two or more fields as part of validation process

• Use form’s Before Update event

– Disadvantage• All changes made to record undone

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 46

XPXPDesigning the Field Validation Procedure to Verify Phone Area Codes• Message can suggest potential error

– Must accept any phone area code entry

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 47

XPXPLevel 2 Summary• ElseIf statement • Verify data using VBA

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 48

XPXPLevel 3 Objectives: Testing and Exploring VBA• Troubleshoot problems in VBA procedures• Compile modules• Develop sources for learning VBA• Explore completed modules in the Northwind

sample database

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 49

XPXPTroubleshooting 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 50

XPXPSyntax Error Message

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 51

XPXPTroubleshooting VBA Procedures (continued)• Compilation error

– Occurs when procedures translated into form computer can understand

• Compilation– Process of translating modules from VBA to form

computer understands

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 52

XPXPTroubleshooting VBA Procedures (continued)• 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 53

XPXPUsing the Debugger to Correct Errors• Breakpoint

– Run subroutine or function up until line on which breakpoint set

– Procedure halts execution at point and displays module screen

– Good way to isolate place at which procedure stops producing anticipated result

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 54

XPXPUsing the Debugger to Correct Errors (continued)• 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 55

XPXPUsing the Debugger to Correct Errors (continued)• 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 56

XPXPIdentifying Errors Using the Watches Window• Watches 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 57

XPXPAdd Watch Dialog Box

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 58

XPXPBuilding 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

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 59

XPXPUsing Help to Learn More About Programming and VBA• Access Help contains valuable information about

VBA• Reading individual topics gives excellent

background• Search results list

– Sample code for situations

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 60

XPXPVisual Basic Help Table Of Contents

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 61

XPXPLevel 3 Summary• Errors

– Syntax – Compilation– Execution or run-time

• Debugger– Use to find and correct errors

• Help– Learn more about VBA

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 62

XPXPChapter Summary• VBA

– Programming language for Microsoft Office applications

• Decision structures– If– ElseIf– Case

• Develop subroutines• Use debugger to find errors

Succeeding in Business with Microsoft Office Access 2007: A Problem-Solving Approach 63