Pada posting artikel terdahulu, kita sudah memahami bagaimana cara melakukan koneksi data dari aplikasi client di MS Access ke database back-end yang ada di MySQL. Koneksi data itu dilakukan dengan menggunakan penulisan kode VBA yang berisi string koneksi MySQL. Kali ini, kita akan menampilkan data MySQL dalam form di Access.
Jika belum jelas, silakan baca di postingan yang berjudul String Koneksi MySQL di Access VBA. Pada postingan ini, kita sudah bisa melakukan koneksi data dari MS Access ke MySQL, tetapi belum bisa menampilkannya dalam bentuk report, baik report yang dibuat dari Form object maupun Report object di access.
Bagi yang belum mengenal MySQL atau MySQL Workbench, silakan gunakan bantuan Search yang ada di blog ini, dengan kata kunci "MySQL".
Kali ini kita mencoba membuat form yang dapat menampilkan data sebuah tabel yang berasal dari database back-end MySQL, murni back-end dengan tidak menggunakan linked table dari MySQL. Kita akan menggunakan contoh database MySQL yang telah dibuat di posting di atas. Dalam database MySQL itu, ada banyak tabel yang bisa digunakan. Dalam hal ini, tabel yang kita gunakan bernama tblRekUtama. Ada tiga nama field dalam tabel tblReUtama,yaitu: KodeRek (Caption= Kode Rekening), NamaRek (Caption= Nama Rekening), dan Grup (Caption= Nama Grup).
Selanjutnya, kita membuat control dalam sebuah form yang namanya persis seperti nama field di atas, seperti terlihat pada gambar di bawah ini:
Gambar warna biru pada latar belakang adalah MySQL Workbench, sedangkan warna merah adalah MS Access
Buatlah sebuah form dengan menggunakan Blank Form dan namailah form itu frmRekUtama. Berikut ini adalah properti dari form:
atau
Pernyataan For Each ctl In Me.Controls digunakan untuk mengidentifikasi setiap control yang ada di form frmRekUtama. Sedangkan pernyataan For Each fld In rst.Fields digunakan untuk mengidentifikasi setiap field yang ada di recordset, dalam hal ini menggunakan tabel tblRekUtama. Jika nama field sama dengan nama control, maka kita mengatur properti Control Source dari control menjadi sama dengan nama field seperti dijelaskan pada kode ctl.ControlSource = fld.name. Dengan pernyataan ini, kita memberi nilai pada properti control source dari form menjadi sama dengan nama field.
Selanjutnya, untuk mengikat (bound) record source sesuai dengan tabel dari tblRekUtama di MySQL database, kita menggunakan pernyataan Set Me.Recordset = rst yang berarti mengatur agar record source form frmRekUtama berisi record dari strSql.
Jika belum jelas, silakan baca di postingan yang berjudul String Koneksi MySQL di Access VBA. Pada postingan ini, kita sudah bisa melakukan koneksi data dari MS Access ke MySQL, tetapi belum bisa menampilkannya dalam bentuk report, baik report yang dibuat dari Form object maupun Report object di access.
Bagi yang belum mengenal MySQL atau MySQL Workbench, silakan gunakan bantuan Search yang ada di blog ini, dengan kata kunci "MySQL".
Kali ini kita mencoba membuat form yang dapat menampilkan data sebuah tabel yang berasal dari database back-end MySQL, murni back-end dengan tidak menggunakan linked table dari MySQL. Kita akan menggunakan contoh database MySQL yang telah dibuat di posting di atas. Dalam database MySQL itu, ada banyak tabel yang bisa digunakan. Dalam hal ini, tabel yang kita gunakan bernama tblRekUtama. Ada tiga nama field dalam tabel tblReUtama,yaitu: KodeRek (Caption= Kode Rekening), NamaRek (Caption= Nama Rekening), dan Grup (Caption= Nama Grup).
Selanjutnya, kita membuat control dalam sebuah form yang namanya persis seperti nama field di atas, seperti terlihat pada gambar di bawah ini:
![]() |
| Interaksi nama control dalam form frmRekUtama di MS Access dengan nama field pada tabel tblRekUtama di database MySQL |
Buatlah sebuah form dengan menggunakan Blank Form dan namailah form itu frmRekUtama. Berikut ini adalah properti dari form:
- Default View= Datasheet.
- Allow Datasheet View= Yes
- Record Source= kosong (Unbound)
- Sisipkan sebuah Text Box dengan properti sebagai berikut:
- Name=KodeRek,
- Control Source= Unbound
- Caption dari label Text Box ini: Kode Rekening
- Sisipkan sebuah Text Box dengan properti sebagai berikut:
- Name=NamaRek,
- Control Source= Unbound
- Caption dari label Text Box ini: Nama Rekening
- Sisipkan sebuah Combo Box dengan properti sebagai berikut:
- Name=Grup,
- Control Source= Unbound
- Row Source= Kode Grup;Nama Grup;1;Aktiva;2;Hutang;3;Ekuitas;4;Pendapatan;5;Biaya;6;Ringkasan Pendapatan
- Row Source Type= Value List
- Bound Column= 1
- Column Count= 2
- Column Widths= 0";1.5"
- Column Heads= Yes
- List Width= 1.5"
- Caption dari label Text Box ini: Nama Grup
Option Compare Database
Dim daoDatabase As DAO.Database
Dim rst As DAO.Recordset
Function strKoneksiMySQLs() As String
strKoneksiMySQLs = "Driver={MySQL ODBC 5.3 ANSI Driver};" & _
"Database=Akunting;" & _
"UID=root;" & _
"PWD=12421;" & _
"SERVER=Localhost;" & _
"Port=3306"
End Function
Function membukaDatabase()
On Error GoTo Err_Msg
Set daoDatabase = OpenDatabase("", dbDriverNoPrompt, False, strKoneksiMySQLs)
Exit_Function:
Exit Function
Err_Msg:
MsgBox "Function membukaDatabase, Error # " & str(Err.Number) & ", source: " & Err.Source & _
Chr(13) & Err.Description
Resume Exit_Function
End Function
Function menutupDatabase()
On Error GoTo Err_Msg
If Not (daoDatabase Is Nothing) Then
daoDatabase.Close
Set daoDatabase = Nothing
End If
Exit_Function:
Exit Function
Err_Msg:
MsgBox "Function menutupDatabase, Error # " & str(Err.Number) & ", source: " & Err.Source & _
Chr(13) & Err.Description
Resume Exit_Function
End Function
Private Sub Form_Close()
rst.Close
Set rst = Nothing
menutupDatabase
End Sub
Private Sub Form_Open(Cancel As Integer)
Dim strSql As String
Dim fld As DAO.Field
Dim ctl As Control
strSql = "SELECT * FROM tblRekUtama"
membukaDatabase
Set rst = daoDatabase.OpenRecordset(strSql, dbOpenDynaset)
For Each ctl In Me.Controls
For Each fld In rst.Fields
If ctl.name = fld.name Then
If ctl.ControlSource = vbNullString Then ctl.ControlSource = fld.name
End If
Next fld
Next ctl
Set Me.Recordset = rst
End Sub
Saat form dibuka, event procedure Form_Open (On Open) dijalankan. Kita dapat mengubah nilai variabel strSql sesuai dengan kriteria yang diinginkan, misalnya:strSql = "SELECT * FROM tblRekUtama WHERE KodeRek between '101' AND '121'"
![]() |
| Daftar rekening antara 101 dan 121 (dalam hal ini 118 s/d 121 tidak ada, jadi hanya sampai 117) |
strSql = "SELECT * FROM tblRekUtama WHERE Grup='2'"
![]() |
| Daftar rekening dengan grup=2 (Hutang) |
Selanjutnya, untuk mengikat (bound) record source sesuai dengan tabel dari tblRekUtama di MySQL database, kita menggunakan pernyataan Set Me.Recordset = rst yang berarti mengatur agar record source form frmRekUtama berisi record dari strSql.





Wah trimakasih banyak nih ke admin,
ReplyDeleteilmunya benar-benar terapan,
semoga ilmunya berkah..