[예제/완성파일 포함] MS Access TreeView 만들기

이번 글에서는 MS Access TreeView 만들기 예제를 수행해 보도록 하겠습니다.

MS Access TreeView 만들기

데이터베이스 예제파일 다운로드

본 예제를 실행하기 위해서는 위 링크를 통해서 예제 파일을 다운로드 후 다운로드한 파일에서 진행하셔야 합니다.

새로운 폼을 만든 뒤 ‘양식 디자인’ 탭에서 ‘ActiveX 컨트롤’을 선택합니다.

목록에서 “Microsoft TreeView Control, version6.0’을 선택합니다. Access 버전에 따라서 이름이 다를 수 있습니다. TreeView가 포함된 컨트롤을 선택하시면 됩니다.

폼 안에 treeView가 생겼습니다. 위치와 크기를 조정합니다.

treeView를 오른클릭 한 뒤 ‘속성’ 을 클릭하면 오른편에서 속성을 변경할 수 있습니다. 이름 속성을 ‘treeReqs’로 변경합니다.

Ctrl+S를 눌러 폼을 저장합니다. 폼의 이름은 ‘frm_treeView’로 설정하였습니다. 이후 코드에서 해당 폼의 이름을 불러오기 때문에 동일한 이름으로 설정하셔야 문제가 발생하지 않습니다.

폼의 좌측 가장 끝 모서리를 클릭하면 오른쪽에 속성시트에서 폼이 선택이 됩니다. 이벤트 탭에서 ‘On Load’ 셀을 클릭하면 나타나는 점 세개(…) 버튼을 클릭하여 작성기 중 ‘코드 작성기’를 선택합니다.

다음과 같이 VBA 코드 작성기가 실행됩니다. 화면과 같이 코드를 입력해 줍니다.

Call loadTreeView

loadTreeView라는 메서드를 호출하는 내용인데 아직 우리는 loadTreeView라는 메서드를 정의해 준 적이 없습니다.

화면의 좌측에 프로젝트 탐색기 창에서 오른클릭을 한뒤 ‘삽입’ -> ‘모듈’을 순차적으로 클릭하여 새로운 모듈을 생성합니다. 처음 생성시 모듈의 이름은 Module1로 설정됩니다. Module1이 열리면 다음의 코드를 입력해 줍니다.

Option Compare Database

Public Sub loadTreeView()
    
    Dim tv As MSComctlLib.TreeView
    Set tv = Forms("frm_treeView").treeReqs.Object
    
    ' Clear all node of treeView
    tv.Nodes.Clear
    
    
    Dim rsReqs As DAO.Recordset
    Set rsReqs = CurrentDb.OpenRecordset("SELECT * FROM tbl_Reqs ORDER BY ID_Parent, dbl_Sort", dbOpenDynaset)
    
    
    Dim strFind As String
    
    strFind = "ID_Type = 1"
    rsReqs.FindFirst strFind
    
    Dim nodX As MSComctlLib.Node
    Dim strBook As String
        
    
    Do While Not rsReqs.NoMatch
        
        Set nodX = tv.Nodes.Add(, , , rsReqs!mem_Req)
        strBook = rsReqs.Bookmark
        
        addChildren tv, nodX, rsReqs, rsReqs!PK_Req
        rsReqs.Bookmark = strBook
        
        rsReqs.FindNext strFind
    
    Loop
    
    
End Sub


Private Sub addChildren(tv As TreeView, nodParent As Node, rsReqs As DAO.Recordset, lngParentId As Long)

    Dim strFind As String
    strFind = "ID_Parent =" & lngParentId
    rsReqs.FindFirst strFind
    
    Dim nodX As Node
    Dim strBook As String
    
    Do While Not rsReqs.NoMatch
    
        Set nodX = tv.Nodes.Add(nodParent, tvwChild, , rsReqs!mem_Req)
        strBook = rsReqs.Bookmark
        
        addChildren tv, nodX, rsReqs, rsReqs!PK_Req
        rsReqs.Bookmark = strBook
    
        rsReqs.FindNext strFind
    Loop

End Sub

코드를 입력한 후 다시 폼을 실행한 뒤 최상위 ‘Document Name 01’을 더블클릭하면 다음과 같이 treeView가 완성된 것을 볼 수 있습니다.

앞서 treeView의 이름을 바꿔주었던 속성시트에서 treeView의 몇가지 속성을 추가로 변경해 주도록 하겠습니다. 기타 탭에서 다음의 속성을 변경합니다.

  • HideSelection : 아니요
  • LineStyle : 1
  • SingleSel : 예

다시 폼을 실행시켜보면 최상위 노드에도 ‘+’ 버튼이 추가된 것을 확인하실 수 있습니다.

Tree View 만들기 예제 최종 파일 다운로드

Categories VBA