Apa itu tampilan pagination saat ADO mengakses database? Jika Anda telah menggunakan program papan buletin elektronik di banyak situs web, Anda harus tahu bahwa untuk meningkatkan kecepatan membaca halaman, program papan buletin elektronik umumnya tidak mencantumkan semua posting pada satu halaman, tetapi sebaliknya dibagi menjadi beberapa Halaman untuk ditampilkan, dan setiap halaman menampilkan sejumlah posting tertentu, seperti 20. Ingin tahu cara menerapkan tampilan pagination? Harap baca artikel ini!
Artikel "Eighteen Martial Arts of Dynamic Design-Asp" telah menghabiskan sebagian besar setengah tahun dengan teman-teman sejak edisi pertama. dan berlatih. Dari surat -surat yang saya terima dari teman -teman saya, kami dapat dengan jelas merasa bahwa keterampilan ASP semua orang terus membaik. Baru-baru ini, banyak teman telah menulis kepada saya dan berharap bahwa saya dapat menulis beberapa contoh ASP dalam penggunaan kehidupan nyata. Oleh karena itu, mulai dari masalah ini, saya memutuskan untuk menggeser posisi "delapan belas seni bela diri dari edisi desain situs web dinamis" dari memperkenalkan dan mempelajari pengetahuan dasar ASP hingga membahas dan memperdalam operasi ASP yang sebenarnya. Atas permintaan teman -teman saya, dalam masalah ini, saya akan fokus pada cara menampilkan paging database ADO saat mengaksesnya.
Apa itu tampilan pagination saat ADO mengakses database? Jika Anda telah menggunakan program papan buletin elektronik di banyak situs web, Anda harus tahu bahwa untuk meningkatkan kecepatan membaca halaman, program papan buletin elektronik umumnya tidak mencantumkan semua posting pada satu halaman, tetapi sebaliknya dibagi menjadi beberapa Halaman untuk ditampilkan, dan setiap halaman menampilkan sejumlah posting tertentu, seperti 20. Ini adalah tampilan pagination dari kueri basis data.
Jadi bagaimana kita bisa memberi paginasi hasil kueri dari database? Sebenarnya ada banyak cara, tetapi ada dua cara utama:
1. Baca semua catatan dalam database yang memenuhi kondisi kueri ke dalam recordset pada satu waktu dan menyimpannya dalam memori. (Nomor halaman) dan absolutepage (halaman absolut) untuk mengelola pemrosesan paging.
2. Menurut instruksi pelanggan, jumlah catatan yang ditentukan akan dibacakan dan ditampilkan dari catatan yang memenuhi persyaratan kueri setiap kali.
Perbedaan utama antara keduanya adalah bahwa yang pertama membaca semua catatan ke dalam memori pada satu waktu dan kemudian membuat penilaian dan analisis secara berurutan sesuai dengan instruksi untuk mencapai efek tampilan pagination, sedangkan yang terakhir membuat penilaian berdasarkan instruksi dan menetapkan Nomor yang ditentukan untuk memenuhi kondisi kueri.
Kita dapat dengan jelas merasakan bahwa ketika jumlah catatan dalam database mencapai puluhan ribu atau lebih, efisiensi eksekusi metode pertama akan jauh lebih rendah dari metode kedua, karena ketika setiap pelanggan meminta halaman, semua hasil harus hasilnya harus ditransfer. Namun, ketika jumlah catatan dalam database di server dan jumlah orang secara online pada saat yang sama tidak besar, efisiensi eksekusi keduanya hampir sama. Program ASP dari metode pertama relatif ditulis metode kedua jauh lebih sederhana dan jelas.
Di sini, penulis akan mengambil program ASPBBS umum kami sebagai contoh untuk menganalisis cara mengimplementasikan fungsi tampilan pagination dalam program BBS. banyak. Oleh karena itu, contoh program berikut adalah metode tampilan pagination pertama yang diperkenalkan sebelumnya.
Tampilan pagination ketika ADO mengakses database sebenarnya untuk mengoperasikan catatan rekaman. Jadi pertama -tama kita harus memahami sifat dan metode objek reordset:
Atribut BOF: Indikator saat ini mengacu pada transaksi pertama ke recordset.
Atribut EOF: Indikator saat ini mengacu pada transaksi terakhir ke recordset.
Metode Pindahkan: Pindahkan metrik ke rekaman di Recordset.
Properti AbsolutePage: Menetapkan lokasi saat ini dari catatan di halaman mana yang berada.
Properti PageCount: Menampilkan berapa banyak halaman data yang berisi objek Recordset.
Properti PageSize: Menampilkan jumlah catatan yang ditampilkan pada setiap halaman objek Recordset.
Properti RecordCount: Menampilkan jumlah total catatan objek Recordset.
Mari kita lihat lebih dekat atribut dan metode penting ini
1. Atribut BOF dan EOF
Biasanya kami menulis kode dalam program ASP untuk memeriksa atribut BOF dan EOF untuk mengetahui lokasi recordset yang ditunjukkan oleh indikator saat ini. Garis adalah ruang lingkup objek Recordset telah terlampaui.
Misalnya: < %jika tidak rs.eof lalu ... %>
< % jika tidak (rs.bof dan rs.eof) %>
Jika lokasi catatan saat ini berada di objek Recordset
Ketika baris pertama direkam, atribut BOF mengembalikan true, jika tidak salah.
Jika posisi catatan saat ini adalah setelah baris terakhir dari objek Recordset, properti EOF mengembalikan true, jika tidak ia mengembalikan False.
Baik BOF dan EOF salah: berarti indikator terletak di Recordset.
BOF benar: Indikator saat ini mengacu pada catatan pertama ke Recordset. EOF benar: Indikator saat ini mengacu pada catatan terakhir ke Recordset.
Baik BOF dan EOF benar: tidak ada catatan dalam rekaman.
2. Metode Pindah
Anda dapat menggunakan metode MOVE untuk memindahkan metrik ke rekaman di Recordset, dengan sintaks sebagai berikut:
rs.move numrecords, mulai
Di sini adalah variabel objek, yang menunjukkan objek Recordset yang ingin bergerak ketika posisi catatan saat ini; tag awal.
Semua objek Recordset mendukung metode MOVE. metode, kesalahan akan dihasilkan.
Metode MoveFirst: Pindahkan posisi catatan saat ini ke rekor pertama.
Metode MoveLast: Pindahkan posisi rekaman saat ini ke rekor terakhir.
Metode MoveNext: Pindahkan posisi catatan saat ini ke rekor berikutnya. Metode MovePrevious: Pindahkan posisi catatan saat ini ke catatan sebelumnya.
Pindahkan metode [n]: Pindahkan indeks ke catatan pena ke -n, N mulai dari 0.
3. Atribut Absolutepage
Properti AbsolutePage menetapkan jumlah halaman halaman di mana halaman berada; Halaman Rekaman). Harus dicatat di sini bahwa tidak semua penyedia data mendukung properti ini, jadi berhati -hatilah saat menggunakannya.
Sama seperti properti absoluteposisi, properti absolutepage dimulai dengan 1. Jika catatan saat ini adalah baris pertama dari rekaman, absolutepage adalah 1. Properti absolutepage dapat diatur untuk pindah ke posisi catatan baris pertama dari halaman yang ditentukan.
4. Properti Absoluteposisi
Jika Anda perlu menentukan lokasi metrik saat ini dalam Recordset, Anda dapat menggunakan properti absoluteposisi.
Nilai properti absoluteposisi adalah posisi indikator saat ini relatif terhadap transaksi pertama, yang dimulai dari 1, yaitu, absoluteposisi transaksi pertama adalah 1.
Perhatikan bahwa ketika mengakses rekaman, tidak ada jaminan bahwa rekaman akan muncul dalam urutan yang sama setiap saat.
Untuk mengaktifkan absoluteposisi, Anda harus terlebih dahulu mengaturnya untuk menggunakan kursor pengguna (pointer), dan kode ASP adalah sebagai berikut:
RS2.CursorLocation = 3
5. Properti PageCount
Gunakan properti PageCount untuk menentukan berapa banyak halaman data yang berisi objek Recordset. Halaman di sini adalah kumpulan catatan data, dan ukurannya sama dengan pengaturan properti halaman. . Harus dicatat bahwa tidak semua penyedia data mendukung properti ini.
6. Properti Halaman
Properti halaman adalah kunci untuk menentukan bagaimana ADO paginat saat mengakses database. Menetapkan dan membuat ukuran halaman, memungkinkan properti absolutepage dipindahkan ke catatan pertama halaman logis lainnya. Properti halaman dapat diatur kapan saja.
7. Properti RecordCount
Ini juga merupakan properti yang sangat umum dan penting. Misalnya: < %totle = rs.recordcount %>
Setelah memahami sifat -sifat di atas dan metode objek Recordset, mari kita pertimbangkan bagaimana menggunakannya untuk mencapai tujuan tampilan pagination kami. Pertama, kami dapat menetapkan nilai untuk properti halaman, dengan demikian menentukan jumlah baris yang merupakan halaman yang diambil dari grup catatan; Untuk mendapatkan nomor total halaman yang ditampilkan; Tampaknya sangat tidak rumit.
Kami telah membangun aplikasi BBS sederhana, yang memiliki lima bidang berikut dalam database: ID, nomor otomatis setiap posting; waktu posting. DSN dari database adalah BBS. Kami menempatkan semua langkah dalam menampilkan paging pos dalam proses yang disebut showlist () untuk panggilan mudah. Prosedurnya adalah sebagai berikut:
'---- BBS Tampilkan Posting Paging ---
< %Sub showlist () %>
< %
Pgsz = 20 'set sakelar, tentukan jumlah posting yang ditampilkan pada setiap halaman, default adalah 20 posting per halaman
Set Conn = Server.CreateObject (AdodB.Connection)
Set RS = Server.CreateObject (ADODB.Recordset)
sql = pilih* dari pesanan pesan oleh id desc
'Permintaan semua posting dan atur dalam urutan terbalik dengan ID pos
Conn.Open BBS
Rs.opensql, Conn, 1,1
Jika rs.recordcount = 0 lalu
Response.write <p> <tenter> Maaf, tidak ada informasi yang relevan dalam database! </denter> </p>
kalau tidak
Rs.pagesize = cint (pgsz) 'Tetapkan nilai properti halaman
Total = int (rs.recordcount / pgsz * -1) * -1 'Hitung jumlah total halaman yang dapat ditampilkan
Pageno = permintaan (pageno)
Jika pageno = lalu
Pageno = 1
kalau tidak
Pageno = Pageno+1
Pageno = pageno-1
akhiri jika
Gulir = permintaan (gulir)
Jika gulir = halaman sebelumnya
Pageno = pageno-1
akhiri jika
Jika gulir = halaman berikutnya
Pageno = Pageno+1
akhiri jika
Jika Pageno <1 maka
Pageno = 1
akhiri jika
n = 1
Rs.Absolutepage = pageno
Response.write <Tenter>
Posisi = rs.pagesize*pageno
PageBegin = Posisi-Rs.Pagesize+1
Jika posisi <rs.recordcount maka
Pagend = Posisi
kalau tidak
Pagend = rs.recordcount
akhiri jika
Response.write <p> <font color = 'navy'> <b> Hasil kueri database: </b>
Response.write (ada total & rs.recordcount & potongan informasi yang memenuhi persyaratan, tampilan & pageBegin &-& pagend &) </font> </p>
Response.write <width tabel = 600 border = 1 cellpadding = 4 cellspacing = 0 bgcolor =#ffffff>
Response.write <tr bgcolor =#5fb5e2> <font size = 2> <td> <b> tema </b> </td> <td> <b> pengguna </b> </td> <td> B> Email </b> </td> <td> <b> Tanggal yang diterbitkan </b> </td> </font> <tr bgcolor =#ffffff>
Lakukan selagi tidak (rs bukan apa -apa)
RowCount = rs.pagesize
Lakukan sementara tidak rs.eof dan rowcount> 0
Jika n = 1 maka
Response.write <tr bgcolor =#ffffff>
KALAU TIDAK
Response.write <tr bgcolor =#eeeee>
Akhiri jika
n = 1-N %>
<td> <span style = font-size: 9pt> <a href = 'view.asp? Key = < % = rs (id) %>'> < % = rs (subjek) %> </a> </a Span> </td>
<td> <span style = font-size: 9pt> < % = rs (name) %> </a> </span> </td>
<td> <span style = font-size: 9pt> <a href = mailto: < % = rs (email) % >> < % = rs (email) %> </a> </span> </td>
<td> <span style = font-size: 9pt> < % = rs (postdate) %> </span> </td>
</tr>
< %
RowCount = RowCount - 1
Rs.movenext
Lingkaran
Setel RS = Rs.Nextrecordset
Lingkaran
Conn.Close
Setel RS = Tidak Ada
Setel Conn = Tidak Ada
%>
</boable>
<Metode form = getAction = list.asp>
<Jenis input = nama tersembunyi = nilai pageno = < % = pageno % >>
< %
Jika Pageno> 1 maka
response.write <input type = kirim nama = 'gulir' nilai = 'halaman sebelumnya'>
akhiri jika
Jika RowCount = 0 dan Pageno <> Total
response.write <input type = kirim nama = 'gulir' nilai = 'halaman berikutnya'>
akhiri jika
response.write </form>
Akhiri jika
%>
< % End sub %>
Saya percaya setiap orang harus dapat sepenuhnya memahami program di atas, sehingga penulis tidak akan menjelaskannya secara rinci di sini. Perlu dicatat bahwa trik kecil digunakan dalam program ini <input type = hidden name = pageno value = < % = pageno % >>, yang merupakan bagian rahasia yang digunakan untuk meneruskan data setiap kali file ASP dipanggil, karena kami Perlu lulus parameter yang mewakili nomor halaman saat ini setiap kali kami memanggil program, dan Anda mungkin berpikir untuk menggunakan sesi, tetapi dalam hal menyimpan sumber daya sistem dan universalitas, menggunakan formulir tersembunyi untuk lulus data akan mencapai hasil yang lebih baik.
Oke, saatnya untuk mengucapkan selamat tinggal lagi. ;