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.
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
Selanjutnya buka formnya kemudian silahkan ketikkan koding berikut ini di bagian General Deklaration
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 Sub
Kemudian 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