Skip to main content

Fungsi Untuk Mengecek Keberadaan Nilai Sebuah Field

Pada front-end yang database back-end benar-benar terpisah, kita tidak bisa memasukkan nilai primary key seperti layaknya menggunakan linked-table di Access. Saat menggunakan link-table di Acccess, Access langsung tahu seandainya kita memasukkan nilai primary key yang sama dengan nilai yang tersimpan di linke-table.

Bila database back-end terpisah dari front-end, maka kita harus memastikan terlebih dahulu, apakah nilai primay key yang kita masukkan sudah ada di tabel atau belum. Bila sudah, maka Access akan memberitahu kita untuk mengganti nilai primary key dan bila belum, Access menambahkan data ke tabel dan menyimpannya sebagai data baru. Dengan demikian kita bisa meminimalkan error yang terjadi saat pemasukkan data.

Untuk memastikan apakah nilai primay key sudah ada di tabel atau belum, kita dapat membuat fungsi yang bisa mengecek keberadaan nilai primary key sebuah field. Fungsi ini, selain digunakan untuk mengecek keberadaan nilai primary key sebuah field, juga bisa digunakan untuk mengecek keberadaan nilai field yang bukan primary key. Berikut ini adalah fungsinya.
Alternatif 1.
Function adaNilaiField(strNamaField As String, strNamaSumber As String, varNilaiFiled As Variant) As Boolean 'OK
'parameters:
'strNamaField         : Nama field yang ingin dicek
'strNamaSumber        : tabel atau query di mana strNamaField berada
'varNilaiFiled        : nilai field strNamaField yang ada di strNamaSumber
   
  Dim rs As DAO.Recordset
  Dim strKriteria As String
On Error GoTo Err_Msg
  adaNilaiField = False
  strKriteria = membuatKriteriaString(strNamaField, strNamaSumber, varNilaiFiled)
  Set rs = membukaRecordset("SELECT " & strNamaField & " FROM " & strNamaSumber & _
          " WHERE " & strKriteria)
  If rs.RecordCount > 0 Then adaNilaiField = True
Exit_Function:
  rs.Close
  Set rs = Nothing
  Exit Function
Err_Msg:
  MsgBox "Function adaNilaiField, Error # " & str(Err.Number) & ", source: " & Err.Source & _
  Chr(13) & Err.Description
  Resume Exit_Function
End Function
Alternatif 2.
Function adaNilaiField(strNamaField As String, strNamaSumber As String, varNilaiFiled As Variant) As Boolean 'OK
'parameters:
'strNamaField         : Nama field yang ingin dicek
'strNamaSumber        : tabel atau query di mana strNamaField berada
'varNilaiFiled        : nilai field strNamaField yang ada di strNamaSumber
   
  Dim rs As DAO.Recordset
  Dim strKriteria As String
On Error GoTo Err_Msg
  adaNilaiField = False
  strKriteria = membuatKriteriaString(strNamaField, strNamaSumber, varNilaiFiled)
  Set rs = membukaRecordset("SELECT COUNT(" & strNamaField & ") FROM " & strNamaSumber & _
          " WHERE " & strKriteria)
  If rs.Fields(0).Value > 0 Then adaNilaiField = True
Exit_Function:
  rs.Close
  Set rs = Nothing
  Exit Function
Err_Msg:
  MsgBox "Function adaNilaiField, Error # " & str(Err.Number) & ", source: " & Err.Source & _
  Chr(13) & Err.Description
  Resume Exit_Function
End Function
Penerapan fungsi ini dilakukan saat ingin memasukkan nilai primary key dari database front-end ke back-end. Pengecekan dilakukan di front-end. Bila tidak ada nilai varNilaiField, maka pengisian data dapa dilanjutkan sampai satu record dalam tabel terisi semua. selanjutnya, bila satu record dalam tabel terisi semua, kita bisa menyimpannya ke database back-end. Jika ingin mencoba di Immediate Window, caranya seperti ini:
? membukaDbs

? adaNilaiField("KodeRek","TblRekUtama","611")
True

? adaNilaiField("KodeRek","TblRekUtama","618")
False
Pada contoh Immediate Window di atas, KodeRek 611 sudah tersimpan di tabel, sedangkan KodeRek 618 belum tersimpan di tabel.
Pengecekan nilai field KodeRek dengan nilai 611 pada tabel tblRekUtama menggunakan fungsi adaNilaiField
Biasanya, fungsi pengecekannya seperti ini sering kita lakukan pada berbagai macam tabel. Untuk itu, kita bisa membuat fungsi yang dapat menyederhanakan fungsi adaNilaiField di atas sesuai dengan tabel yang diiginkan.
Function adaKodeRek(strKodeRek As String) As Boolean
  adaKodeRek = adaNilaiField("KodeRek", "tblRekUtama", strKodeRek)
End Function

Function adaUserId(strUserId As String) As Boolean
  adaUserId = adaNilaiField("userId", "tblUser_Users", strUserId)
End Function
Fungsi adaNilaiField yang telah dispesifikasikan ke kegiatan tertentu
 Dengan menggunakan fungsi adaKodeRek, kita bisa membuat pernyataan If...Then yang mudah dipahami oleh orang awam:
If adaKodeRek("611") then MsgBox "Kode Rekening ini sudah ada"
If not adaKodeRek("618") then MsgBox "Kode Rekening belum ada"
Dengan fungsi seperti di atas, pemrograman VBA menjadi terlihat sederhana dan mudah dipahami oleh pemrogram yang masih awam.

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