Skip to main content

Menampilkan Properti Field Tabel Dengan Menggunakan VBA

Pada situasi tertentu, selain nama field tabel, seorang admin terkadang ingin mengetahui properti dari field yang ada di sebuah tabel. Field sebuah tabel, selain nama field itu sendiri, terdiri dari banyak properti. Jika membuka desain tabel, maka kita akan mengetahui ada banyak properti field tabel itu. Properti field misalnya, tipe data (apakah text, number, date/time, dsb.), deskripis, ukuran (size), default value, validation rule, dan sebagainya.
Untuk memudahkan mengakses field tabel tanpa membuka langsung tabel yang bersangkutan, kita dapat membuat interface yang berisi properti field apa saja yang ada dalam field tabel. Membuat interface melalui sebuah form memberikan keuntungan dari sisi keamanan, karena menghindarkan tabel dalam database dari tangan-tangan jahil yang ingin mengutak-utik isi tabel. Cara membuatnya adalah sebagai berikut:
Gambar 1 Design View menampilkan properti field suatu tabel
  1. Untuk dapat memahami langkah di bawah, kita harus memahami lebih dahulu Bagian A pada Gambar 1 di atas. Kita harus membuat terlebih dahulu daftar field yang ada di sebuah tabel seperti terlihat di Bagian A dari gambar di atas. Untuk Bagian A, gunakan form yang ada di posting dengan judul Menampilkan Nama Field Tabel Dengan Menggunakan Kode VBA. Jadi pastikan bahwa kita telah membuat form itu karena akan digunakan untuk menambahkan form control yang ada di bagain B seperti di bawah ini.
  2. Untuk Bagian B, tambahkanlah form control berikut ini:
    1. List Box (form control) di bawah list box listTabel dengan properti sbb:
      1. Name= listPropertiField
      2. Control Source= Kosongkan
      3. Row Source Type=Value List
      4. Row Source = Kosongkan
      5. Column Count=2
      6. Column Widths=1.5”;6”
      7. Width= 7.5"
      8. Height= 1.7"
    2. Label untuk list box listPropertiField di atas:
      1. Name= lblPropertiField,
      2. Caption=Field Properties
  3. Aturlah properti list box listTabel After Update=[Event Procedure], lihat nomor 4.
  4. Isikanlah kode VBA berikut ini ke dalam class (form) module:
    Private Sub listTabel_AfterUpdate()
      Me.listPropertiField.RowSource = TampilkanFieldProperty(Me.nmTabel, Me.listTabel)
      Me.lblPropertiField.Caption = "Field properties " & Me.listTabel
    End Sub
Untuk Selanjutnya, buatlah modul standar (Standard Module) terpisah, melalui tab menu Create, grup Other, dan pilih Module. Simpanlan modul ini dengan nama Module1, lalu isikan kode VBA berikut ini ke dalamnya.
Function TampilkanFieldProperty(strTabel, strNamaField As String) As String
  Dim dbs As DAO.Database
  Dim dfTabel As DAO.TableDef
  Dim nmField As DAO.Field2
  Dim strp() As String
  Dim n As Integer
  Dim strNamaTabel, strFieldProperty, strDesc As String
On Error GoTo Err_Msg
  
  strNamaTabel = strTabel
  
  Set dbs = CurrentDb()
  Set dfTabel = dbs.TableDefs(strNamaTabel)
  
  For Each nmField In dfTabel.Fields
    If nmField.Name = strNamaField Then
' Tambahkan properti field yang kita inginkan di bawah ini
' Tanda "& _" berarti kode perintah masih dilanjutkan di baris berikutnya.
' Bila kode itu tidak ada, maka kode perintah sudah selesai.
      strFieldProperty = "Properti;Nilai atau Deskripsi" & _
                          ";Caption;" & TampilkanProperty(strTabel, strNamaField, "Caption") & _
                          ";Type;" & TampilkanProperty(strTabel, strNamaField, "Type") & _
                          ";Description;""" & TampilkanProperty(strTabel, strNamaField, "Description") & """" & _
                          ";Size;" & TampilkanProperty(strTabel, strNamaField, "Size") & _
                          ";Format;" & TampilkanProperty(strTabel, strNamaField, "Format") & _
                          ";Display Control;""" & TampilkanProperty(strTabel, strNamaField, "DisplayControl") & """" & _
                          ";Default Value;""" & TampilkanProperty(strTabel, strNamaField, "DefaultValue") & """" & _
                          ";Validation Rule;""" & TampilkanProperty(strTabel, strNamaField, "ValidationRule") & """" & _
                          ";Validation Text;""" & TampilkanProperty(strTabel, strNamaField, "ValidationText") & """"
      Exit For
    End If
  Next nmField
  TampilkanFieldProperty = strFieldProperty
Exit_Function:
  Exit Function
Err_Msg:
  Resume Exit_Function
End Function

Function TampilkanProperty(strTabel, strNamaField, strNamaProperti As String) As String
  Dim dbs As DAO.Database
  Dim dfTabel As DAO.TableDef
  Dim nmField As DAO.Field2
  Dim strp() As String
  Dim n As Integer
  Dim strNamaTabel, strFieldProperty, strDesc As String
On Error GoTo Err_Msg
  
  strNamaTabel = strTabel
  
  Set dbs = CurrentDb()
  Set dfTabel = dbs.TableDefs(strNamaTabel)
  
  For Each nmField In dfTabel.Fields
    If nmField.Name = strNamaField Then
      Select Case strNamaProperti
        Case "DisplayControl": strDesc = NamaTipe(nmField.Properties(strNamaProperti))
        Case "Type": strDesc = NamaTipe(nmField.Type)
        Case "Size": strDesc = nmField.Size
        Case Else: strDesc = nmField.Properties(strNamaProperti)
      End Select
      strFieldProperty = strDesc
      Exit For
    End If
  Next nmField
  TampilkanProperty = strFieldProperty
Exit_Function:
  Exit Function
Err_Msg:
  Resume Exit_Function
End Function

Function NamaTipe(intTipe As Integer) As String
  Select Case intTipe
    Case acComboBox: NamaTipe = "Combo Box"
    Case acListBox: NamaTipe = "List Box"
    Case acTextBox: NamaTipe = "Text Box"
    Case dbText: NamaTipe = "Text"
    Case dbInteger: NamaTipe = "Number - Integer"
    Case dbLong: NamaTipe = "Number - Long Integer"
    Case dbDate: NamaTipe = "Date/Time"
    Case dbBoolean: NamaTipe = "Yes/No"
    Case dbByte: NamaTipe = "Number - Byte"
    Case dbDecimal: NamaTipe = "Number - Decimal"
    Case dbDouble: NamaTipe = "Number - Double"
    Case dbSingle: NamaTipe = "Number - Single"
    Case dbMemo: NamaTipe = "Memo"
    Case dbCurrency: NamaTipe = "Currency"
    Case dbLongBinary: NamaTipe = "OLE Object"
    Case dbChar: NamaTipe = "Char"
    Case dbBigInt: NamaTipe = "Big Integer"
    Case dbNumeric: NamaTipe = "Numeric"
    Case dbBinary: NamaTipe = "Binary"
    Case dbFloat: NamaTipe = "Float"
    Case dbGUID: NamaTipe = "GUID"
    Case dbTime: NamaTipe = "Time"
    Case dbTimeStamp: NamaTipe = "Time Stamp"
    Case dbVarBinary: NamaTipe = "VarBinary"
    Case Else: NamaTipe = "Tak Ada Dalam Daftar"
  End Select
End Function
Penjelasan:

Ada tiga fungsi yang kita buat. Pertama adalah fungsi NamaTipe yang digunakan untuk mengkonversi nilai dari suatu properti field ke dalam konstanta yang sudah built-in di Access, Sebagai contoh, field dengan tipe Number-Field Size= Long Integer mempunyai nilai 4 dengan konstanta dbLong,  field dengan tipe Text mempunyai nilai 10 dengan konstanta dbText, dan seterusnya.

Fungsi kedua adalah fungsi TampilkanProperty yang digunakan untuk menampilkan properti field dalam tabel. Sebagai tambahan, fungsi NamaTipe sebenarnya bisa digabung menjadi satu dengan fungsi TampilkanProperty. Postingan di sini dipisahkan semata-mata untuk memudahkan kita memahami alur proses  pemrograman.

Fungsi ketiga adalah fungsi TampilkanFieldProperty. Bila field dalam list box listTabel diklik/dipilih, maka fungsi ini akan dijalankan melalui event procedure After Update seperti langkah nomor 4 di atas. Tampilan akhir form view seperti gambar 2 di bawah ini. Tidak semua properti field ditampilkan di sini. Namun demikian, kita bisa menambahkannya sesuai dengan alur berpikir pada fungsi TampilkanFieldProperty, yaitu dibagian bawah bagian komentar ' Tambahkan properti field yang kita inginkan di bawah ini'.

Gambar 2 Form View menampilkan properti field suatu tabel
Gambar 2 di atas menggunakan contoh properti untuk tabel budget seperti dijelaskan pada posting yang berjudul Membuat Tabel Budget.

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