Kali ini saya akan share bagaimana cara membuat status loading dengan progressbar, misalnya dalam kasus memuat/load data ke grid atau listview, jika jumlah data nya sedikit mungkin tidak akan terasa tapi jika jumlah datanya sudah mencapai ribuan, puluhan ribu atau jutaan, saya yakin pasti tampilan form / windows sobat semua seperti "nge-hang" alias not responding, padahal sebenarnya di belakannya itu sedang melalukan load data. Untuk mengatasi "not responding" nya itu, kita harus tambahkan perintah "DoEvents". Baiklah, kita langsung saja praktek:
Buka project, add 1 form, add 1 label(name=djielabel), add 1 progressbar(name=djieprogressbar), add 1 button, dan yang terakhir 1 listview (name=djielistview)
Untuk Visual Basic .NET ini codingnya :
Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
'deklarasi koneksi
Dim con As New Odbc.OdbcConnection("dsn=nwind")
con.Open() 'buka koneksi
'select table
Dim cmd As New Odbc.OdbcCommand("select * from [order details]", con)
Dim reader As Odbc.OdbcDataReader = cmd.ExecuteReader
cmd = New Odbc.OdbcCommand("select count(*) from [order details]", con)
Dim jumlahData As Double = cmd.ExecuteScalar
'add column header
For i As Integer = 0 To reader.FieldCount - 1
djieListView1.Columns.Add(reader.GetName(i))
Next
'nilai default progressbar
djieProgressBar1.Maximum = jumlahData
djieProgressBar1.Value = 0
'nilai defaul label
djieLabel1.Text = "Loading Data 0 dari 0"
'looping add data ke listview
Do While reader.read
djieListView1.Items.Add(reader.Item(0).ToString)
For i As Integer = 1 To reader.FieldCount - 1
djieListView1.Items.Item(djieListView1.Items.Count - 1).SubItems.Add(IIf(IsDBNull(reader.Item(i)), "", reader.Item(i).ToString))
Next
'Scroll listview
'djieListView1.Items.Item(djieListView1.Items.Count - 1).EnsureVisible()
'doevents agar tidak nge-hang
System.Windows.Forms.Application.DoEvents()
'jalankan progressbar dengan value ditambah 1
djieProgressBar1.Value = djieProgressBar1.Value + 1
'status loading
djieLabel1.Text = "Loading Data " & djieProgressBar1.Value & " dari " & jumlahData
Loop
reader.Close()
End Sub
Untuk Visual Basic 6 ini codingnya :
Private Sub Command1_Click()
'deklarasi koneksi
Dim con As New ADODB.Connection
Dim rec As New ADODB.Recordset
con.CursorLocation = adUseClient
con.Open "dsn=nwind" 'buka koneksi
Set rec = con.Execute("select * from [order details]") 'select tabel
'add column header
For i = 0 To rec.Fields.Count - 1
djieListView1.ColumnHeaders.Add , , rec.Fields(i).Name
Next
'nilai default progressbar
djieProgressBar1.Max = rec.RecordCount
djieProgressBar1.Value = 0
'nilai defaul label
djieLabel1.Caption = "Loading Data 0 dari 0"
'looping add data ke listview
Do While rec.EOF = False
djieListView1.ListItems.Add , , rec.Fields(0).Value
For i = 1 To rec.Fields.Count - 1
djieListView1.ListItems(djieListView1.ListItems.Count).ListSubItems.Add , , IIf(IsNull(rec.Fields(i).Value), "", rec.Fields(i).Value)
Next
'Scroll listview
djieListView1.ListItems(djieListView1.ListItems.Count).EnsureVisible
'doevents agar tidak nge-hang
DoEvents
'jalankan progressbar dengan value ditambah 1
djieProgressBar1.Value = djieProgressBar1.Value + 1
'status loading
djieLabel1.Caption = "Loading Data " & djieProgressBar1.Value & " dari " & rec.RecordCount
rec.MoveNext
Loop
End Sub
OK, sekian posting saya kali ini, semoga bisa bermanfaat...
0 komentar:
Posting Komentar