Seperti telah diketahui, list box berguna meminimalkan kesalahan ketik saat kita hendak memasukkan data ke dalam sebuah tabel. Dengan mematikan properti Allow Value List Edits yang ada pada sebuah list box, pemasukkan data hanya bisa dilakukan dengan memilih, pengguna tidak diperkenankan untuk mengetikkan sesuatu.
Pada pembahasan kali ini, kita akan membuat dua buah list box, di mana list box yang satu digunakan sebagai sumber data, dan list box lainnya digunakan sebagai tempat untuk menyimpan data. Penggunaan contoh di bawah ini mungkin dapat menjelaskan maksud dari pemindahan data antar dua list box.
Departemen Sumber Daya Manusia (SDM) sebuah perusahaan tentu mempunyai arsip daftar riwayat hidup masing-masing karyawannya. Di dalam daftar riwayat hidup itu, tercantup berbagai macam data pribadi karyawan seperti nama, nomor KTP, status pernikahan, pengalaman bekerja, jenjang karir, dan sebagainya sampai dengan kegiatan olah raga yang sering dilakukan oleh si karyawan yang bersangkutan. Daftar riwayat hidup ini biasanya dimasukkan oleh karyawan (terutama karyawan baru) melalui formulir isian. Dari formulir itulah, staff SDM memasukkan datanya ke dalam database komputer. Nah, list box yang akan kita bahas di sini khusus berkaitan dengan kegiatan olah raga.
Pada posting terdahulu, kita sudah membuat list box yang berisi nama jenis olah raga. Dalam sebuah sistem informasi SDM, nama jenis olah raga itu dimasukkan sebagai bagian dari preferensi sistem (system preference), pengaturan sistem (system setting), panel kontrol (control panel), atau istilah-istilah semacam itu. Data dari pengaturan sistem ini kemudian digunakan untuk membantu memudahkan staff SDM memasukkan data olah raga yang ada pada masing-masing karyawan. Gambaran konsepnya seperti di bawah ini.
Data dalam list box A diambil dari tabel master pengaturan sistem yang ditampilkan untuk membantu staff SDM mengisikan daftar riwayat hidup. Data dalam list box B merupakan form control jenis olah raga yang dipilih/disukai oleh karyawan. Data dalam list box B merupakan bagian dari daftar riwayat hidup karyawan yang disimpan di tabel master daftar riwayat hidup.
Dengan menggunakan list box A, staff SDM dapat memilih berbagai macam jenis olah raga yang disukai oleh karyawannya untuk kemudian dimasukkan ke dalam daftar riwayat hidup karyawan yang bersangkutan. Tentu saja jenis olah raga yang dipilih sesuai dengan formulir isian daftar riwayat hidup karyawan yang bersangkutan. Untuk sekedar informasi, formulir isian daftar riwayat hidup biasanya hanya berisi kotak kosong, di mana karyawan akan menuliskan semua data pribadi sesuai dengan pertanyaan/kuesioner terkait.
Untuk memindahkan data antar dua list box, ikuti langkah berikut ini:
Penambahan atau pengurangan data dilakukan oleh Private Function TambahKembali yang bisa dipanggil setiap saat di tempat yang diperlukan seperti tombol perintah Tambahkan, Hapus, dan Kembalikan. Selain itu, kita juga bisa menggunakan backspace untuk mengembalikan item pada Olah Raga Yang Dipilih ke Nama Olah Raga melalui Private Sub lstOlahRagaYgDipilih_KeyDown.
Pada pembahasan kali ini, kita akan membuat dua buah list box, di mana list box yang satu digunakan sebagai sumber data, dan list box lainnya digunakan sebagai tempat untuk menyimpan data. Penggunaan contoh di bawah ini mungkin dapat menjelaskan maksud dari pemindahan data antar dua list box.
Departemen Sumber Daya Manusia (SDM) sebuah perusahaan tentu mempunyai arsip daftar riwayat hidup masing-masing karyawannya. Di dalam daftar riwayat hidup itu, tercantup berbagai macam data pribadi karyawan seperti nama, nomor KTP, status pernikahan, pengalaman bekerja, jenjang karir, dan sebagainya sampai dengan kegiatan olah raga yang sering dilakukan oleh si karyawan yang bersangkutan. Daftar riwayat hidup ini biasanya dimasukkan oleh karyawan (terutama karyawan baru) melalui formulir isian. Dari formulir itulah, staff SDM memasukkan datanya ke dalam database komputer. Nah, list box yang akan kita bahas di sini khusus berkaitan dengan kegiatan olah raga.
Pada posting terdahulu, kita sudah membuat list box yang berisi nama jenis olah raga. Dalam sebuah sistem informasi SDM, nama jenis olah raga itu dimasukkan sebagai bagian dari preferensi sistem (system preference), pengaturan sistem (system setting), panel kontrol (control panel), atau istilah-istilah semacam itu. Data dari pengaturan sistem ini kemudian digunakan untuk membantu memudahkan staff SDM memasukkan data olah raga yang ada pada masing-masing karyawan. Gambaran konsepnya seperti di bawah ini.
Gambar 1 |
Dengan menggunakan list box A, staff SDM dapat memilih berbagai macam jenis olah raga yang disukai oleh karyawannya untuk kemudian dimasukkan ke dalam daftar riwayat hidup karyawan yang bersangkutan. Tentu saja jenis olah raga yang dipilih sesuai dengan formulir isian daftar riwayat hidup karyawan yang bersangkutan. Untuk sekedar informasi, formulir isian daftar riwayat hidup biasanya hanya berisi kotak kosong, di mana karyawan akan menuliskan semua data pribadi sesuai dengan pertanyaan/kuesioner terkait.
Untuk memindahkan data antar dua list box, ikuti langkah berikut ini:
- Buka dalam format design view, form yang telah dibuat di posting yang berjudul Manipulasi Data Dengan Menggunakan List Box Pada Form di Access.Bila form ini belum ada, buatlah terlebih dahulu dengan mengikuti petunjuk yang ada pada postingan itu.
- Pada list box lstListNamaOlahRaga, ubahlah properti Multi Select=Extended (berada pada tab Other).
- Kopilah tombol perintah Tambahkan, tombol perintah Hapus, dan list box lstListNamaOlahRaga dan paste di sebelah kanan seperti pada gambar design view di bawah ini.
Gambar 2 - Ubahlah properti hasil kopian sebagai berikut.
- Tombol perintah tambahkan:
- Name=Tambahkan2
- Caption=Tambahkan->
- Tombol perintah Kembalikan:
- Name=Kembalikan
- Caption=<-Kembalikan
- List box Olah Raga Yang Dipilih:
- Name= lstOlahRagaYgDipilih
- Tombol perintah tambahkan:
- Buka module form dan hapuslah semua kode VBA yang ada dalam modul form itu. Selanjutnya, salin kode VBA berikut ini ke dalam modul form:
Option Compare Database Private Sub lstListNamaOlahRaga_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 46 Then Hapus_Click End Sub Private Sub Hapus_Click() TambahKembali Me.lstListNamaOlahRaga.Name End Sub Private Sub lstOlahRagaYgDipilih_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 8 Then Kembalikan_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 With Me.lstListNamaOlahRaga If .ListCount = 0 Then .RowSource = Chr(39) & Me.txtInputBox & Chr(39) Else strLista = Split(.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 .RowSource = .RowSource & ";" & Chr(39) & Me.txtInputBox & Chr(39) End If .value = .ItemData(.ListCount - 1) End With Me.txtInputBox = "" Me.txtInputBox.SetFocus End Sub Private Sub Tambahkan2_Click() TambahKembali "lstListNamaOlahRaga", "lstOlahRagaYgDipilih" End Sub Private Sub Kembalikan_Click() TambahKembali Me.lstOlahRagaYgDipilih.Name, Me.lstListNamaOlahRaga.Name End Sub Private Function TambahKembali(lstSumber As String, Optional lstTarget As String) Dim oItem, oTemp, selectedItem, selectedTemp As Variant Dim blSelected, ada As Boolean Dim ctlSumber, ctlTarget As Control Dim p, i, j, n As Integer Set ctlSumber = Controls(lstSumber) If lstTarget <> "" Then Set ctlTarget = Controls(lstTarget) Else Set ctlTarget = Nothing With ctlSumber If .ItemsSelected.Count = 0 Then Exit Function oItem = Split(.RowSource, ";") ReDim selectedTemp(.ItemsSelected.Count - 1) If .ItemsSelected.Count = .ListCount Then selectedTemp = oItem .RowSource = "" Else i = 0 For Each selectedItem In .ItemsSelected selectedTemp(i) = Chr(39) & .ItemData(selectedItem) & Chr(39) For n = 0 To UBound(oItem) If oItem(n) = Chr(39) & .ItemData(selectedItem) & Chr(39) Then ada = True Exit For End If Next n j = 0 If ada Then ReDim oTemp(UBound(oItem) - 1) For n = 0 To UBound(oItem) If oItem(n) <> Chr(39) & .ItemData(selectedItem) & Chr(39) Then oTemp(j) = oItem(n) j = j + 1 End If Next n End If oItem = oTemp If i = 0 Then p = selectedItem i = i + 1 Next selectedItem .RowSource = Join(oItem, ";") End If If p < .ListCount Then .Selected(p) = True Else .Selected(.ListCount - 1) = True End If End With If lstTarget <> "" Then With ctlTarget If .ListCount = 0 Then .RowSource = Join(selectedTemp, ";") Else .RowSource = .RowSource & ";" & Join(selectedTemp, ";") End If End With End If End Function
Gambar 3 |
klo dari listbox ke record,gmana yah
ReplyDelete