Belajar VB6: Menampilkan data dBase/DBF dengan Visual Basic

Pendahuluan

Pada tutorial kali ini, kita akan mencoba menampilkan data yang tersimpan dalam format basis data dBase (DBF) dengan aplikasi yang dibangun dengan Visual Basic 6 (VB6). Pada dasarnya, kita hanya akan menggunakan driver dBase bawaan dari Microsoft dalam VB6 yaitu Microsoft dBASE Driver.

Menampilkan data dBase/DBF dengan VB6

    • Silakan buat sebuah project baru pada VB6, tambahkan component: Microsoft Common Dialog 6.0 dan Microsoft Common Control 6.0.
    • Pada sebuah form, silakan tambahkan komponen 1 textbox dengan nama Descr, 1 ListView dengan nama ListView1, 1 button dengan nama BrowseButton dan 1 Common Dialog browser dengan nama CommonDialog

    • Buat koneksi aplikasi ke database dBase/DBF
Option Explicit

Public Function GetConnectionString(ByVal mFolder As String) As String
 GetConnectionString = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & mFolder
End Function

    • Buat rutin ketika tombol Browse diklik, browse ke salah satu file *.dbf, membukanya, melakukan koneksi aplikasi ke database tersebut.
Private Sub BrowseButton_Click()
On Error GoTo FileOpen_ClickError
    Dim db As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim mItem As MSComctlLib.ListItem
    Dim mIndex As Long
    Dim mValue As String
    Dim mFolder As String

    CommonDialog1.FileName = ""
    CommonDialog1.Filter = "dBASE Files (*.dbf)| *.dbf"
    CommonDialog1.InitDir = App.Path
    Call CommonDialog1.ShowOpen
    Descr.Text = CommonDialog1.FileTitle

    If (Len(Trim(CommonDialog1.FileName)) > 0) Then
        Set db = New ADODB.Connection
        mFolder = Replace(CommonDialog1.FileName, CommonDialog1.FileTitle, "", 1)
        Call db.Open(GetConnectionString(mFolder))
        Set rs = New ADODB.Recordset
        Call rs.Open("SELECT * FROM " & Descr.Text, db, adOpenStatic, adLockReadOnly)
        Call ResetList
        Call DefineList(rs)
        If (rs.RecordCount > 0) Then
            rs.MoveFirst
            While Not (rs.EOF)
                If (IsNull(rs.Fields(0))) Then
                    mValue = ""
                Else
                    mValue = CStr(rs.Fields(0))
                End If
                Set mItem = ListView1.ListItems.Add(1, , mValue)
                For mIndex = 1 To rs.Fields.Count - 1
                    If (IsNull(rs.Fields(mIndex))) Then
                        mValue = ""
                    Else
                        mValue = CStr(rs.Fields(mIndex))
                    End If
                    mItem.SubItems(mIndex) = mValue
                Next mIndex
                rs.MoveNext
            Wend
        End If
        Call rs.Close
        Set rs = Nothing
        Call db.Close
        Set db = Nothing
    End If
    Exit Sub
FileOpen_ClickError:
    If Err.Number = cdlCancel Then
        Err.Clear
    Else
        MsgBox Err.Description
    End If
End Sub
    • Buat rutin untuk menangani ketika data dalam list view didefinisikan maupun direfresh.
Private Sub ResetList()
    Dim mCount As Long

    ListView1.ListItems.Clear
    mCount = ListView1.ColumnHeaders.Count
    If (mCount > 0) Then
        While (mCount > 0)
            Call ListView1.ColumnHeaders.Remove(1)
            mCount = mCount - 1
        Wend
    End If
End Sub

Private Sub DefineList(ByRef rs As ADODB.Recordset)
    Dim mCount As Long
    Dim mIndex As Long
    Dim mColumnWidth As Long

    mCount = rs.Fields.Count
    For mIndex = 0 To mCount - 1
        mColumnWidth = IIf(CLng(rs.Fields(mIndex).DefinedSize) > Len(CStr(rs.Fields(mIndex).Name)), rs.Fields(mIndex).DefinedSize, Len(CStr(rs.Fields(mIndex).Name)))
        mColumnWidth = mColumnWidth * 150
        Call ListView1.ColumnHeaders.Add(mIndex + 1, , rs.Fields(mIndex).Name, mColumnWidth)
    Next mIndex
End Sub
  • Coba jalankan project dan buka salah satu file DBF milik anda. Contohnnya:

Penutup

Dengan konsep dan praktik diatas, kita sudah mampu melakukan koneksi ke database dBase dan menampilkan datanya ke dalam sebuah List View. Tinggal anda kembangkan untuk aplikasi yang lebih riil, dengan kemampuan CRUD dan lebih aplikatif. Selamat berkarya!

Incoming search terms:

4 Comments

Leave a Reply