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