Skip to main content

Back-end dan Front-end Menggunakan Bound Control

Pada posting yang berkaitan dengan front-end database kali ini, kita akan membuat program sederhana yang digunakan untuk mengakses sebuah tabel di back-end database untuk kemudian data pada tabel itu dimuat seluruhnya ke sebuah form. Ikuti penjelasan lengkap berikut ini.

Pemrogram Access yang masih awam biasanya akan menempatkan tabel dan query dalam satu database yang sama. Sebagai contoh, bonus CD yang ada di Buku Membuat Program Akuntansi dengan MS Access VBA menempatkan tabel, query, form, report, macro, dan modul pada satu database yang sama. Dengan demikian, penanganan data dalam hal menambahkan, mengedit, dan menghapus sebuah record dalam sebuah form menjadi user friendly. Programmer Access hanya perlu mengaitkan tabel yang ingin diupdate ke record-source sebuah user interface berupa form. Istilah di MS Access, dengan membuat bound control di form.
Hal seperti di ataas bisa juga dilakukan pada sebuah front-end database, di mana tabel hanya tersimpan di back-end database, tidak ada tabel sama sekali di dalam front-end database, juga tidak ada sebuah linked table di dalamnya.
Berikut ini adalah contoh penerapan back-end dan front-end database Access dengan bound control.
  1. Gunakan file Access Database_be.accdb yang ada di posting Contoh Sederhana Aplikasi Back-End dan Front-End Database di MS Access Dengan Menggunakan DAO. File Database_be.accdb ini berfungsi sebagai back-end database.
  2. Buatlah file database Access dengan nama DatabaseBC_fe.accdb. File DatabaseBC_fe.accdb ini merupakan database front-end yang mempunyai bound control pada form dan tidak ada tabel apa pun di dalam database ini.
  3. Karena ingin mengambil properti field yang ada di tabel, maka kita harus membuat link table ke Database_be.accdb agar properti tabel di database itu bisa diaplikasikan di mana pun kita ingin membuat object selain table (misalnya, form dan report). Untuk itu, buatlah link table dari satu tabel, misalnya: tabel tblRekUtama, atau seluruh tabel yang ada di file Database_be.accdb. Ikuti cara membuat link table pada link posting tersebut di atas.
  4. Setelah link table berhasil dibuat, kita akan membuat form kasar dari link table yang tersedia itu. Misalnya pilih tabel tblRekUtama seperti di atas. Sorotlah tabel tblRekUtama, lalu buatlah sebuah form sederhana dengan menggunakan cara Membuat Form Menggunakan Form Wizard. Namailah form yang baru dibuat itu: frmRekUtama. 
  5. Bukalah frmRekUtama dalam format Design View, seperti telihat di gambar bawah.
  6. Atur properti form Record Selectors=No
  7. Kosongkanlah properti Record Source dari form frmRekUtama (menjadi unbound record source)
  8. Kosongkanlah Control Source dari form control yang ada di dalam form frmRekUtama (menjadi unbound control source). Hal yang perlu diperhatikan di sini adalah: Nama control source harus sama dengan nama field tabel yang ada di tblRekUtama. Ini penting, karena akan digunakan dalam proses retrieving data yang sesuai dengan nama field tabel. Jadi, jangan mengubah nama control source yang menunjukkan nama field tabel.
  9. Hasil akhir terlihat di gambar bawah:
  10. Tampilan frmRekUtama, dalam format Form View akan seperti gambar di bawah.
  11. Kini, form yang kosong (unbound) dengan sebagian properti yang berasal dari tabel tblRekUtama sudah terpasang di form frmRekUtama.
  12. Selanjutanya, isikanlah kode VBA pada class module Frm_frmRekUtama seperti di bawah/tab sebelah kanan, setelah itu simpanlah form frmRekUtama
  13.  Pada Access Navigation Pane, hapuslah semua Linked Table yang ada di Object Tables. Tujuannya, untuk memaksimalkan fungsi database front-end. Dengan demikian, file DatabaseBC_fe.accdb hanya ada satu buah form frmRekUtama, seperti tampak pada gambar di bawah.
  14. Tampilan frmRekUtama, dalam format Datasheet View akan tampak seperti gambar di bawah (atur properti form: Default View=Datasheet dan Allow Datasheet View=Yes).
Dengan membuat front-end secara bound control di form seperti ini, kita bisa melakukan pemutakhiran (updating) data seperti saat objek tabel dan query menyatu (tidak dipesahkan) dengan objek lain di Access. Saat form dibuka, database front-end akan melakukan koneksi ke back-end dan kemudian menarik data yang dibutuhkan untuk kemudian ditampilkan di layar komputer. Saat form ditutup, database front-end akan memutus koneksi ke back-end sehingga trafik jaringan menjadi lebih lega.
Berikut ini adalah kode VBA yang ada di class module Frm_frmRekUtama
Option Compare Database
Private dbs As DAO.Database
Private Const constNamaTabel As String = "tblRekUtama"
Private strSQL As String
Private Function bukaRecordset(strSQL As String, Optional boolForEdit As Boolean) As DAO.Recordset
  Dim rstRecordset As DAO.Recordset
On Error GoTo Err_Msg
  If boolForEdit Then
    Set rstRecordset = dbs.OpenRecordset(strSQL, dbOpenDynaset)
  Else
    Set rstRecordset = dbs.OpenRecordset(strSQL, dbOpenSnapshot)
  End If
  Set bukaRecordset = rstRecordset
  
Exit_Function:
  Exit Function
Err_Msg:
  MsgBox "Function bukaRecordset, Error # " & Str(Err.Number) & ", source: " & Err.Source & _
  Chr(13) & Err.Description
  Resume Exit_Function
End Function
Private Function bukaDatabaseBE()
  Dim strFolderName As String
  Dim strDbsName, strFileName As String
  Dim strProvider As String
  Dim strPassword As String
  Dim strConnection As String
  
  Const cnFolderSeparator As String = "\"

On Error GoTo Err_Msg

'Gantilah nilai "D:\SoftwareAkuntansi" yang ada pada variabel strFolderName sesuai dengan lokasi database back-end.
  strFolderName = "D:\SoftwareAkuntansi" & cnFolderSeparator
'Bila nama file database back-end berbeda, gantilah nilai "Database_be.accdb" yang ada pada variabel strFileName
  strFileName = "Database_be.accdb"
  strProvider = "MS ACCESS"
'Isikan password bila file database yang ada di strFileName diproteksi dengan password
  strPassword = ""
  
  If strPassword <> vbNullString Then strPassword = ";PWD=" & strPassword
  
  strConnection = strProvider & strPassword
  strDbsName = strFolderName & strFileName
  Set dbs = OpenDatabase(strDbsName, False, False, strConnection)
Exit_Function:
  Exit Function
Err_Msg:
  MsgBox "Function bukaDatabaseBE, Error # " & Str(Err.Number) & ", source: " & Err.Source & _
  Chr(13) & Err.Description
  Resume Exit_Function
End Function
Private Function tutupDatabaseBE()
On Error GoTo Err_Msg
  dbs.Close
  Set dbs = Nothing
Exit_Function:
  Exit Function
Err_Msg:
  MsgBox "Function tutupDatabaseBE, Error # " & Str(Err.Number) & ", source: " & Err.Source & _
  Chr(13) & Err.Description
  Resume Exit_Function
End Function
Private Sub Form_Close()
  tutupDatabaseBE
End Sub
Private Sub Form_Open(Cancel As Integer)
  Dim rs As DAO.Recordset
  Dim fld As DAO.Field
  bukaDatabaseBE
  strSQL = "SELECT * FROM " & constNamaTabel & " ORDER BY KodeRek"

  getDbsOpen
  Set rs = bukaRecordset(strSQL, True)
  For Each fld In rs.Fields
    Controls(fld.Name).ControlSource = rs.Fields(fld.Name).Name
  Next fld
  Set Me.Recordset = rs
  If rs.RecordCount > 0 Then rs.MoveFirst
  Set rs = Nothing
End Sub
Pembaca dapat memperoleh sample file database back-end dan front-end dengan cara sbb:

  1. Ikuti blog Access Terapan di Facebook dengan mem-follow atau me-like FB page di https://www.facebook.com/AccessTerapan atau follow Google Blog Follower. Bagi yang tidak memfollow, permintaan (request) akan diabaikan.
  2. Kirim email ke admin yanto.e.subroto@gmail.com untuk diikutsertakan menjadi anggota grup Access Terapan. 
  3. Sebagai tanda bukti keanggotaan, admin grup Access Terapan akan mengirimkan email ke alamat yang dituju. 
  4. Selanjutnya, silakan download dengan mengklik link berikut ini:
    1. Database_be.zip yang merupakan Access Database back-end (nama file Database_be.accdb), dapat diinstall di server, PC desktop, dsb.
    2. DatabaseBC_fe.zip yang merupakan Access Database front-end (nama file DatabaseBC_be.accdb), dapat diinstall di client, PC desktop, dsb.
  5. Ikuti perintah yang ada dalam kode VBA di atas, pada baris komentar 'Gantilah nilai "D:\SoftwareAkuntansi" yang ada pada variabel strFolderName sesuai dengan lokasi database back-end.
  6. Bukalah form frmRekUtama dalam format Form View.
  7. Sebagai uji coba lakukan updating pada salah satu item seperti contoh gambar terakhir di atas. Data yang di-update akan langsung tersimpan.

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access