Skip to main content

Manipulasi Data Dengan Menggunakan List Box Pada Form di Access

List box membantu kita memasukkan data tanpa harus mengetikkan sesuatu berupa text, tetapi dengan menggunakan pilihan yang telah disediakan. Dengan list box, kesalahan ketik saat memasukkan data menjadi tidak ada karena kita hanya memilih opsi yang ada dalam daftar, tidak ada tempat yang digunakan untuk mengetikkan data.

List box menampilkan daftar pilihan yang terbuka, tidak seperti combo box yang menggunakan drop down list sehingga daftar pilihan pada combo box memberi kesan tersembunyi. Dengan daftar pilihan yang terbuka ini, pengguna langsung dapat melihat berbagai macam opsi dan memilih mana yang paling tepat.

Daftar pilihan yang ada di list box diatur melalui properti Row Source. Properti Row Source ini bisa diatur melalui Control wizard saat membuat list box, property sheet saat berada di Design view, atau melalui VBA. Jika menggunakan Control wizards untuk membuat list box, wizard itu mengatur properti Row Source berdasarkan bagaimana kita menjawab pertanyaan yang ada di wizard. Dalam format Design view, kita dapat mengatur kembali properti Row Source dengan membuka property sheet list box. Sedangkan dengan menggunakan VBA, kita dapat mengubah properti Row Source dengan menggunakan kode yang kita buat, seperti yang akan dibahas lebih dalam langkah-langkah berikut ini.
  1. Buatlah form dengan menggunakan Blank form.
  2. Matikan (non aktifkan) tombol perintah Control wizard, bila tombol itu dalam keadaan menyala.
  3. Gambar 1
  4. Sisipkanlah 4 buah form control seperti tampak pada Gambar 1. Berikut ini adalah properti masing-masing control:
    1. Sebuah text box untuk memasukkan data ke list box lstListNamaOlahRaga, properti:
      1. Name=txtInputBox
      2. Label Caption untuk text box ini=Input Box
    2. Tombol perintah (command button), properti:
      1. Name=Tambahkan
      2. Caption=Tambahkan ->
      3. On Click=[Event Prcedure], lihat di bawah.
    3. Tombol perintah (command button), properti:
      1. Name=Hapus
      2. Caption= <- Hapus
      3. On Click=[Event Prcedure], lihat di bawah.
    4. Sisipkan sebuah list box dengan menekan tombol List Box pada tab Design, group Controls. List box digunakan untuk menampung data dari txtInputBox, propertinya sebagai berikut:
      1. Name=lstListNamaOlahRaga
      2. Row Source= Value List
      3. Allow Value List Edits=No
      4. Label Caption untuk list box ini= List Box
      5. On Key Down=[Event Prcedure], lihat di bawah.
  5. Berikut ini adalah kode VBA yang ada dalam class module form:
    Private Sub lstListNamaOlahRaga_KeyDown(KeyCode As Integer, Shift As Integer)
    ‘ Bila tombol Del ditekan, maka jalankan prosedur Hapus_Click
      If vbKeyDelete Then Hapus_Click
    End Sub
    Private Sub Tambahkan_Click()
      Dim i, n As Integer, strLista As Variant, ada As Boolean
      If Me.txtInputBox = "" Then
        MsgBox "Tidak ada data yang ditambahkan"
        Exit Sub
      End If
      If Me.lstListNamaOlahRaga.ListCount = 0 Then
        Me.lstListNamaOlahRaga.RowSource = Chr(39) & Me.txtInputBox & Chr(39)
      Else
        strLista = Split(Me.lstListNamaOlahRaga.RowSource, ";")
        For i = LBound(strLista) To UBound(strLista)
          If strLista(i) = Chr(39) & Me.txtInputBox & Chr(39) Then
            ada = True
           Exit For
          Else
            ada = False
          End If
        Next i
        If ada Then
          MsgBox Chr(39) & Me.txtInputBox & Chr(39) & " sudah ada dalam daftar."
          Me.txtInputBox.SetFocus
          Exit Sub
        End If
        Me.lstListNamaOlahRaga.RowSource = Me.lstListNamaOlahRaga.RowSource & ";" & Chr(39) & Me.txtInputBox & Chr(39)
      End If
      Me.lstListNamaOlahRaga = Me.lstListNamaOlahRaga.ItemData(Me.lstListNamaOlahRaga.ListCount - 1)
      Me.txtInputBox = ""
      Me.txtInputBox.SetFocus 
    End Sub
    Private Sub Hapus_Click()
      Dim n, i, p As Integer, strLista, slstListNamaOlahRaga As Variant
      Dim strp() As String
      ReDim strp(20)
      If IsNull(Me.lstListNamaOlahRaga) Then Exit Sub
      If IsNull(Me.lstListNamaOlahRaga.ItemsSelected) Then Exit Sub
      If Me.lstListNamaOlahRaga.RowSource = "" Then Exit Sub
      strLista = Split(Me.lstListNamaOlahRaga.RowSource, ";")
      If UBound(strLista) = 0 Then
        Me.lstListNamaOlahRaga.RowSource = ""
        Exit Sub
      End If
      i = 0
      p = Me.lstListNamaOlahRaga.ItemsSelected(0)
      For n = LBound(strLista) To UBound(strLista)
        If n <> p Then
          strp(i) = strLista(n)
          i = i + 1
        End If
      Next n
      ReDim Preserve strp(UBound(strLista) - 1)
      Me.lstListNamaOlahRaga.RowSource = Join(strp, ";")
      If p < Me.lstListNamaOlahRaga.ListCount Then
        Me.lstListNamaOlahRaga = Me.lstListNamaOlahRaga.ItemData(p)
      Else
        Me.lstListNamaOlahRaga = Me.lstListNamaOlahRaga.ItemData(Me.lstListNamaOlahRaga.ListCount - 1)
      End If
    End Sub
    
Untuk memahami list box dan kode VBA di atas, kita bisa menggunakan contoh. Masukkan satu per satu jenis olah raga berikut ini ke dalam Input Box: Sepak Bola, Renang, Bulutangkis, Bola Voli, Bola Basket, Bola Tenis, Tenis Meja, Lari, Senam, Bowling, Memanah, Menembak, Sepeda, Fitness, Karate, Taekwondo, Judo, Wushu. Setiap selesai satu jenis olah raga, tekanlah tombol perintah Tambahkan untuk memasukkan jenis olah raga ke dalam list box.
Gambar 2
Proses penambahan jenis olah raga itu diatur melalui prosedur Tambahkan_Click dengan cara menambahkan setiap jenis olah raga ke dalam Row Source dari list box lstListNamaOlahRaga, sehingga tampilannya tampak seperti Gambar 2. Bila satu jenis olah raga tertentu sudah berada dalam lstListNamaOlahRaga, maka akan muncul pesan yang memberitahu kita bahwa jenis olah raga itu sudah ada di daftar. Adapun isi dari Row Source yang terbentuk melalui prosedur Tambahkan_Click adalah sbb:

'Sepak Bola';'Renang';'Bulutangkis';'Bola Voli';'Bola Basket';'Bola Tenis';'Tenis Meja';'Lari';'Senam';'Bowling';'Memanah';'Menembak';'Sepeda';'Fitness';'Karate';'Taekwondo';'Judo';'Wushu'


Di mana tanda petik tunggal (') diperoleh dari fungsi Chr(39) pada prosedur Tambahkan_Click.

Bila kita ingin mengeluarkan salah satu jenis olah raga dari dalam lstListNamaOlahRaga, maka kita dapat menekan tombol perintah Hapus yang pengaturannya dilakukan melalui prosedur Hapus_Click. Proses menghapus ini kebalikan dari Tambah_Click, yaitu mengeluarkan setiap jenis olah raga yang ada dalam Row Source dari list box lstListNamaOlahRaga. Kita juga bisa menghapus jenis olah raga itu dengan menekan tombol Del pada keyboard yang pengaturannya dilakukan melalui prosedur lstListNamaOlahRaga_KeyDown.

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access