Skip to main content

Membuat Fungsi Untuk Membuka Recordset di Access VBA

Kita dapat membuat fungsi sendiri yang digunakan untuk membuka sekumpulan recordset. Sekumpulan recordset itu mungkin bisa berasal dari sebuah tabel atau query yang dibentuk dari satu atau beberapa tabel sekaligus.

Dalam posting ini, kita dapat memberi nama fungsi itu membukaRecordset, menggunakan metode pada VBA yang disebut OpenRecordset. Jadi, fungsi membukaRecordset digunakan untuk membuka sekumpulan record yang berasal dari sebuah tabel atau query. Sekumpulan recordset yang terbuka itu kemudian bisa ditampilkan di layar komputer, Selain itu, kita juga bisa mengatur recordset yang terbuka sebagai sekumpulan record yang hanya bisa dibaca saja atau sekaligus bisa diedit.

Ada dua parameter yang digunakan pada fungsi membukaRecordset. Kedua parameter itu adalah strSql dan boolUntukEdit. Parameter strSql adalah pernyataan SQL yang bertipe data string, sifatnya wajib untuk diisi. Sedangkan parameter boolUntukEdit bersifat opsional, dengan nilai defaultnya False. Artinya, sekumpulan record yang terbuka ditampilkan hanya untuk dibaca saja. Jika sekumpulan record itu ingin dibaca dan diedit, maka kita memberi nilai True untuk parameter boolUntukEdit.

Fungsi membukaRecordset adalah sebagai berikut:
Function membukaRecordset(strSql As String, Optional boolUntukEdit As Boolean) As DAO.Recordset 'OK
' Parameter:
' strSql      = merupakan query SELECT (SELECT query) yang digunakan untuk membuka recordset
' boolUntukEdit = Opsional, ekspresi boolean yang menunjukkan apakah
'               SELECT query hanya digunakan untuk membaca record
'               atau untuk mengedit dan menyimpan record.
'
' Jika boolUntukEdit = True maka record bisa diedit atau disimpan.
  Dim rst As DAO.Recordset
On Error GoTo Err_Msg
  If boolUntukEdit Then
    Set rst = daoDbs.OpenRecordset(strSql, dbOpenDynaset)
  Else
    Set rst = daoDbs.OpenRecordset(strSql, dbOpenSnapshot)
  End If
  Set membukaRecordset = rst
Exit_Function:
  Exit Function
Err_Msg:
  MsgBox "Function membukaRecordset, Error # " & str(Err.Number) & ", source: " & Err.Source & _
  Chr(13) & Err.description
  Resume Exit_Function
End Function
Fungsi membukaRecordset hanya bisa dijalankan bila fungsi membukaDbs dijalankan terlebih dahulu. Jadi, kita harus memastikan bahwa fungsi membukaDbs sudah dijalankan. Dengan demikian, urutannya adalah sebagai berikut:
  1. membukaDbs
  2. membukaRecordset
Dalam fungsi membukaRecordset, ada objek database yang bernama daoDbs yang harus diatur dengan menggunakan fungsi membukaDbs. Jika objek daoDbs tidak diatur terlebih dahulu, Access akan menampilkan pesan kesalahan "run-time error #91", yang menyatakan bahwa nilai objek daoDbs belum diset (diatur).

Implementasi:


Kita dapat mengaplikasikan fungsi membukaRecordset di database front-end yang tidak memiliki sebuah tabel atau query di dalamnya. Contoh berikut ini adalah fungsi membukaRecordset yang digunakan untuk menampilkan sepuluh record pertama dari field yang bernama KodeRek pada tabel tblRekUtama.  
Function contohMembukaRecordset()
  Dim strSql As String
  Dim rst As DAO.Recordset
  Dim fld As DAO.Fields
  
  strSql = "SELECT * FROM tblRekUtama"
  
  membukaDbs
  
  Set rst = membukaRecordset(strSql)
  Do While Not rst.EOF
    Debug.Print "Record Number: " & rst.AbsolutePosition + 1 & ", " & _
      rst.Fields(0).name & ": " & rst.Fields(0).Value
    If rst.AbsolutePosition = 9 Then Exit Function
    rst.MoveNext
  Loop
rst.Close
  Set rst = Nothing
  
  menutupDbs
End Function
Saat dijalankan di Immediate Window, hasilnya adalah sebagai berikut:
Gambar 2 Simulasi membuka recordset

Ingat, sebelum membuka recordset dengan menggunakan fungsi membukaRecordset, database harus dibuka lebih dahulu dengan menggunakan fungsi membukaDbs seperti contoh di atas.

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Fungsi Untuk Menghitung Pajak Penghasilan PPh 21 di MS Access

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