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.
  1. Function adaNilaiField(strNamaField As String, strNamaSumber As String, varNilaiFiled As VariantAs Boolean 'OK  
  2. 'parameters:  
  3. 'strNamaField         : Nama field yang ingin dicek  
  4. 'strNamaSumber        : tabel atau query di mana strNamaField berada  
  5. 'varNilaiFiled        : nilai field strNamaField yang ada di strNamaSumber  
  6.      
  7.   Dim rs As DAO.Recordset  
  8.   Dim strKriteria As String  
  9. On Error GoTo Err_Msg  
  10.   adaNilaiField = False  
  11.   strKriteria = membuatKriteriaString(strNamaField, strNamaSumber, varNilaiFiled)  
  12.   Set rs = membukaRecordset("SELECT " & strNamaField & " FROM " & strNamaSumber & _  
  13.           " WHERE " & strKriteria)  
  14.   If rs.RecordCount > 0 Then adaNilaiField = True  
  15. Exit_Function:  
  16.   rs.Close  
  17.   Set rs = Nothing  
  18.   Exit Function  
  19. Err_Msg:  
  20.   MsgBox "Function adaNilaiField, Error # " & str(Err.Number) & ", source: " & Err.Source & _  
  21.   Chr(13) & Err.Description  
  22.   Resume Exit_Function  
  23. End Function  
Alternatif 2.
  1. Function adaNilaiField(strNamaField As String, strNamaSumber As String, varNilaiFiled As VariantAs Boolean 'OK  
  2. 'parameters:  
  3. 'strNamaField         : Nama field yang ingin dicek  
  4. 'strNamaSumber        : tabel atau query di mana strNamaField berada  
  5. 'varNilaiFiled        : nilai field strNamaField yang ada di strNamaSumber  
  6.      
  7.   Dim rs As DAO.Recordset  
  8.   Dim strKriteria As String  
  9. On Error GoTo Err_Msg  
  10.   adaNilaiField = False  
  11.   strKriteria = membuatKriteriaString(strNamaField, strNamaSumber, varNilaiFiled)  
  12.   Set rs = membukaRecordset("SELECT COUNT(" & strNamaField & ") FROM " & strNamaSumber & _  
  13.           " WHERE " & strKriteria)  
  14.   If rs.Fields(0).Value > 0 Then adaNilaiField = True  
  15. Exit_Function:  
  16.   rs.Close  
  17.   Set rs = Nothing  
  18.   Exit Function  
  19. Err_Msg:  
  20.   MsgBox "Function adaNilaiField, Error # " & str(Err.Number) & ", source: " & Err.Source & _  
  21.   Chr(13) & Err.Description  
  22.   Resume Exit_Function  
  23. 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:
  1. ? membukaDbs  
  2.   
  3. ? adaNilaiField("KodeRek","TblRekUtama","611")  
  4. True  
  5.   
  6. ? adaNilaiField("KodeRek","TblRekUtama","618")  
  7. 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.
  1. Function adaKodeRek(strKodeRek As StringAs Boolean  
  2.   adaKodeRek = adaNilaiField("KodeRek""tblRekUtama", strKodeRek)  
  3. End Function  
  4.   
  5. Function adaUserId(strUserId As StringAs Boolean  
  6.   adaUserId = adaNilaiField("userId""tblUser_Users", strUserId)  
  7. 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:
  1. If adaKodeRek("611") then MsgBox "Kode Rekening ini sudah ada"  
  2. 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

Cara Mengatur dan Menggunakan ODBC untuk Mengakses Data Eksternal

Fungsi Untuk Membuka Database di Access VBA

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