Pada situasi tertentu, saat membuka database front-end, kita mungkin menggunakan record source sebuah form yang terhubung ke database back-end. MS Access memang menyediakan tabel yang bisa terhubung (linked table) yang dapat digunakan sebagai record source sebuah form. Masalahnya, tabel itu dalam keadaan terlihat di Navigation Pane.
Meskipun bisa disembunyikan, menggunakan database eksternal dalam bentuk linked table cukup berisiko. Kita tidak ingin tabel yang bersumber dari database back-end ditampilkan melalui Navigation Pane, tujuannya, untuk menghindari pengguna yang mungkin membuka tabel itu secara langsung.
Unttuk menghindari penggunaan linked table, kita dapat menghubungkan database front-end ke database eksternal yang akan dijadikan sumber data pada sebuah form dengan menuliskan kode VBA. Bila suatu saat database front-end dikonversi dari .accdb ke .accde, maka menuliskan kode VBA yang mengaitkan sumber record dari database eksternal ke form adalah pilihan terbaik dan paling aman. Pengguna tidak akan tahu, tabel apa yang sedang terbuka dalam sebuah form. Kita hanya perlu menambahkan sumber database eksternal dan string koneksi yang digunakan untuk membuat tabel atau query yang di-bind ke record source sebuah form atau report.
Untuk mengatur sumber database eksternal dan string koneksi, kita bisa membuat fungsi sendiri yang diberi nama cariDbsEksternal. Hasil dari fungsi itu berupa nilai string yang menunjukkan nama path file database dan string koneksi.
Adapun fungsi cariDbsEksternal adalah sebagai berikut:
Pada fungsi di atas, sumber database berupa nama path file yang didapat menggunakan fungsi
lokasiDatabase , sedangkan string koneksi didapat menggunakan fungsi cariDbsConString . Jadi, supaya cariDbsEksternal bisa berfungsi, maka kedua fungsi itu harus ada di modul VBA di Access.
Jika fungsi cariDbsEksternal dijalankan melalui Immediate Window, hasilnya sebagai berikut:
Kita dapat menaruh atau mengaitkan SQL statement di atas dalam properti record source yang ada di form maupun report. Jika menaruh di dalam form, maka record source harus diisikan saat sebuah form terbuka dengan menggunakan event procedure form on open. Selain itu, mengaitkan SQL statement di atas juga bisa dilakukan saat event procedure on click, after update, dan lain-lain.
Jika menaruh di dalam report, maka record source harus diisikan saat report terbuka dengan menggunakan event procedure report on open.
Meskipun bisa disembunyikan, menggunakan database eksternal dalam bentuk linked table cukup berisiko. Kita tidak ingin tabel yang bersumber dari database back-end ditampilkan melalui Navigation Pane, tujuannya, untuk menghindari pengguna yang mungkin membuka tabel itu secara langsung.
Unttuk menghindari penggunaan linked table, kita dapat menghubungkan database front-end ke database eksternal yang akan dijadikan sumber data pada sebuah form dengan menuliskan kode VBA. Bila suatu saat database front-end dikonversi dari .accdb ke .accde, maka menuliskan kode VBA yang mengaitkan sumber record dari database eksternal ke form adalah pilihan terbaik dan paling aman. Pengguna tidak akan tahu, tabel apa yang sedang terbuka dalam sebuah form. Kita hanya perlu menambahkan sumber database eksternal dan string koneksi yang digunakan untuk membuat tabel atau query yang di-bind ke record source sebuah form atau report.
Untuk mengatur sumber database eksternal dan string koneksi, kita bisa membuat fungsi sendiri yang diberi nama cariDbsEksternal. Hasil dari fungsi itu berupa nilai string yang menunjukkan nama path file database dan string koneksi.
Adapun fungsi cariDbsEksternal adalah sebagai berikut:
Function cariDbsEksternal() As String On Error GoTo Err_Msg cariDbsEksternal = "[Database=" & lokasiDatabase & ";" & cariDbsConString & "]" Exit_Function: Exit Function Err_Msg: MsgBox "Function cariDbsEksternal, Error # " & str(Err.Number) & ", source: " & Err.Source & _ Chr(13) & Err.description Resume Exit_Function End Function
Pada fungsi di atas, sumber database berupa nama path file yang didapat menggunakan fungsi
lokasiDatabase , sedangkan string koneksi didapat menggunakan fungsi cariDbsConString . Jadi, supaya cariDbsEksternal bisa berfungsi, maka kedua fungsi itu harus ada di modul VBA di Access.
Implementasi:
?cariDbsEksternal [Database=D:\Access\Database_be.accdb;MS ACCESS;PWD=abcd]Misalnya, kita menggunakan database back-end yang berisi tabel yang bernama tblRekUtama. Untuk memuat data di front-end, kita menuliskan SQL dalam kode VBA sebagai berikut:
?"SELECT * FROM " & cariDbsEksternal & ".tblRekUtama" SELECT * FROM [Database=D:\Access\Database_be.accdb;MS ACCESS;PWD=abcd].tblRekUtamaatau
?"SELECT * FROM tblRekUtama IN '' " & cariDbsEksternal SELECT * FROM tblRekUtama IN '' [Database=D:\Access\Database_be.accdb;MS ACCESS;PWD=abcd]Sebagai uji coba, kita dapat membuat sebuah query di database front-end. Caranya, klik saja tombol Create > Query > Design View. Selanjutnya, ubah viewnya ke SQL View, dan kemudian, salinlah SQL di atas ke dalam SQL View. Kita dapat melihat hasilnya dengan beralih ke Datasheet View.
Kita dapat menaruh atau mengaitkan SQL statement di atas dalam properti record source yang ada di form maupun report. Jika menaruh di dalam form, maka record source harus diisikan saat sebuah form terbuka dengan menggunakan event procedure form on open. Selain itu, mengaitkan SQL statement di atas juga bisa dilakukan saat event procedure on click, after update, dan lain-lain.
Jika menaruh di dalam report, maka record source harus diisikan saat report terbuka dengan menggunakan event procedure report on open.
Comments
Post a Comment