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.
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
- Buat database back-end seperti pada halaman Download File (item yang harus di dowload adalah Download Database).
- Selanjutnya, kita akan membuat database front-end. Untuk itu, tutuplah file Database_be.accdb lalu buatlah file database Access dengan nama DatabaseReport_fe.accdb.
- 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:
- Bila Link table sudah dimuat di bagian Tables dari Access Navigation Pane, arahkanlah kursor ke tabel tblRekUtama, seperti terlihat di bawah.
- Dari daftar link table seperti di atas, kita bisa membuat aplikasi front-end seperti yang dibahas di awal.
- Selanjutnya, kita akan membuat report kasar dari link table yang tersedia itu dengan menggunakan tabel tblRekUtama seperti di atas.
- 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.
- Bukalah rptRekUtama dalam format Design View.
- Kosongkanlah properti Record Source dari report rptRekUtama (unbound record source)
- 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.
- Hasil akhir Design View dari report akan terlihat di gambar bawah:
- Bukalah report module dari rptRekUtama. Kita dapat membukanya dengan menggunakan event procedure report On Open.
- Salinlah kode VBA di bawah (atau tab Kode VBA di sisi kanan) ke report module Report_rptRekUtama
Kode VBA pada report module Report_rptRekUtama
Option Compare Database Private dbs As DAO.Database Private Const constNamaTabel As String = "tblRekUtama" Private strSQL As String, strNamaFolder As String Private Enum intPerlakuan tampilkanData = 1 tambahData = 2 editData = 3 End Enum 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\ElexMedia3\BonusCD\Draft" & 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) strNamaFolder = "'" & strDbsName & "' " & "'" & 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 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 lakukanQuery() Dim rs As DAO.Recordset Dim fld As Field Dim ctl As Control Dim strSqlStat As String On Error GoTo Err_Msg strSqlStat = strSQL Set rs = bukaRecordset(strSqlStat) For Each ctl In Me For Each fld In rs.Fields If ctl.Name = fld.Name Then Controls(ctl.Name).ControlSource = fld.Name End If Next fld Next ctl rs.Close Set rs = Nothing Exit_Function: Exit Function Err_Msg: MsgBox "Function lakukanQuery, Error # " & Str(Err.Number) & ", source: " & Err.Source & _ Chr(13) & Err.Description Resume Exit_Function End Function Private Sub Report_Open(Cancel As Integer) bukaDatabaseBE strSQL = "SELECT * FROM " & constNamaTabel Me.RecordSource = strSQL & " IN " & strNamaFolder lakukanQuery End Sub
Pembaca dapat memperoleh sample file Membuat Report di Database Front-end MS Access dengan cara sbb:
- 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.
- Kirim email ke admin yanto.e.subroto@gmail.com
untuk diikutsertakan menjadi anggota grup Access Terapan.
- Sebagai tanda bukti keanggotaan, admin grup Access Terapan akan mengirimkan email ke alamat yang dituju.
- Selanjutnya, silakan download
dengan mengklik link berikut ini:
- Database_be.zip yang merupakan Access Database back-end (nama file Database_be.accdb), dapat diinstall di server, PC desktop, dsb.
- DatabaseReport_fe.zip yang merupakan Access Database front-end (nama file DatabaseReport_be.accdb), dapat diinstall di client, PC desktop, dsb.
- 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.
- Bukalah report rptRekUtama dalam format Report View atau Print Preview.
Comments
Post a Comment