Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to VBA Programming. Many Types of Statements VBA statements Access object model’s methods and properties Data Access Object’s methods and.

Similar presentations


Presentation on theme: "Introduction to VBA Programming. Many Types of Statements VBA statements Access object model’s methods and properties Data Access Object’s methods and."— Presentation transcript:

1 Introduction to VBA Programming

2 Many Types of Statements VBA statements Access object model’s methods and properties Data Access Object’s methods and properties ActiveX Data Object

3 Example: To Open a Database DAO command: –Set db = OpenDatabase("c:\salesdb.mdb") Access Object Model’s Application Object methods: –CurrentDB method: Set db = CurrentDB() –OpenCurrentDatabase method: Set db = OpenCurrentDatabase("c:\salesb.mdb")

4 VB Modules Standard modules: –Standard modules are separated database objects containing one or many procedures. They most often contains utilities functions that are useful in many different circumstances. –Create a standard module: In the database window, click Modules and New. Form/Report modules: Containing procedures belong to a form/report –Create a form module: In the Form Design view, click the Code button

5 Procedures Sub procedures –Private procedures: Can be called only by procedures in the same module. –Public: Can be called by procedures in any module. –Public is the default declaration Functions –returns a value –Used in an expression –Public/Private

6 To Invoke a Sub Procedure Use Call statement: –Arguments must be surrounded by parentheses. –Call myProcedure(arg1, arg2, …) If call is not used, arguments are not surrounded by parentheses. –MyProcedure arg1, arg2, …

7 Variable Declarations Option Explicit Dim variableName as DataType Variable naming rules: –The first character must be a letter. –Use only letters, digits, and underscore. –Cannot contain spaces or periods. –No VB keywords Naming conventions: –Descriptive –Consistent lower and upper case characters. Ex. Camel casing: lowerUpper, employeeName

8 VB Data Types Boolean (True/False): Byte: Holds a whole number from 0 to 255. Date: date and time, 8 bytes. Double: real, 8 bytes Single: real, 4 bytes Integer: 2 bytes Long: 4 bytes integer Currency String Object: Holds a reference of an object Variant

9 Variable Declaration Examples Dim empName as String Declare multiple variables with one Dim: –Dim empName, dependentName, empSSN as String Dim X As Integer, Y As Single Initiatialization –Dim interestRate as Double

10 Object Reference: Set Declare object variales: –Dim varName As Database –Set db = openCurrentDatabase("c:\salesb.mdb") Dereferencing objects: –Set varName = Nothing

11 Variable Scope Procedural-level scope: declared in a procedure with the Dim statement Module-level: declared in a module’s declaration section (outside any procedure) with either Dim or Private keyword. Public level scope: a module variable declared with the Public statement.

12 Constants User-defined constants: –Const NationalDay as date = #7/4/2005# Built-In constants: –VBA, Access, DAO, ADO

13 Data Conversion Implicit conversion: When you assign a value of one data type to a variable of another data type, VB attempts to convert the value being assigned to the data type of the variable. Explicit conversion: –VB.Net Functions: CStr, Ccur, CDbl, Cint, CLng, CSng, Cdate,Val, etc.

14 Date Data Type Date literals: A date literal may contain the date, the time, or both, and must be enclosed in # symbols: –#1/30/2003#, #1/31/2003 2:10:00 PM# –#6:30 PM#, #18:30:00#

15 Some Date Functions Now: Current date and time Time DateDiff Demo: –Days to Christmas Dim myDate1, mydate2 As Date myDate1 = Now mydate2 = #12/25/2005# MsgBox (DateDiff("d", myDate1, mydate2))

16 Testing VBA Code with Immediate Window View/Immediate Window

17 Arithmetic and String Operators +, -, *, /. \, ^ String Concatenation: &, + No compound operator: K=k+1, –not k+=1

18 IF Statement IF condition THEN statements [ELSEIF condition-n THEN [elseifstatements] [ELSE [elsestatements]]] End If

19 Select Case Structure SELECT CASE testexpression [CASE expressionlist-n [Statements] [CASE ELSE [elsestatements] END SELECT

20 Select Case Example SELECT CASE temperature CASE <40 Text1.text=“cold” CASE < 60 Text1.text=“cool” CASE 60 to 80 Text1.text=“warm” CASE ELSE Text1.text=“Hot” End Select

21 Loop FOR index – start TO end [STEP step] [statements] [EXIT FOR] NEXT index DO [{WHILE| UNTIL} condition] [statements] [EXIT DO] LOOP

22 Do While/Do Until Private Sub Command1_Click() Dim counter As Integer counter = 0 Do While counter <= 5 Debug.write(counter) counter = counter + 1 Loop Text1.Text = counter End Sub Private Sub Command2_Click() Dim counter As Integer counter = 0 Do Until counter > 5 Debug.write(counter) counter = counter + 1 Loop Text1.Text = counter End Sub

23 With … End With With Text4.BackColor = vbYellow.FontSize = 20.Text = "testtest" End With Convenient shorthand to execute a series of statements on a single object. Within the block, the reference to the object is implicit and need not be written.

24 Procedures. Sub procedure: Sub SubName(Arguments) … End Sub –To call a sub procedure SUB1 CALL SUB1(Argument1, Argument2, …) Or SUB1 Argument1, Argument2, …

25 Function Private Function tax(salary) As Double tax = salary * 0.1 End Function

26 Call by Reference Call by Value ByRef –The address of the item is passed. Any changes made to the passing variable are made to the variable itself. ByVal –Default –Only the variable’s value is passed.

27 ByRef, ByVal example Private Sub Command2_Click() Dim myStr As String myStr = Text0 Call ChangeTextRef(myStr) Text0 = myStr End Sub Private Sub ChangeTextRef(ByRef strInput As String) strInput = "New Text" End Sub

28 MsgBox MsgBox(prompt, other arguments) MsgBox can return a value representing the user’s choice of buttons displayed by the box. –Use Help to find constants used with the MsgBox

29 InputBox InputBox(Prompt [,Title] [, Default] [, Xpos] [, Ypos]) Xpos is the distance from the left edge of the screen, and Ypos is the distance from the top of the screen. Both are measured in twips (1/1440 th of an inch). Note: The arguments are positional and optional. Enter a comma to skip an argument. cityName = InputBox("Please enter city name:“,, “SF”) If cityName = vbNullString Then MsgBox.Show ("customer click cancel") Else Text1 = cityName End If Note: vbNullString is a VB keyword representing null value.

30 Modeless form: Other forms can receive input focus while this form remains active. Modal form: No other form can receive focus while this form remains active. –DoCmd.OpenForm stDocName,,, stLinkCriteria,, acDialog Note: Macro/OpenForm/Window Mode

31 VBA Functions

32 Monthly Payment Form Text6 = -Pmt(Text2 / 12, Text4 * 12, Text0)

33 Conditional Required Field Private Sub Form_BeforeUpdate(Cancel As Integer) If Year(Now) - Year(Birthdate) < 18 Then If IsNull(Text14) Then MsgBox ("You must enter guardian name! ") Cancel = True Text14.SetFocus End If End Sub

34 Domain Aggregate Functions Aggregate functions provide statistical information about sets of records (a domain). For example, you can use an aggregate function to count the number of records in a particular set of records or to determine the average of values in a particular field. The two types of aggregate functions, domain aggregate functions and SQL aggregate functions, provide similar functionality but are used in different situations. The SQL aggregate functions can be included in the syntax of an SQL statement but can't be called directly from Visual Basic. Conversely, the domain aggregate functions can be called directly from Visual Basic code. They can also be included in an SQL statement, but an SQL aggregate function is generally more efficient.

35

36 Examples From Student form, lookup Fname: –=DLookUp("[fname]","faculty","fid='" & [Forms]![student]![fid] & "'") From Faculty form, count number of students advised by the faculty: –=DCount("[FID]","Student","FID='" & [Forms]![Faculty]![Fid] & "'")

37 Function Example Function NumberOfStudents(FID) NumberOfStudents = DCount("sid", "student", "fid='" & Forms!faculty!FID & "'") End Function

38

39 AccessObject Object An AccessObject object refers to a particular Microsoft Access object within the following collections. AllDataAccessPages AllDatabaseDiagrams AllForms AllFunctions AllMacros AllModules AllQueries AllReports AllStoredProcedures AllTables AllViewsAllModulesAllQueriesAllReports AllStoredProceduresAllTablesAllViews

40 Collection Structure Methods: –Count – Item(index), 0-based index –Add –Remove

41 For Each … Next Dim formName As String Dim obj As AccessObject For Each obj In Application.CurrentProject.AllForms formName = formName + obj.Name + vbCrLf Next MsgBox (formName) MsgBox (" Number of forms: " + CStr(Application.CurrentProject.AllForms.Count))

42 AccessObject Properties CurrentView Property DateCreated Property DateModified Property FullName Property IsLoaded Property Name Property Properties Property Type PropertyCurrentView Property DateCreated Property DateModified Property FullName Property IsLoaded Property Name Property Properties Property Type Property

43 Is the Faculty form open? If so, in which view?

44 Dim intView As Integer If CurrentProject.AllForms("faculty").IsLoaded Then intView = CurrentProject.AllForms("faculty").CurrentView If intView = 0 Then MsgBox ("Design view") ElseIf intView = 1 Then MsgBox ("Form view") Else MsgBox ("Datasheet view") End If Else MsgBox ("Not open") End If


Download ppt "Introduction to VBA Programming. Many Types of Statements VBA statements Access object model’s methods and properties Data Access Object’s methods and."

Similar presentations


Ads by Google