27
www.etjt.com 1 Form Management with the TreeView Control in Microsoft Access 2000 Presented to the Access SIG by Trevor Tregellas June 4, 2002

Form Management with the TreeView Control in Microsoft Access 2000

  • Upload
    bazyli

  • View
    33

  • Download
    1

Embed Size (px)

DESCRIPTION

Form Management with the TreeView Control in Microsoft Access 2000. Presented to the Access SIG by Trevor Tregellas June 4, 2002. Objectives. Show you a better way to manage multiple forms and complex data in a business application – an alternative to cascaded forms. - PowerPoint PPT Presentation

Citation preview

Page 1: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 1

Form Management with the TreeView Control in Microsoft Access 2000

Presented to the

Access SIG

by Trevor Tregellas

June 4, 2002

Page 2: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 2

Objectives

Show you a better way to manage multiple forms and complex data in a business application – an alternative to cascaded forms.

Demonstrate Object Oriented Programming

Page 3: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 3

Agenda

Introduction to the control and syntax Simple Data, Drag and Drop Populate the TreeView from DB Use checkbox to open forms Manage multiple instances of various forms

with a User-defined forms collection Two ways to close a form Summary

Page 4: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 4

Introduction

Hierarchical data – Customers

• Orders– …

Alternative to form/subform TreeView Popularized by “Windows

Explorer” and Visual Studio But docs and examples are hard to find

Page 5: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 5

Add control to the form

Page 6: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 6

References

Older versions do not work as well

Page 7: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 7

Enable Checkboxes

Page 8: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 8

What are Nodes?

Tree composed of nodes Node has a key (string, not numeric) Similar to a collection, but

Node also has relationships

Page 9: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 9

Syntax

object.Add(relative, relationship, key, text, [image],[selectedimage])

Page 10: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 10

Create an object variable to refer to the control on your form

Dim xTree As TreeView

Set xTree = Me.axTreeView.Object

' add a node

xTree.Nodes.Add …

Page 11: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 11

Demo: Drag and drop

Based on KB article Manipulates table data directly

Page 12: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 12

Populate Tree Level 1

' Fill Level 1 using CustomerID as the Key property. Only a key is needed

Set rs = db.OpenRecordset("Customers") Do Until rs.EOF

xTree.Nodes.Add , , rs!CustomerID, rs!CompanyName

rs.MoveNext

Loop

Page 13: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 13

Populate Tree Level 2. Set rs = db.OpenRecordset("Orders") Do Until rs.EOF ' Link to Level 1 by referencing the CustomerID key and set ' the node as a child node of Level 1. Use "t" and the ' StrConv() function in the new Key property for Level 2, ' because OrderID is a numeric field.

strOrderKey = StrConv("t" & rs!OrderID, vbLowerCase) xTree.Nodes.Add CStr(rs!CustomerID), tvwChild,

strOrderKey, rs!OrderID & " " & rs!OrderDate

rs.MoveNext Loop

Page 14: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 14

Possible errors when adding nodes

Duplicate key Relative not found

Page 15: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 15

Use Checkbox to Open forms

Private Sub axTreeView_NodeCheck(ByVal node As Object)

'this fires for both check and uncheck If node.Checked Then Call OpenAForm(node) Else Call RemoveWhenUnchecked(node) End If End Sub

Page 16: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 16

GetNodeLevel

Public Function GetNodeLevel(ByRef Node As Object) As Integer

'find out how deep the node is by walking up the tree until get to root node

If Node.Parent Is Nothing Then GetNodeLevel = 1: Exit Function

If Node.Parent.Parent Is Nothing Then GetNodeLevel = 2: Exit Function

If Node.Parent.Parent.Parent Is Nothing Then GetNodeLevel = 3: Exit Function

End Function

Page 17: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 17

Open Which type of form?

Private Sub OpenAForm(ByVal node As Object) Select Case GetNodeLevel(Node)

Case 1

Call Me.NewCustomerForm(Node)

Case 2

Call Me.NewOrderForm(Node)

End Select

Page 18: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 18

User-defined collection of forms

Needed because as soon as the reference to a new form instance goes out of scope, Access destroys the form (prove it!)

Private colForms As New Collection See Access 2000 Developers Handbook

Vol 1 pp547-553 Displaying Multiple Instances of Forms

Page 19: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 19

Open a new Customer form…

Public Sub NewCustomerForm(CurNode As node)

'Form_ syntax only works IF form has a module!

Dim frm As Form_Customers

Set frm = New Form_Customers

Page 20: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 20

form…

' The Key value must be a string

colForms.Add Item:=frm,

Key:= CStr (CurNode.Key)

'later use this key to remove from collection

' Pass along the filter information.

frm.Filter = "[CustomerID] = '" & CurNode.Key & "'"

Page 21: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 21

form…

store key for later in form Tag property use to link back to node

frm.Tag = CurNode.Key

Page 22: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 22

Two ways to close a form

1)Close Form from the TreeView by unchecking

2)Close the form directly by user action

Be orthogonal

Page 23: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 23

1)Close Form from the TreeView

Private Sub RemoveWhenUnchecked( CurNode As node)

colForms.Remove CStr(CurNode.Key)

End Sub

Page 24: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 24

2)Close the form directly

Public Sub RemoveInstance(frm As Form)' Each form calls this code when it closes itself, ' instead of being closed by unchecking a node. 'uncheck the node 'key was stored in tag when frm was created Me.axTreeView.Object.Nodes(frm.Tag).Checked

= vbFalse 'and remove form reference from collectioncolForms.Remove CStr(frm.Tag)

Page 25: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 25

In the form to be closed

Private Sub Form_Unload(Cancel As Integer)

Call Form__frmListCustomers. RemoveInstance(Me)

End Sub

Page 26: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 26

Summary

Key is a ? Non-numeric unique value

Keys are stored in TreeView Key also stored in form tag property Form references are in User-defined

collection Customer and Order Forms don’t know

about the TreeView or User-defined collection, they only call a public method of the TreeView form.

Page 27: Form Management with the TreeView Control in Microsoft Access 2000

www.etjt.com 27

More Information

www.etjt.com Download Northwind tjt.mdb