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.
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.
Dengan menggunakan fungsi adaKodeRek, kita bisa membuat pernyataan If...Then yang mudah dipahami oleh orang awam:
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 FunctionAlternatif 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 FunctionPenerapan 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") FalsePada 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 |
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 |
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
Post a Comment