Skip to main content

Fungsi Untuk Menampilkan Nilai Field Dengan Primary Key Tertentu

Pada berbagai macam query, kita pasti menemukan pernyataan SQL SELECT yang sangat umum. Pernyataan SELECT pada SQL digunakan untuk menampilkan nilai satu atau lebih field dalam sebuah tabel. Supaya nilai field yang ditampilkan sesuai dengan keingin, kita bisa menyaring pernyataan SELECT dengan kriteria tertentu.
Gambar 1. Menampilkan nilai field secara umum

Dengan menggunakan VBA di Access, kita dapat membuat fungsi yang digunakan untuk menampilkan nilai field berdasarkan nilai dari primary key. Berikut ini fungsinya.
Function menampilkanNilaiField(strNamaField As String, strNamaSumber As String, _
                       strPrimaryKeyField As String, strNilaiPrimaryKey As Variant, _
                       Optional intOprSign As enumOperator = oprEqual) As String
'parameter:
'strNamaField         : Nama field yang nilainya ingin ditampilkan
'strNamaSumber        : Nama tabel/query dari strNamaField
'strPrimaryKeyField   : Field Primary Key dalam tabel strNamaSumber
'strNilaiPrimaryKey   : Nilai string dari Field Primary Key
'intSimbolOperator    : Simbol operator
  Dim rs As DAO.Recordset
On Error GoTo Err_Msg
  Dim strCriteria As String
  strCriteria = membuatKriteriaString(strPrimaryKeyField, strNamaSumber, strNilaiPrimaryKey, , intSimbolOperator)
  If strNilaiPrimaryKey <> vbNullString Then
    Set rs = membukaRecordset("SELECT " & strNamaField & " FROM " & strNamaSumber & _
            " WHERE " & strCriteria)
' Gunakan pernyataan If berikut ini
'    If rs.RecordCount > 0 Then menampilkanNilaiField = Nz(rs.Fields(0).Value, "")
' atau yang ini
    If (Not (rs.BOF And rs.EOF)) Then menampilkanNilaiField = Nz(rs.Fields(0).Value, "") 'statement ini digunakan untuk menghindari error berupa data yang blank (Error 3021).
  Else
    menampilkanNilaiField = vbNullString
  End If
Exit_Function:
  rs.Close
  Set rs = Nothing
  Exit Function
Err_Msg:
  MsgBox "Function menampilkanNilaiField, Error # " & str(Err.Number) & ", source: " & Err.Source & _
  Chr(13) & Err.Description
  Resume Exit_Function
End Function
Ada empat parameter yang wajib diisi dan satu yang sifatnya opsional:
  1. strNamaField, merupakan nama field yang nilainya ingin ditampilkan, sifatnya wajib
  2. strNamaSumber, merupakan nama tabel dari strNamaField, sifatnya wajib
  3. strPrimaryKeyField, merupakan nama field primary Key dalam tabel strNamaSumber, sifatnya wajib
  4. strNilaiPrimaryKey, merupakan nilai data dari strPrimaryKeyField, sifatnya wajib
  5. intSimbolOperator, merupakan operator string, sifatnya opsional, dengan nilai default 0
Untuk menjalankan fungsi di atas, maka ada beberapa fungsi yang sudah harus tersedia di modul Access. Fungsi itu adalah:
  • membukaDbs, yang digunakan untuk memastikan bahwa database sudah dalam posisi untuk dibuka dan diolah.
  • membukaRecordset, digunakan untuk membuka recordset dari sebuah tabel strNamaSumber.
  • membuatKriteriaString, yang digunakan untuk menuliskan string kriteria di pernyataan SQL.
Fungsi menampilkanNilaiField di atas masih bersifat umum. Kita bisa membuatnya menjadi lebih sederhana dan lebih spesifik untuk digunakan pada setiap modul yang berkaitan dengan tabel terntentu. Untuk itu, kita harus membuat fungsi baru yang dapat diaplikasikan ke tabel tertentu itu. Contohnya seperti fungsi berikut ini.
Function cariNamaRekening(strPrimaryKey As String) As Variant
  Const strNamaTabelSumber As String = "tblRekUtama"
  Const strNamaFieldPrimary As String = "KodeRek"
  cariNamaRekening = menampilkanNilaiField("NamaRek", strNamaTabelSumber, strNamaFieldPrimary, strPrimaryKey)
End Function
Bila ingin mengaplikasi lebih luas, maka kedua konstanta pada fungsi di atas, strNamaTabelSumber dan strNamaFieldPrimary, bisa dipindahkan ke bagian atas dari deklarasi sebuah modul tertentu.
Gambar 2. Fungsi untu menampilkan nilai field dibuat spesifik sesuai dengan kegiatan
Misalnya ada modul yang berkaitan dengan aktivas kode rekening di tabel tblRekUtama, maka kita bisa memindahkan kedua konstanta itu ke atas menjadi Private Const dan parameter/variabel strNamaField dideklarasikan di dalam fungsi seperti berikut ini.
Private Const strNamaTabelSumber As String = "tblRekUtama"
Private Const strNamaFieldPrimary As String = "KodeRek"

Function cariNamaRekening(strPrimaryKey As String) As Variant
  Dim strNamaField As String
  strNamaField = "NamaRek"
  cariNamaRekening = menampilkanNilaiField(strNamaField, strNamaTabelSumber, strNamaFieldPrimary, strPrimaryKey)
End Function
Function cariGrupRekening(strPrimaryKey As String) As Variant
  Dim strNamaField As String
  strNamaField = "NamaRek"
  cariGrupRekening = menampilkanNilaiField("Grup", strNamaTabelSumber, strNamaFieldPrimary, strPrimaryKey) 
End Function
Dengan menempatkan konstanta ke bagian atas deklarasi sebuah modul, program menjadi lebih simpel dan terlihat sistematis. Contoh eksekusi fungsi dapat dilihat di Gambar 2 di atas. Pada gambar 2, fungsi yang ada di Immediate Window tampak sederhana, kita hanya menuliskan cariNamaRekening("111") untuk mengetahui nama rekening yang memiliki kode 111 (Bank Lippo). Demikian pula untuk contoh di bawahnya, semua tampak sederhana.

Comments

Posting Terpopuler

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

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Fungsi Untuk Menghitung Pajak Penghasilan PPh 21 di MS Access