이번 글에서는 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 : 예
다시 폼을 실행시켜보면 최상위 노드에도 ‘+’ 버튼이 추가된 것을 확인하실 수 있습니다.