Selasa, 20 Desember 2011

Status Loading Data dengan ProgressBar

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...

Ditulis Oleh : Wahyu Aji // 23.18
Kategori:

0 komentar:

Posting Komentar