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
[sourcecode language=”vb”]
Option Explicit
Public Function GetConnectionString(ByVal mFolder As String) As String
GetConnectionString = "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & mFolder
End Function
[/sourcecode]
- Buat rutin ketika tombol Browse diklik, browse ke salah satu file *.dbf, membukanya, melakukan koneksi aplikasi ke database tersebut.
[sourcecode language=”vb”]
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
[/sourcecode]
- Buat rutin untuk menangani ketika data dalam list view didefinisikan maupun direfresh.
[sourcecode language=”vb”]
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
[/sourcecode]
- 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!