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 SubSaat 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..