Skip to main content

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

Pada database yang murni disusun menggunakan back-end database seperti Access, MySQL, SQL Server, dan sejenisnya, database designer bertugas menyusun arsitektur data yang lebih rinci, seperti bagaimana proses validasi akan dilakukan, caption yang dibutuhkan, tipe data yang diperlukan dan lain sebagainya.
Tujuan utama dalam merancang database back-end seperti di atas adalah supaya data yang tersimpan dapat diandalkan. Secara umum, tujuan penyusunan database hampir sama dalam hal "karakteristik kualitatif informasi"-nya, seperti dapat dibaca di posting yang berjudul Sistem Akuntansi Yang Baik. Kita tidak membahas secara detail tentang hal ini.

Kembali ke topik utama, MySQL mempunyai tipe data Integer yang dapat meningkat atau bertambah secara otomatis, sama seperti di Access. Bila di Access, tipe data Integer yang meningkat itu disebut AutoNumber, di MySQL, tipe data itu disebut Auto_Increment. Tipe data Integer Auto_Increment umumnya digunakan sebagai primary key yang ada di file transaksi, seperti pembuatan kuitansi, tagihan, nomor slip setoran uang dan penarikan uang di bank, nomor slip gaji, tiket reservasi kereta api, dan sebagainya.

Pada aplikasi front-end di Access yang mempunyai linked table dengan database lain, tabel yang mempunyai field dengan tipe data Auto_Increment atau AutoNumber mungkin tidak terlalu masalah. Masalah Auto_Increment atau AutoNumber akan muncul bila kita menyusun aplikasi front end yang murni tidak melibatkan linked table seperti yang akan kita bahas berikut ini. Masalah yang muncul adalah, komputer client (front-end)  tidak bisa memperoleh nomor secara otomatis, seperti halnya bila kita menggunakan linked table.

Data yang kita masukkan melalui front-end belum memperoleh nomor yang akan digunakan sebagai primary key/indeks. Nomor yang berfungsi sebagai primary key atau indeks akan diperoleh saat data sudah tersimpan dalam tabel di database back-end. Nah, supaya sinkron, maka nomor itu harus kita kirim kembali ke komputer clent (fornt-end) supaya user dapat menggunakannnya sewaktu-waktu diperlukan.
Gambar 1. Struktur kolom/field pada tabel tblkuitansikoran di MySQL database

Untuk memahami lebih detail, ikuti kasus seperti contoh pembuatan kuitansi sederhana berikut ini.

Cara menambah data baru pada MySql bila field yang menjadi primary key mempunyai tipe data Integer Auto Increment


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

Langkah pertama adalah membuat tabel untuk menyimpan data transaksi kuitansi koran, seperti pada Gambar 1 di atas. Pada Gambar 1, tabel tblKuitansiKoran mempunyai kolom (field bila di Access) dan properti sebagai berikut:
  1. Untuk column nomor kuitansi:
    1. Column Name=nomorKuitansi,
    2. Data Type= INT
    3. Size= 10
    4. Primary Key= True
    5. Not Null= True
    6. Unique= True
    7. Auto Increment= True
  2. Untuk column tanggal kuitansi:
    1. Column Name=tglKuitansi,
    2. Data Type= DATETIME
  3. Untuk column diterima dari:
    1. Column Name= diterimaDari
    2. Data Type= VARCHAR
    3. Size= 50
  4. Untuk column keterangan:
    1. Column Name= keteranganKuitansi
    2. Data Type= VARCHAR
    3. Size= 70
  5. Untuk column jumlah rupiah:
    1. Column Name= jumlahRupiah
    2. Data Type= INT
    3. Size= 8
Setelah membuat tabel di atas, langkah selanjutnya adalah membuat form di Access. Buatlah form di Access dengan menggunakan blank form. Cara pembuatannya mirip seperri pada posting yang berjudul Menambah Data Baru pada MySql Back-end Melalui Form di Access Front-end (Cara 1).  Hasil formnya kurang lebih seperti ini:
Gambar 2 Pembuatan nama control di form sesuai dengan nama column/field MySQL
Berikut ini adalah properti yang dibutuhkan pada form frmKuitansiKoran seperti gambar di atas.

  1. Default View= Single Form.
  2. Allow Datasheet View= No
  3. Navigation Button= No
  4. Record Source= kosong (Unbound)
Pada bagian Detail dari form frmKuitansiKoran itu, isikan control sebagai berikut:
  1. Sisipkan sebuah Text Box dengan properti sebagai berikut:
    1. Name=nomorKuitansi
    2. Control Source= Unbound
    3. Caption dari label Text Box ini: Nomor Kuitansi
  2. Sisipkan sebuah Text Box dengan properti sebagai berikut:
    1. Name=tglKuitansi
    2. Control Source= Unbound
    3. Caption dari label Text Box ini: Tanggal Kuitansi
  3. Sisipkan sebuah Text Box dengan properti sebagai berikut:
    1. Name=diterimaDari
    2. Control Source= Unbound
    3. Caption dari label Text Box ini:Diterima Dari
  4. Sisipkan sebuah Text Box dengan properti sebagai berikut:
    1. Name=keteranganKuitansi
    2. Control Source= Unbound
    3. Caption dari label Text Box ini: Keterangan
  5. Sisipkan sebuah Text Box dengan properti sebagai berikut:
    1. Name=jumlahRupiah,
    2. Control Source= Unbound
    3. Caption dari label Text Box ini: Jumlah Rupiah
  6. Sisipkan sebuah Command Button dengan properti sebagai berikut:
    1. Name= cmdTambahData,
    2. Caption= Tambah Data Baru
Setelah merancang form frmKuitansiKoran, 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

Private Sub cmdTambahData_Click()
  Dim strSql As String
  Dim fld As DAO.Field
  Dim ctl As Control
  Dim varBookmark As Variant
  
'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.
    strSql = "tblkuitansikoran"
    Set rst = daoDatabase.OpenRecordset(strSql, dbOpenDynaset, dbSeeChanges)
    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
    With rst
      If rst.Bookmarkable = False Then
        Debug.Print "Recordset is not Bookmarkable!"
      Else
        rst.Bookmark = rst.LastModified
        Me.nomorKuitansi = rst.Fields("nomorKuitansi").Value
        Debug.Print Me.nomorKuitansi
      End If
    End With
  rst.Close
  Set rst = Nothing
End Sub
Private Sub Form_Open(Cancel As Integer)
  membukaDatabase
End Sub
Saat tombol Tambah Data Baru ditekan, client  dari aplikasi Access mengirimkan data ke server MySQL Database. Di server, MySQL kemudian menyimpan data baru pada urutan nomorKuitansi yang paling akhir. Setelah itu, server MySQL Database akan mengirimkan nomorKuitansi terakhir ke client. Lalu, nomorKuitansi ini kemudian ditampilkan di form di client melalui perintah yang ada dalam pernyataan With rst.

Gambar 3 Animasi pemasukkan data dari form Acsess ke MySQL database

Gambar animasi di atas menjelaskan proses pemasukkan data ke dalam MySQL database untuk kasus di mana column pada tabel MySQL mempunyai tipe data Integer Auto_Increment. Perhatikanlah saat tombol Tambah Data Baru ditekan, nomorKuitansi akan ditampilkan untuk menunjukkan bahwa data telah tersimpan di tabel tblKuitansiKoran. Dengan cara ini, kita tidak kehilangan arah dalam melakukan pelacakan. Dalam hal ini, nilai nomorKuitansi digunakan sebagai colum/field/control yang digunakan untuk melacak karena sifat field ini unik dan diperlakukan sebagai primary key.

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access