Skip to main content

Membuat Report di Database Front-end MS Access

Di aplikasi database Access, kita tidak bisa menampilkan report menggunakan recordset dalam lingkungan database front-end yang tidak mempunyai sumber tabel/query. Bila sumber tabel/query berada di database back-end, sedangkan di front-end tidak ada sama sekali, maka saat kita menggunakan recordset sebagai sumber datanya, Access akan menampilkan pesan kesalahan yang terjadi saat report dibuka.



Pesan kesalahan berupa run time error yang ditampilkan adalah sebagai berikut:

This feature is only available in an ADP

Yang artinya, recordset hanya bisa digunakan pada file database Access dengan ekstensi .adp. Pada gambar di atas, file database Access dengan nama Database_fe.accdb hanya berisi report tanpa Record Source pada propertinya dan tanpa Control Source pada reprot control. Pada gambar itu juga, tampak bahwa kita tidak menggunakan tabel atau query apa pun dalam database front-end itu. Saat report yang bernama rptRekUtama seperti tampak di Access Navigation Pane itu dibuka, muncul pesan kesalahan run time error.

Walaupun tanpa tabel atau query apa pun dalam database front-end, kita bisa membuat report seperti yang diinginkan.Salah satu prinsip dasar dalam sebuah database front-end adalah mengamankan data yang ada di dalam database back-end. Nah untuk mengamankan data pada database back-end, kita hanya akan memuat data saat dibutuhkan di layar front-end. Jadi, saat kita membuka report rptRekUtam, tabel atau query akan ditautkan ke record source dari report itu. Dengan tidak adalnya tabel atau query pada front-end, maka kita harus menggunakan database eksternal untuk mengaksesnya.

Contoh cara membuat report untuk database front-end


  1. Buat database back-end seperti pada halaman Download File (item yang harus di dowload adalah Download Database).
  2. Selanjutnya, kita akan membuat database front-end. Untuk itu, tutuplah file Database_be.accdb lalu buatlah file database Access dengan nama DatabaseReport_fe.accdb.
  3. Karena ingin mengambil properti field yang ada di tabel, maka kita harus membuat link database agar properti tabel 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, seperti pada posting di tautan ini:
  4. Bila Link table sudah dimuat di bagian Tables dari Access Navigation Pane, arahkanlah kursor ke tabel tblRekUtama, seperti terlihat di bawah.
  5. Dari daftar link table seperti di atas, kita bisa membuat aplikasi front-end seperti yang dibahas di awal.
  6. Selanjutnya, kita akan membuat report kasar dari link table yang tersedia itu dengan menggunakan tabel tblRekUtama seperti di atas.
  7. Setelah memilih tabel, lalu buatlah sebuah report sederhana dengan menggunakan cara Membuat Laporan Menggunakan Tombol Report. Namailah report yang baru dibuat itu: rptRekUtama. Hasilnya tampak seperti gambar di bawah.
  8. Bukalah rptRekUtama dalam format Design View.
  9. Kosongkanlah properti Record Source dari report rptRekUtama (unbound record source)
  10. Kosongkanlah Control Source dari report control yang ada di dalam report rptRekUtama (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.
  11. Hasil akhir Design View dari report akan terlihat di gambar bawah:
  12. Bukalah report module dari rptRekUtama. Kita dapat membukanya dengan menggunakan event procedure report On Open.
  13. Salinlah kode VBA di bawah (atau tab Kode VBA di sisi kanan) ke report module Report_rptRekUtama
Kode VBA pada report module Report_rptRekUtama
  1. Option Compare Database  
  2. Private dbs As DAO.Database  
  3. Private Const constNamaTabel As String = "tblRekUtama"  
  4. Private strSQL As String, strNamaFolder As String  
  5. Private Enum intPerlakuan  
  6.   tampilkanData = 1  
  7.   tambahData = 2  
  8.   editData = 3  
  9. End Enum  
  10. Private Function bukaDatabaseBE()  
  11.   Dim strFolderName As String  
  12.   Dim strDbsName, strFileName As String  
  13.   Dim strProvider As String  
  14.   Dim strPassword As String  
  15.   Dim strConnection As String  
  16.     
  17.   Const cnFolderSeparator As String = "\"  
  18.   
  19. On Error GoTo Err_Msg  
  20.   
  21. 'Gantilah nilai "D:\SoftwareAkuntansi" yang ada pada variabel strFolderName sesuai dengan lokasi database back-end.  
  22.   strFolderName = "D:\SoftwareAkuntansi\ElexMedia3\BonusCD\Draft" & cnFolderSeparator  
  23. 'Bila nama file database back-end berbeda, gantilah nilai "Database_be.accdb" yang ada pada variabel strFileName  
  24.   strFileName = "Database_be.accdb"  
  25.   strProvider = "MS ACCESS"  
  26. 'Isikan password bila file database yang ada di strFileName diproteksi dengan password  
  27.   strPassword = ""  
  28.   If strPassword <> vbNullString Then strPassword = ";PWD=" & strPassword  
  29.     
  30.   strConnection = strProvider & strPassword  
  31.   strDbsName = strFolderName & strFileName  
  32.   Set dbs = OpenDatabase(strDbsName, FalseFalse, strConnection)  
  33.   strNamaFolder = "'" & strDbsName & "' " & "'" & strConnection & "' "  
  34. Exit_Function:  
  35.   Exit Function  
  36. Err_Msg:  
  37.   MsgBox "Function bukaDatabaseBE, Error # " & Str(Err.Number) & ", source: " & Err.Source & _  
  38.   Chr(13) & Err.Description  
  39.   Resume Exit_Function  
  40. End Function  
  41. Private Function bukaRecordset(strSQL As StringOptional boolForEdit As BooleanAs DAO.Recordset  
  42.   Dim rstRecordset As DAO.Recordset  
  43. On Error GoTo Err_Msg  
  44.   If boolForEdit Then  
  45.     Set rstRecordset = dbs.OpenRecordset(strSQL, dbOpenDynaset)  
  46.   Else  
  47.     Set rstRecordset = dbs.OpenRecordset(strSQL, dbOpenSnapshot)  
  48.   End If  
  49.   Set bukaRecordset = rstRecordset  
  50.     
  51. Exit_Function:  
  52.   Exit Function  
  53. Err_Msg:  
  54.   MsgBox "Function bukaRecordset, Error # " & Str(Err.Number) & ", source: " & Err.Source & _  
  55.   Chr(13) & Err.Description  
  56.   Resume Exit_Function  
  57. End Function  
  58. Private Function lakukanQuery()  
  59.   Dim rs As DAO.Recordset  
  60.   Dim fld As Field  
  61.   Dim ctl As Control  
  62.   Dim strSqlStat As String  
  63.     
  64. On Error GoTo Err_Msg  
  65.   strSqlStat = strSQL  
  66.   Set rs = bukaRecordset(strSqlStat)  
  67.   For Each ctl In Me  
  68.     For Each fld In rs.Fields  
  69.       If ctl.Name = fld.Name Then  
  70.         Controls(ctl.Name).ControlSource = fld.Name  
  71.       End If  
  72.     Next fld  
  73.   Next ctl  
  74.   rs.Close  
  75.   Set rs = Nothing  
  76. Exit_Function:  
  77.   Exit Function  
  78. Err_Msg:  
  79.   MsgBox "Function lakukanQuery, Error # " & Str(Err.Number) & ", source: " & Err.Source & _  
  80.   Chr(13) & Err.Description  
  81.   Resume Exit_Function  
  82. End Function  
  83. Private Sub Report_Open(Cancel As Integer)  
  84.   bukaDatabaseBE  
  85.   strSQL = "SELECT * FROM " & constNamaTabel  
  86.   Me.RecordSource = strSQL & " IN " & strNamaFolder  
  87.   lakukanQuery  
  88. End Sub  
Pembaca dapat memperoleh sample file Membuat Report di Database Front-end MS Access 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. DatabaseReport_fe.zip yang merupakan Access Database front-end (nama file DatabaseReport_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 report rptRekUtama dalam format Report View atau Print Preview.

Comments

Posting Terpopuler

Cara Mengatur dan Menggunakan ODBC untuk Mengakses Data Eksternal

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

Fungsi Untuk Membuka Database di Access VBA