Pada kesempatan kali ini saya akan memberikan sebuah tutorial mengenai paging, yang berfungsi untuk meringankan pada proses load data pada sebuah grid. Disini saya menggunakan MsFlexgrid untuk menampilkan datanya.
MsFlexgrid hanya bisa menampilkan data sekitar 300.000 an data saja, jika anda memiliki data lebih dari 300 ribu dan anda tampilkan ke dalam msflexgrid maka akan terjadi error. Lalu bagimana cara mengatasi data yang terlalu banyak supaya tidak terjadi error di vb? Salah satu cara untuk mengatasi error tersebut adalah dengan cara pembuatan paging untuk menampilkan datanya. Paging juga bisa meringankan query dalam menampilkan data sehingga aplikasi yang kita buat tidak terlalu berat atau lemot.
Pada kesempatan yang lain saya telah menulis tutorial Cara Membuat Paging Menggunakan Database MySQL
Lalu bagaimana cara membuat pagingnya? ikutilah langkah-langkah sebagai berikut :
Sebagai contoh buatlah sebuah form seperti gambar berikut ini
Jika sudah silahkan klik menu Project pilih preferences maka akan muncul jendela baru seperti pada gambar berikut ini :
Lalu cari dan centang tulisan yang dilingkari garis merah seperti pada gambar di atas, jika sudah lalu klik OK. Selanjutkan tambahkan sebuah modul, dengan cara klik menu project lalu pilih Add Modul kemudian ketikan koding berikut ini pada modul tersebut.
MsFlexgrid hanya bisa menampilkan data sekitar 300.000 an data saja, jika anda memiliki data lebih dari 300 ribu dan anda tampilkan ke dalam msflexgrid maka akan terjadi error. Lalu bagimana cara mengatasi data yang terlalu banyak supaya tidak terjadi error di vb? Salah satu cara untuk mengatasi error tersebut adalah dengan cara pembuatan paging untuk menampilkan datanya. Paging juga bisa meringankan query dalam menampilkan data sehingga aplikasi yang kita buat tidak terlalu berat atau lemot.
Pada kesempatan yang lain saya telah menulis tutorial Cara Membuat Paging Menggunakan Database MySQL
Lalu bagaimana cara membuat pagingnya? ikutilah langkah-langkah sebagai berikut :
Sebagai contoh buatlah sebuah form seperti gambar berikut ini
Tampilkan Gambar
Jika sudah silahkan klik menu Project pilih preferences maka akan muncul jendela baru seperti pada gambar berikut ini :
Tampilkan Gambar
Lalu cari dan centang tulisan yang dilingkari garis merah seperti pada gambar di atas, jika sudah lalu klik OK. Selanjutkan tambahkan sebuah modul, dengan cara klik menu project lalu pilih Add Modul kemudian ketikan koding berikut ini pada modul tersebut.
Public Conn As New ADODB.Connection Public RsMhs As ADODB.Recordset Public Sub KonekDB() Set Conn = New ADODB.Connection Conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DB_MHS.mdb" Conn.CursorLocation = adUseClient End Sub
Dim Baris As Double Dim x As Integer, y As Integer, hal As Integer Dim nilai As Integer Dim hasil As Integer Sub AktifGrid() MSFlexGrid.Clear MSFlexGrid.Rows = 2 MSFlexGrid.Cols = 5 MSFlexGrid.RowHeightMin = 300 '------------------------------------------------- MSFlexGrid.Col = 0 MSFlexGrid.Row = 0 MSFlexGrid.Text = "NO" MSFlexGrid.CellFontBold = True MSFlexGrid.ColWidth(0) = 500 MSFlexGrid.AllowUserResizing = flexResizeColumns MSFlexGrid.CellAlignment = flexAlignCenterCenter '------------------------------------------------- MSFlexGrid.Col = 1 MSFlexGrid.Row = 0 MSFlexGrid.Text = "NIM" MSFlexGrid.CellFontBold = True MSFlexGrid.ColWidth(1) = 700 MSFlexGrid.AllowUserResizing = flexResizeColumns MSFlexGrid.CellAlignment = flexAlignCenterCenter '------------------------------------------------- MSFlexGrid.Col = 2 MSFlexGrid.Row = 0 MSFlexGrid.Text = "NAMA MHS" MSFlexGrid.CellFontBold = True MSFlexGrid.ColWidth(2) = 2000 MSFlexGrid.AllowUserResizing = flexResizeColumns MSFlexGrid.CellAlignment = flexAlignCenterCenter '------------------------------------------------- MSFlexGrid.Col = 3 MSFlexGrid.Row = 0 MSFlexGrid.Text = "ALAMAT" MSFlexGrid.CellFontBold = True MSFlexGrid.ColWidth(3) = 2000 MSFlexGrid.AllowUserResizing = flexResizeColumns MSFlexGrid.CellAlignment = flexAlignCenterCenter '--------------------------------------------------- MSFlexGrid.Col = 4 MSFlexGrid.Row = 0 MSFlexGrid.Text = "JURUSAN" MSFlexGrid.CellFontBold = True MSFlexGrid.ColWidth(4) = 2300 MSFlexGrid.AllowUserResizing = flexResizeColumns MSFlexGrid.CellAlignment = flexAlignCenterCenter End Sub Private Sub TampilanAwal() x = 10 'Dalam satu hal menampilkan 5 buah data y = 10 hal = 1 Set RsMhs = New ADODB.Recordset '" & a & " RsMhs.Open "SELECT nim,nama,alamat,jurusan FROM " _ & "(SELECT TOP " & x & " nim,nama,alamat,jurusan FROM " _ & "(SELECT TOP " & y & " nim,nama,alamat,jurusan FROM TBL_MHS ORDER BY NIM ASC) " _ & "ORDER BY NIM DESC) ORDER BY NIM ASC", Conn Call TampilGrid 'Menetukan jumlah halaman Set RsMhs = New ADODB.Recordset RsMhs.Open "SELECT * FROM Tbl_Mhs ORDER BY nim", Conn nilai = RsMhs.RecordCount / x hasil = Int(nilai) + IIf(CDbl(CStr(nilai - Int(nilai))) > 0.1, 1, 0) If hasil = 0 Then hasil = 1 txtHal.Text = "Hal " & hal & " dari " & hasil & " Hal" End Sub Sub TampilGrid() MSFlexGrid.Clear Call AktifGrid MSFlexGrid.Rows = 2 Baris = 0 If RsMhs.BOF Then Exit Sub Else With RsMhs .MoveFirst Do While Not .EOF Baris = Baris + 1 MSFlexGrid.Rows = Baris + 1 MSFlexGrid.TextMatrix(Baris, 0) = Baris MSFlexGrid.TextMatrix(Baris, 1) = !nim MSFlexGrid.TextMatrix(Baris, 2) = !nama MSFlexGrid.TextMatrix(Baris, 3) = !alamat MSFlexGrid.TextMatrix(Baris, 4) = !jurusan .MoveNext Loop End With End If RsMhs.Close End SubKemudian ketikan koding berikut ini pada tombol cmdFirst
Private Sub cmdFirst_Click() If hal = 1 Then MsgBox "Ini udah pada halaman pertama", vbInformation, "Informasi++" Exit Sub Else Call TampilanAwal End If End Sub
Selanjutnya ketikan koding berikut pada tombol cmdLast
Private Sub CmdLast_Click() If hal = hasil Then MsgBox "Ini halaman terakhir, sudah tidak ada halaman berikutnya...", vbInformation, "Informasi++" Exit Sub Else 'Menentukan Hal Terakhir hal = hasil txtHal.Text = "Hal " & hal & " dari " & hasil & " Hal" 'Menampilkan data di halaman selanjutnya 'Akhir = x Set RsMhs = New ADODB.Recordset RsMhs.Open "SELECT NIM FROM TBL_MHS", Conn y = RsMhs.RecordCount Set RsMhs = New ADODB.Recordset RsMhs.Open "SELECT nim,nama,alamat,jurusan FROM " _ & "(SELECT TOP " & x & " nim,nama,alamat,jurusan FROM " _ & "(SELECT TOP " & y & " nim,nama,alamat,jurusan FROM TBL_MHS ORDER BY NIM ASC) " _ & "ORDER BY NIM DESC) ORDER BY NIM ASC", Conn Call TampilGrid End If End Sub
Selanjutnya tuliskan koding berikut ini pada tombol cmdPrevious
Private Sub cmdPrevious_Click() If hal = 1 Then MsgBox "Sudah pada halaman pertama...!", vbInformation, "Informasi++" Exit Sub Else 'Untuk Mengganti halaman sebelumnya hal = hal - 1 txtHal.Text = "Hal " & hal & " dari " & hasil & " Hal" 'Menampilkan data di halaman sebelumnya y = y - x Set RsMhs = New ADODB.Recordset RsMhs.Open "SELECT nim,nama,alamat,jurusan FROM " _ & "(SELECT TOP " & x & " nim,nama,alamat,jurusan FROM " _ & "(SELECT TOP " & y & " nim,nama,alamat,jurusan FROM TBL_MHS ORDER BY NIM ASC) " _ & "ORDER BY NIM DESC) ORDER BY NIM ASC", Conn Call TampilGrid End If End Sub
Kemudian ketikan koding berikut ini untuk tombol cmdNext
Private Sub cmdNext_Click() If hal = hasil Then MsgBox "Ini halaman terakhir, sudah tidak ada halaman berikutnya", vbInformation, "Informasi++" Exit Sub Else 'Untuk Mengganti halaman berikutnya hal = hal + 1 txtHal.Text = "Hal " & hal & " dari " & hasil & " Hal" 'Menampilkan data di halaman selanjutnya y = y + x Set RsMhs = New ADODB.Recordset RsMhs.Open "SELECT nim,nama,alamat,jurusan FROM " _ & "(SELECT TOP " & x & " nim,nama,alamat,jurusan FROM " _ & "(SELECT TOP " & y & " nim,nama,alamat,jurusan FROM TBL_MHS ORDER BY NIM ASC) " _ & "ORDER BY NIM DESC) ORDER BY NIM ASC", Conn Call TampilGrid End If End Sub
Selanjutnya tulis koding berikut ini di form load
Private Sub Form_Load() Call KonekDB Call TampilanAwal End Sub
Jika sudah tuliskan koding berikut ini pada txtcari change
Private Sub txtCari_Change() Call AktifGrid Baris = 0 'memmanggil koneksi database Call KonekDB Set RsMhs = New ADODB.Recordset 'Pencarian berdasarkan nim,nama,alamat dan jurusan RsMhs.Open "SELECT TOP " & x & " nim,nama,alamat,Jurusan FROM Tbl_Mhs " _ & "WHERE nim LIKE '%" & txtCari.Text & "%' " _ & "OR nama LIKE '%" & txtCari.Text & "%' " _ & "OR alamat LIKE '%" & txtCari.Text & "%' " _ & "OR jurusan LIKE '%" & txtCari.Text & "%'", _ Conn, adOpenDynamic, adLockOptimistic '--------------------- If RsMhs.BOF Then Exit Sub Else With RsMhs .MoveFirst Do While Not .EOF Baris = Baris + 1 'no urut MSFlexGrid.Rows = Baris + 1 MSFlexGrid.TextMatrix(Baris, 0) = Baris MSFlexGrid.TextMatrix(Baris, 1) = !nim MSFlexGrid.TextMatrix(Baris, 2) = !nama MSFlexGrid.TextMatrix(Baris, 3) = !alamat MSFlexGrid.TextMatrix(Baris, 4) = !jurusan .MoveNext Loop End With End If RsMhs.Close End Sub
Jika sudah lalu simpan, lalu silahkan di jalankan. Tutorial ini juga dapat diterapkan pada komponen ListView, tinggal disesuaikan cara menampilkan datanya ke ListView.
Demikian tutorial dari saya, semoga dapat bermanfaat. Jika anda berhasil maka akan nampak seperti gambar animasi berikut ini. Silahkan baca juga artikel saya mengenai Menyimpan Data Dalam Listview Ke Database
Jika anda menginginkan source codenya silahkan download pada link yang sudah disediakan berikut ini.
Link Download
Tags:
Cara Membuat Paging, Tutorial Membuat Paging, Mengatasi load data banyak supaya tidak lemot/berat/lamban, Mempercepat load data pada grid, cara membuat halaman pada grid, membuat halaman pada msflexgrid, source code paging, download source code paging,Membuat Paging di vb6, Cara melakukan Paging, Cara Membuat Paging Data, Paging Data Dengan Visual Basic 6, Tutuorial membuat paging, Bagaimana caranya melakukan paging
muantatap... izin di download gan..
ReplyDeletekalau ini menggunakan satu tabel kalau lebih dari satu tabel gimana yah? misalnya tabel mahasiswa dan tabel dosen yang akan di tampilkan kedalam pagingnya,? terima kasih
ReplyDeleteSet RsMhs = New ADODB.Recordset '" & a & "
RsMhs.Open "SELECT nim,nama,alamat,jurusan FROM " _
& "(SELECT TOP " & x & " nim,nama,alamat,jurusan FROM " _
& "(SELECT TOP " & y & " nim,nama,alamat,jurusan FROM TBL_MHS ORDER BY NIM ASC) " _
& "ORDER BY NIM DESC) ORDER BY NIM ASC", Conn
memanggil 2 tabel dengan perintah query dengan memakai parameter where mas...
Delete