treeview from database

7
January 18, 2010AdminLeave a commentGo to comments Pada postingan sebelumnya saya sudah membahas bagaimana membuat menu alternatif menggunakan komponen VBSmartMenu XP dan kali ini kita akan membahas bagaimana membuat menu menggunakan objek TreeView. Objek TreeView digunakan untuk menampilkan data dalam bentuk Hirarki sehingga sangat cocok untuk menampilkan menu dalam jumlah banyak. Pada pembahasan ini saya hanya membatasi untuk menampilkan menu 2 tingkat yaitu level 1 (menu induk) dan level 2 (menu anak), kedua menu tersebut akan disimpan didatabase Access dengan nama tabel MENU_INDUK dan MENU_ANAK. Berikut adalah contoh rancangan tabelnya : Gambar struktur tabel Gambar relasi tabel Contoh data Untuk project VB sendiri kita akan tambahkan komponen (CTRL + T) Microsoft Windows Common Control 6.0 (SP6) kemudian tinggal drag komponen TreeView.

Upload: supriyadi

Post on 25-Nov-2015

24 views

Category:

Documents


0 download

DESCRIPTION

Treeview From Database

TRANSCRIPT

January 18, 2010AdminLeave a commentGo to commentsPada postingan sebelumnya saya sudah membahas bagaimana membuat menu alternatif menggunakan komponenVBSmartMenu XPdan kali ini kita akan membahas bagaimana membuat menu menggunakan objek TreeView.Objek TreeView digunakan untuk menampilkan data dalam bentuk Hirarki sehingga sangat cocok untuk menampilkan menu dalam jumlah banyak.Pada pembahasan ini saya hanya membatasi untuk menampilkan menu 2 tingkat yaitu level 1 (menu induk) dan level 2 (menu anak), kedua menu tersebut akan disimpan didatabase Access dengan nama tabel MENU_INDUK dan MENU_ANAK.Berikut adalah contoh rancangan tabelnya :

Gambar struktur tabel

Gambar relasi tabel

Contoh dataUntuk project VB sendiri kita akan tambahkan komponen (CTRL + T) Microsoft Windows Common Control 6.0 (SP6) kemudian tinggal drag komponen TreeView.

Oke jika semua data sudah siap tambahkan sebuah modul dan copy paste kode berikut :12345678910111213141516171819202122232425262728293031323334353637383940414243444546Option ExplicitPublic conn As ADODB.ConnectionPublic strSql As StringPublic Function KonekToServer() As BooleanDim strConn As StringOn Error GoTo errHandlestrConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & "\database.mdb"Set conn = New ADODB.Connectionconn.ConnectionString = strConnconn.OpenKonekToServer = TrueExit FunctionerrHandle:KonekToServer = FalseEnd FunctionPublic Function openRecordset(ByVal query As String) As ADODB.RecordsetDim obj As ADODB.RecordsetSet obj = New ADODB.Recordsetobj.CursorLocation = adUseClientobj.Open query, conn, adOpenForwardOnly, adLockReadOnlySet openRecordset = objEnd FunctionPublic Sub closeRecordset(ByVal vRs As ADODB.Recordset)If Not (vRs Is Nothing) ThenIf vRs.State = adStateOpen Then vRs.CloseEnd IfSet vRs = NothingEnd SubPublic Function getRecordCount(ByVal vRs As ADODB.Recordset) As LongvRs.MoveLastgetRecordCount = vRs.RecordCountvRs.MoveFirstEnd Function

Adapun contoh prosedur untuk menambahkan data ke TreeView adalah sebagai berikut :1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950Private Sub addMenu()Dim rsMenuInduk As ADODB.RecordsetDim rsMenuAnak As ADODB.RecordsetDim root As NodeDim i As LongDim x As LongDim rowCount(1) As LongmnuTree.Nodes.ClearWith mnuTree.Nodes'menampilkan menu indukstrSql = "SELECT id, menu_name, menu_caption " & _"FROM menu_induk " & _"ORDER BY id"Set rsMenuInduk = openRecordset(strSql)If Not rsMenuInduk.EOF ThenrowCount(0) = getRecordCount(rsMenuInduk)For i = 1 To rowCount(0)Set root = .Add(, , rsMenuInduk("menu_name").Value, rsMenuInduk("menu_caption").Value)root.Bold = True'menampilkan menu anakstrSql = "SELECT menu_name, menu_caption " & _"FROM menu_anak " & _"WHERE menu_induk_id = " & rsMenuInduk("id").Value & " " & _"ORDER BY id"Set rsMenuAnak = openRecordset(strSql)If Not rsMenuAnak.EOF ThenrowCount(1) = getRecordCount(rsMenuAnak)For x = 1 To rowCount(1).Add root, tvwChild, rsMenuAnak("menu_name").Value, rsMenuAnak("menu_caption").ValuersMenuAnak.MoveNextNext xEnd IfCall closeRecordset(rsMenuAnak)rsMenuInduk.MoveNextNext iEnd IfCall closeRecordset(rsMenuInduk)End WithFor i = 1 To mnuTree.Nodes.CountmnuTree.Nodes(i).Expanded = TrueNextEnd Sub

Kemudian kita tinggal panggil di event Form_Load1234567891011121314Private Sub Form_Load()Dim ret As Booleanret = KonekToServer'inisialisasi treeviewWith mnuTree.Style = tvwTreelinesPlusMinusText.LineStyle = tvwRootLines.Indentation = 300.47End WithCall addMenuEnd Sub

Kode untuk menghandle menu mana yang diklik :1234567891011121314151617Private Sub mnuTree_DblClick()If mnuTree.Nodes(mnuTree.SelectedItem.Index).Children = 0 Then 'menu anakSelect Case mnuTree.SelectedItem.KeyCase "mnuBarang": 'TODO : tampilkan frmBarang disiniCase "mnuCustomer"Case "mnuSupplier"Case "mnuPembelian"Case "mnuReturPembelian"Case "mnuPenjualan"Case "mnuBiayaOperasional"Case "mnuGajiKaryawan"Case "mnuLapPembelian"Case "mnuLapJthTempo"Case "mnuLapPenjualan"End SelectEnd IfEnd Sub

Contoh output program :