Skip to main content

Fungsi Untuk Menjalankan Action Query di Access VBA

Di MS Access, action query adalah query yang mengubah data atau menyalin data. Action query berbeda dengan select query yang menghasilkan sekumpulan record. Dengan menggunakan action query, kita dapat menambah, menghapus, dan memperbaharui record dalam sebuah tabel. Selain itu, kita juga dapat membuat sebuah tabel.
Ada empat macam action query, yaitu:
  1. APPEND, query untuk menambah record baru di baris terakhir sebuah tabel. 
  2. DELETE, query untuk menghapus record yang memenuhi kriteria tertentu.
  3. MAKE-TABLE, query untuk membuat tabel baru.
  4. UPDATE, query untuk memperbarui record yang memenuhi kriteria tertentu.
VBA di Access pada dasarnya telah menyediakan metode untuk menjalankan action query, yaitu dengan menggunakan metode DoCmd.RunSQL. Nah, pada postingan ini, kita tidak menggunakan metode itu, tetapi membuat action query sendiri. Untuk menjalankan action query sendiri, kita harus membuat fungsi yang diberi nama jalankanActionQuery Adapun fungsi jalankanActionQuery adalah sebagai berikut:
Function jalankanActionQuery(strSql As String)
' Parameter:
' strSql = query dengan tipe query apa pun yang digunakan untuk membuat tabel, menambah,
' meng-update, maupun menghapus record.
On Error GoTo Err_Msg
    daoDbs.Execute strSql, dbFailOnError
Exit_Function:
  Exit Function
Err_Msg:
  MsgBox "Function jalankanActionQuery, Error # " & str(Err.Number) & ", source: " & Err.Source & _
  Chr(13) & Err.description
  Resume Exit_Function
End Function
Parameter strSql dalam fungsi jalankanActionQuery adalah pernyataan SQL (SQL statement) dengan tipe data string dan sifatnya wajib diisi. Fungsi ini hanya dapat dijalankan bila ada sebuah database yang dibuka. Database yang dibuka dinyatakan dengan menggunakan fungsi membukaDbs. Dengan demikian, kita harus memastikan terlebih dulu bahwa fungsi membukaDbs telah dijalankan. Jadi, urutan eksekusi fungsinya adalah sebagai berikut:
  1. membukaDbs
  2. jalankanActionQuery
Dalam fungsi jalankanActionQuery, ada object daoDbs yang harus diatur dengan menggunakan fungsi membukaDbs. Jika daoDbs belum diatur, pesan kesalahan dengan tipe run-time error #91 ditampilkan, yang berarti nilai daoDbs belum diatur.

Implementasi:

  1. Contoh berikut ini membuka database yang bernama daoDbs yang ditetapkan melalui fungsi membukaDbs dan menjalankan query untuk meng-update (UPDATE query) sebuah record di tabel yang bernama tblRekUtama, nama field NamaRek dan meng-update nilainya menjadi 'Kas Kecil Jakarta" dengan field kriteria adalah KodeRek dan nilai field-nya sama dengan '101' (tipe data Text).
    membukaDbs
    jalankanActionQuery "UPDATE tblRekUtama SET NamaRek='Kas Kecil Jakarta' WHERE KodeRek='101'"
  2. Contoh berikut ini membuka database yang bernama daoDbs yang ditetapkan melalui fungsi membukaDbs dan menjalankan query untuk menambah record baru (APPEND query) ke dalam tabel tblRekUtama, nama field-nya adalah KodeRek, NamaRek, dan Grup. Nilai dari masing-masing field berturut-turut adalah '110','Bank BMX',1.
    membukaDbs
    jalankanActionQuery "INSERT INTO tblRekUtama (KodeRek, NamaRek, Grup) VALUES('110','Bank BMX',1)"
  3. Contoh berikut ini membuka database yang bernama daoDbs yang ditetapkan melalui fungsi membukaDbs dan menjalankan query untuk membuat tabel baru (MAKE-TABLE query) yang bernama tblRekUtamaTemp, dan meng-copy record dari tblRekUtama yang mempunyai nilai Grup sama dengan '1' ke tabel tblRekUtamaTemp.
    membukaDbs
    jalankanActionQuery "SELECT tblRekUtama.* INTO tblRekUtamaTemp FROM tblRekUtama WHERE Grup='1';"
Hal yang perlu diingat di sini, nilai dan tipe data untuk semua field yang dinyatakan pada variabel strSQL harus sama. Jadi, misalnya, field dengan tipe data Text harus menggunakan ' ' (dua tanda petik tunggal, misalnya 'Hutang dagang', 'Kas', dan lain-lain) . Contoh lainnya, field dengan tipe data Date/Time harus menggunakan # # (dua tanda pagar, misalnya #12/31/2015#, #2/20/2016#, dan lain-lain). Jika tipe data dan nilai field tidak sesuai, muncul kesalahan tipe data (data type mismatch error).

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access