Skip to main content

Menampilkan Data MySQL dalam Form di Access

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:
Interaksi nama control dalam form frmRekUtama di MS Access dengan nama field pada tabel tblRekUtama di database MySQL
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:
  1. Default View= Datasheet.
  2. Allow Datasheet View= Yes
  3. Record Source= kosong (Unbound)
Pada bagian Detail dari form frmRekUtama itu, isikan control sebagai berikut:
  1. Sisipkan sebuah Text Box dengan properti sebagai berikut:
    1. Name=KodeRek,
    2. Control Source= Unbound
    3. Caption dari label Text Box ini: Kode Rekening
  2. Sisipkan sebuah Text Box dengan properti sebagai berikut:
    1. Name=NamaRek,
    2. Control Source= Unbound
    3. Caption dari label Text Box ini: Nama Rekening
  3. Sisipkan sebuah Combo Box dengan properti sebagai berikut:
    1. Name=Grup,
    2. Control Source= Unbound
    3. Row Source= Kode Grup;Nama Grup;1;Aktiva;2;Hutang;3;Ekuitas;4;Pendapatan;5;Biaya;6;Ringkasan Pendapatan
    4. Row Source Type= Value List
    5. Bound Column= 1
    6. Column Count= 2
    7. Column Widths= 0";1.5"
    8. Column Heads= Yes
    9. List Width= 1.5"
    10. Caption dari label Text Box ini: Nama Grup
Setelah merancang form frmRekUtama, kita memasukkan kode VBA yang diperlukan ke dalam form ini (form module). Ada pun kode VBA yang diperlukan adalah sebagai berikut:
  1. Option Compare Database  
  2. Dim daoDatabase As DAO.Database  
  3. Dim rst As DAO.Recordset  
  4.   
  5. Function strKoneksiMySQLs() As String  
  6.   strKoneksiMySQLs = "Driver={MySQL ODBC 5.3 ANSI Driver};" & _  
  7.     "Database=Akunting;" & _  
  8.     "UID=root;" & _  
  9.     "PWD=12421;" & _  
  10.     "SERVER=Localhost;" & _  
  11.     "Port=3306"  
  12. End Function  
  13. Function membukaDatabase()  
  14. On Error GoTo Err_Msg  
  15.     Set daoDatabase = OpenDatabase("", dbDriverNoPrompt, False, strKoneksiMySQLs)  
  16. Exit_Function:  
  17.   Exit Function  
  18. Err_Msg:  
  19.   MsgBox "Function membukaDatabase, Error # " & str(Err.Number) & ", source: " & Err.Source & _  
  20.   Chr(13) & Err.Description  
  21.   Resume Exit_Function  
  22. End Function  
  23. Function menutupDatabase()  
  24. On Error GoTo Err_Msg  
  25.   If Not (daoDatabase Is NothingThen  
  26.     daoDatabase.Close  
  27.     Set daoDatabase = Nothing  
  28.   End If  
  29. Exit_Function:  
  30.   Exit Function  
  31. Err_Msg:  
  32.   MsgBox "Function menutupDatabase, Error # " & str(Err.Number) & ", source: " & Err.Source & _  
  33.   Chr(13) & Err.Description  
  34.   Resume Exit_Function  
  35. End Function  
  36. Private Sub Form_Close()  
  37.   rst.Close  
  38.   Set rst = Nothing  
  39.   menutupDatabase  
  40. End Sub  
  41.   
  42. Private Sub Form_Open(Cancel As Integer)  
  43.   Dim strSql As String  
  44.   Dim fld As DAO.Field  
  45.   Dim ctl As Control  
  46.     
  47.   strSql = "SELECT * FROM tblRekUtama"  
  48.   membukaDatabase  
  49.     
  50.   Set rst = daoDatabase.OpenRecordset(strSql, dbOpenDynaset)  
  51.   For Each ctl In Me.Controls  
  52.       For Each fld In rst.Fields  
  53.         If ctl.name = fld.name Then  
  54.           If ctl.ControlSource = vbNullString Then ctl.ControlSource = fld.name  
  55.         End If  
  56.       Next fld  
  57.   Next ctl  
  58.   Set Me.Recordset = rst  
  59. End Sub  
Saat form dibuka, event procedure Form_Open (On Open) dijalankan. Kita dapat mengubah nilai variabel strSql sesuai dengan kriteria yang diinginkan, misalnya:
  1. 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)
atau
  1. strSql = "SELECT * FROM tblRekUtama WHERE Grup='2'"  
Daftar rekening dengan grup=2 (Hutang)
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.

Comments

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

    ReplyDelete

Post a Comment

Posting Terpopuler

Cara Mengatur dan Menggunakan ODBC untuk Mengakses Data Eksternal

Fungsi Untuk Membuka Database di Access VBA

Format Untuk Field Dengan Tipe Data Number dan Currency di MS Access