Bagi kita yang sering mengutak-atik program database dengan Visual Basic, pasti tidak asing dengan object yang satu ini. Object ListView digunakan untuk menampilkan data-data dalam bentuk tabular.

Langkah pertama yang harus kita lakukan adalah tentu saja kita harus memasukkan object listview ke dalam form. Kemudian kita bisa menambahkan object ImageList dengan icon yang sudah kita masukkan terlebih dahulu. Icon dalam ImageList ini nantinya akan kita tampilkan ke dalam ListViewnya.

Ada baiknya juga kita membuat Sub, agar proses load data dari tabel ke ListView tidak perlu menuliskan kode program yang sama. Berikut ini adalah pemanggilan Sub FillListView.

Call FillListView(ListView1, recordset, 3, 1, True, True)

Perhatikan parameternya. ListView1 adalah nama object ListView yang kita gunakan, kemudian recordset tentunya ADODB.Recordset yang kita gunakan, yang tentunya sudah kita hubungkan dengan tabel yang akan diload ke dalam ListView. Angka 3 adalah jumlah field, angka 1 adalah icon yang dipakai. Dua nilai boolean terakhir adalah untuk mengatur apakah ListView akan diberi nomor urut atau tidak, dan apakah ListView akan menampilkan field pertama atau tidak. Karena field pertama biasanya adalah field untuk kode. Jadi beberapa user menganggap tidak penting ditampilkan. Kemudian, berikut ini adalah Sub untuk menambahkan data dari tabel ke ListViewnya. Kita bisa declare Sub ini sebagai Public dan diletakkan pada sebuah Module.

Public Sub FillListView(ByRef sListView As ListView, ByRef sRecordSource As ADODB.Recordset, ByVal sNumOfFields As Byte, ByVal sNumIco As Byte, ByVal with_num As Boolean, ByVal show_first_rec As Boolean)
Dim X As Variant
Dim i As Byte
On Error Resume Next
sRecordSource.MoveFirst
sListView.ListItems.Clear
Do While Not sRecordSource.EOF
If with_num = True Then
Set X = sListView.ListItems.Add(, , sRecordSource.AbsolutePosition, sNumIco, sNumIco)
Else
Set X = sListView.ListItems.Add(, , sRecordSource.Fields(0), sNumIco, sNumIco)
End If
For i = 1 To sNumOfFields – 1
If Not sRecordSource.Fields(Val(i)) = “” Then
If show_first_rec = True Then
X.SubItems(i) = sRecordSource.Fields(Val(i) – 1)
If i = sNumOfFields – 1 Then X.SubItems(i + 1) = sRecordSource.Fields(Val(i))
Else
X.SubItems(i) = sRecordSource.Fields(Val(i))
If i = sNumOfFields – 1 Then X.SubItems(i + 1) = sRecordSource.Fields(Val(i + 1))
End If
End If
Next i
sRecordSource.MoveNext
Loop
i = 0
Set X = Nothing
End Sub