Jumat, 03 Agustus 2007

Paging with MySQL dan ASP

Fiuh .. hari yang berat untuk pengguna MySQL dengan ASP hari ini. Saya sudah mendapatkan cara untuk terhubung dengan server MySQL, tapi saya hanya bisa menampilkan keseluruhan isi table di database saya dalam satu halaman. Bagaimana dengan permasalahan penampilannya yang bisa dilakukan dalam halaman yang terpisah?

Pertama kali saya kira bisa dilakukan dengan cara yang sama dengan yang dilakukan dengan MS Access, dengan adoConn adalah ADODB.Connection dan adoRS adalah ADODB.Recordset serta property Recordset yaitu PageSize dan AbsolutePage.


Call adoRS.Open(SQLQuery, adoConn, 3, 1)
if NOT (adoRS.Eof OR adoRS.Bof) Then
adoRS.PageSize = mPageSize
adoRS.AbsolutePage = mCurrentPage
...

Namun saat dijalankan, data yang saya harapkan tampil malah tidak ada.

Berbagai cara saya lakukan hingga saya menggunakan cara manual dengan melakukan pengambilan jumlah record yang dihasilkan dan memanipulasi query di mySQL Query dengan menambahkan syntax LIMIT pada SQLQuery menggunakan sebuah fungsi yang saya buat sendiri bernama SetQueryTop( ... ) seperti yang terlihat dibawah ini.


Call adoRS.Open(SQLQuery, adoConn, 3, 1)
if NOT (moCommonRS.Eof or moCommonRS.Bof) Then
moCommonRS.PageSize = mPageSize
SetRsCommonPaging = moCommonRS.PageCount
qry = SetQueryTop(sQuery, ((mCurrentPage-1)*mPageSize), mPageSize)
moCommonRS.Close()
Call moCommonRS.Open(qry, moConn, 3, 1)
moCommonRS.MoveFirst()
....


Akan tetapi bisa dibayangkan kalau record yang ada berjumlah ratusan record bahkan lebih, bagaimana saya harus melakukannya dalam 2 langkah ? hingga saya ingat salah satu hukum dalam penggunaan recordset adalah pengaturan CursorLocation. Karena saya menggunakan property dari aRecordset.AbsolutePage, maka saya harus menggunakan CursorLocation = adUseClient agar property tersebut dapat digunakan; sehingga cukup menambahkan satu baris kode saja saya sudah bisa mendapatkan hasil yang saya inginkan.


adoConn.CursorLocation = 3 ' 3 = adUseClient
Call adoRS.Open(SQLQuery, adoConn, 3, 1)
if NOT (adoRS.Eof OR adoRS.Bof) Then
adoRS.PageSize = mPageSize
adoRS.AbsolutePage = mCurrentPage
...


Kemudian semua program saya berjalan sebagaimana mestinya ... Akhirnya ... :)

Pelajaran hari ini memberikan saya gambaran bahwa secara default, nilai dari CursorLocation adalah adUseServer. Sehingga untuk beberapa keperluan spesifik saya harus melakukan setting lebih lanjut. Tapi yang harus kita ingat bahwa penggunaan CursorLocation adalah READ_ONLY pada Recordset yang terbuka dan READ_WRITE pada sebuah Connection dan pada sebuah Recordset yang tertutup. Sehingga apabila kita melakukan setting CursorLocation terhadap Recordset yang sudah dibuka (sudah dieksekusi query), maka kita tidak akan mendapat hasil apa-apa.

Tapi ssssssttttt bukankah menurut Anda judul tulisan kali ini agak .. hmmm ... parno :D ... (NB:sebelumnya judulnya pagination with MySQL dan ASP)

2 komentar:

Anonim mengatakan...

itu sih bukan parno, kamu aja yang pikirannya ngeres. lagian bukan pagination deh... 'paging' mungkin lebih tepat :)

friskantoni mengatakan...

Sorry .. abis pas searching di google, yang muncul bahasa kerennya itu :D