Skip to main content

Menambah Data Baru pada MySql Back-end Melalui Form di Access Front-end (Cara 1)

Setelah mengetahui cara menampilkan data MySql di form di Access, kita akan belajar cara menambah data baru. Ada bebera cara menambah data baru pada MySql back-end melalui form di Access front-end, tergantung pada tipe data field yang akan digunakan sebagai primary key. Cara pertama berikut ini digunakan bila primary key mempunyai tipe data Text.
Field KodeRek di atas berfungsi sebagai primary key dengan tipe data Text

Cara menambah data baru pada MySql bila field yang menjadi primary key mempunyai tipe data Text

Bagi yang belum mengenal MySQL atau MySQL Workbench, silakan gunakan bantuan Search yang ada di blog ini, dengan kata kunci "MySQL".

Pada situasi tertentu, kita mungkin menggunakan tipe data Text untuk field yang berperan sebagai primary key. Untuk memahaminya, kita langsung menggunakan contoh berikut ini. Buatlah sebuah form dengan menggunakan Blank Form dan namailah form itu frmRekUtama. Berikut ini adalah properti dari form:
  1. Default View= Single Form.
  2. Allow Datasheet View= No
  3. Navigation Button= No
  4. 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
  4. Sisipkan sebuah Command Button dengan properti sebagai berikut:
    1. Name= cmdTambahData,
    2. Caption= Tambah Data Baru
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:
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=EDmu51!@;" & _
    "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
'Fungsi berikut ini digunakan sebagai proses validasi sebelum data disimpan ke tabel MySQL
'Kita dapat menambahkan sendiri fungsi yang diinginkan. Output dari fungsi validasi yang dibuat umumnya 
'berupa Boolean, String, atau tipe data lain yang sesuai.
'******* Awal dari fungsi validasi *******
Function tidakAdaKodeRekening() As Boolean
On Error GoTo Err_Msg
  Dim strSql As String
  Dim fld As DAO.Field
  Dim ctl As Control

  strSql = "SELECT COUNT(*) FROM tblRekUtama WHERE KodeRek='" & Me.KodeRek & "'"
  Debug.Print strSql
  tidakAdaKodeRekening = True
  Set rst = daoDatabase.OpenRecordset(strSql, dbOpenDynaset)
  If rst.Fields(0).Value <> 0 Then tidakAdaKodeRekening = False
  rst.Close
  Set rst = Nothing
  Debug.Print "tidakAdaKodeRekening= " & tidakAdaKodeRekening
Exit_Function:
  Exit Function
Err_Msg:
  MsgBox "Function tidakAdaKodeRekening, Error # " & str(Err.Number) & ", source: " & Err.Source & _
  Chr(13) & Err.Description
  Resume Exit_Function
End Function
'******* Akhir dari fungsi validasi *******
Private Sub cmdTambahData_Click()
'Bila telah melalui proses validasi, data siap disimpan ke dalam MySQL dengan menggunakan
'fungsi ini. Dengan fungsi ini, kita menaruh data dari komputer client ke server.
  Dim strSql As String
  Dim fld As DAO.Field
  Dim ctl As Control
  
  If tidakAdaKodeRekening Then
    strSql = "SELECT * FROM tblRekUtama"
    Set rst = daoDatabase.OpenRecordset(strSql, dbOpenDynaset)
    rst.AddNew
    For Each ctl In Me.Controls
        For Each fld In rst.Fields
          If ctl.name = fld.name Then
            fld.Value = Controls(ctl.name).Value
          End If
        Next fld
    Next ctl
    rst.Update
  Else
    MsgBox "Maaf, Kode Rekening '" & Me.KodeRek & "' sudah ada dalam daftar. Silakan ganti dengan yang lain."
    Exit Sub
  End If
  rst.Close
  Set rst = Nothing
End Sub
Private Sub Form_Open(Cancel As Integer)
  membukaDatabase
End Sub
Private Sub Form_Close()
  menutupDatabase
End Sub
Saat form dibuka pertama kali, event procedure Form_Open dijalankan untuk membuka database melalui fungsi membukaDatabase. Pada fungsi itu, kita menjalankan fungsi untuk menentukan String Koneksi MySQL di Access VBA.

Setelah database terbuka, kita dapat memasukkan data yang diperlukan ke dalam form frmRekUtama. Saat tombol Tambah Data Baru ditekan, data divalidasi terlebih dahulu melalui fungsi tidakAdaKodeRekening untuk memastikan bahwa tidak ada duplikasi data pada primary key. Setelah dipastikan valid, data kemudian dikirim ke server database MySQL untuk disimpan.

Script VBA di atas adalah kode yang paling sederhana, yang penting substansinya kena dan dapat dimengerti. Kita dapat menambahkan berbagai macam kode yang diperlukan untuk membuat form di Access semakin mudah digunakan. Jadi, silakan bereksperimen sendiri.

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access