Direkomendasikan: Gunakan ASP untuk memanggil tampilan dan prosedur tersimpan di database 1. Kata Pengantar ASP (Halaman Server Aktif) adalah lingkungan skrip sisi server, yang didukung oleh IIS3.0 Microsoft atau lebih tinggi. Ini dapat digunakan untuk membuat halaman web yang dinamis atau untuk menghasilkan aplikasi web yang kuat. Halaman ASP termasuk tag HTML, teks dan
Apa itu tampilan pagination saat ADO mengakses database? Jika Anda telah menggunakan program papan buletin elektronik di banyak situs web saat ini, Anda harus tahu bahwa untuk meningkatkan kecepatan bacaan halaman, program papan buletin elektronik umumnya tidak mencantumkan semua posting dalam satu halaman, tetapi membaginya menjadi beberapa halaman untuk menampilkan sejumlah posting per halaman, seperti 20 postingan. Ini adalah tampilan pagination dari kueri basis data. Jika Anda belum memahaminya, Anda akan memahaminya dengan melihat hasil kueri mesin pencari seperti Yahoo.
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 simpan dalam memori. Kemudian kelola pemrosesan paging melalui beberapa atribut yang disediakan oleh objek Recordset ADO yang secara khusus mendukung pemrosesan paging: halamanze (ukuran halaman), pagecount (nomor halaman) dan absolutepage (halaman absolut).
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, sementara yang terakhir membuat penilaian berdasarkan instruksi dan membaca jumlah catatan yang ditentukan yang memenuhi kondisi kueri ke dalam ingatan, sehingga secara langsung mencapai fungsi tampilan paginasi.
Kita dapat dengan jelas merasakan bahwa ketika jumlah catatan dalam database mencapai puluhan ribu atau lebih, efisiensi eksekusi metode pertama akan jauh lebih rendah daripada metode kedua, karena ketika setiap pelanggan meminta halaman, semua catatan yang memenuhi kriteria harus disimpan dalam memori server, dan kemudian paging dan pemrosesan lainnya dilakukan. Jika lebih dari 100 pelanggan bertanya secara online pada saat yang sama, efisiensi eksekusi aplikasi ASP akan sangat terpengaruh. Namun, ketika jumlah catatan di server dan jumlah orang secara online pada saat yang sama tidak terlalu besar, efisiensi eksekusi keduanya hampir sama. Pada saat ini, metode pertama umumnya diadopsi, karena penulisan program ASP dari metode pertama jauh lebih sederhana dan lebih jelas daripada metode kedua.
Di sini, penulis akan mengambil program ASP BBS umum kami sebagai contoh untuk menganalisis cara mengimplementasikan fungsi tampilan pagination dalam program BBS. Karena jumlah catatan database dan jumlah orang yang mengakses secara bersamaan dalam program BBS yang biasanya kami gunakan tidak terlalu banyak, sehingga 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 catatan saat ini di halaman mana yang berada. Properti Absoluteposition: Lokasi metrik saat ini dalam catatan.
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. Menggunakan atribut BOF dan EOF, kita dapat mengetahui apakah objek Recordset berisi catatan atau apakah garis rekaman bergerak telah melebihi ruang lingkup objek Recordset.
menyukai:
< % jika tidak rs.eof maka ... %>
< % jika tidak (rs.bof dan rs.eof) %>
Jika posisi catatan saat ini sebelum baris pertama dari objek Recordset, properti BOF mengembalikan true, jika tidak ia mengembalikan False.
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 RS adalah variabel objek, menunjukkan objek Recordset yang ingin bergerak ketika posisi catatan saat ini; NumRecords adalah rumus perhitungan angka positif dan negatif yang menetapkan jumlah pergerakan posisi catatan saat ini; Mulai adalah item opsional untuk menentukan label untuk awal catatan.
Semua objek Recordset mendukung metode MOVE. Jika parameter NumRecords lebih besar dari nol, posisi catatan saat ini bergerak ke ujung; Jika kurang dari nol, posisi catatan saat ini bergerak ke awal; Jika objek Recordset kosong memanggil metode MOVE, 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 halaman mana catatan saat ini berada; Gunakan properti halaman untuk membagi objek Recordset menjadi halaman logis, dan jumlah catatan untuk setiap halaman adalah halaman (kecuali untuk halaman terakhir yang mungkin memiliki kurang dari catatan halaman). 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. Bahkan jika jumlah catatan pada halaman terakhir kurang dari nilai halaman, halaman terakhir dianggap sebagai halaman pagecount. Harus dicatat bahwa tidak semua penyedia data mendukung properti ini.
6. Atribut Halaman
Properti halaman adalah kunci untuk menentukan bagaimana ADO paginat saat mengakses database. Menggunakannya, Anda dapat memutuskan berapa banyak catatan yang membentuk halaman logis. 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. Kami sering menggunakan properti RecordCount untuk mengetahui berapa banyak catatan yang berisi objek Recordset. Sebagai contoh: < %totle = rs.recordcount %> Setelah memahami sifat dan metode di atas dari objek recordset, mari kita pertimbangkan bagaimana menggunakannya untuk mencapai tujuan tampilan pagination kami. Pertama, kita dapat menetapkan nilai untuk properti halaman, dengan demikian menentukan jumlah baris yang merupakan halaman yang diambil dari grup catatan; Kemudian gunakan properti RecordCount untuk menentukan jumlah total catatan; kemudian bagi jumlah total catatan dengan halaman untuk mendapatkan jumlah total halaman yang ditampilkan; Akhirnya, mengakses halaman yang ditentukan dapat diselesaikan melalui properti absolutepage. Sepertinya sangat tidak rumit. Mari kita lihat bagaimana program harus diimplementasikan?
Kami telah membangun aplikasi BBS sederhana seperti itu, yang memiliki lima bidang berikut dalam basis datanya: ID, jumlah otomatis setiap posting; subjek, subjek dari setiap posting; Nama, nama pengguna yang menambahkan posting; Email, alamat email pengguna; Postdate, waktu menambahkan 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:
| Berikut ini adalah konten yang dikutip: /'---- BBS Tampilkan Posting Paging ---- < %Sub showlist () %> < % Pgsz = 20 /'Set switch, 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 /'Query semua posting dan atur secara terbalik dengan urutan pos Conn.Open BBS Rs.open SQL, 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> Topik </b> </td> <td> <b> pengguna </b> </td> <tf> <b> </b> < /td> <td> <b> Tanggal yang diterbitkan <b> < /font < /Td> <b> <b> <b> < /font < /td> <b> <b> Tanggal <b> <b> < /tfon> < /td> <td> <b> Tanggal yang dipublikasikan <b> < /font> < /td> <b> <b> <b> Tanggal <b> < /TD> < /td> <b> <b> Tanggal yang dipublikasikan <b> < /font> < /td> <b> 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> </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 = get action = list.asp> <Jenis input = nama tersembunyi = nilai pageno = < % = pageno % >> < % Jika Pageno> 1 maka response.write <input type = kirim nama =/'gulir/' value =/'halaman sebelumnya/'> akhiri jika Jika RowCount = 0 dan Pageno <> Total response.write <input type = kirim nama =/'gulir/' value =/'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 tipe = nama tersembunyi = nilai pageno = < % = pageno % >>, yang merupakan bagian rahasia yang digunakan untuk lulus data setiap kali file ASP dipanggil. Karena kita perlu melewati parameter yang mewakili nomor halaman saat ini setiap kali program dipanggil, Anda mungkin berpikir untuk menggunakan sesi, tetapi dalam hal menghemat sumber daya sistem dan universalitas, menggunakan bentuk tersembunyi untuk lulus data akan mencapai hasil yang lebih baik.
Oke, saatnya untuk mengucapkan selamat tinggal lagi. Jika Anda tidak sepenuhnya memahami program yang tercantum dalam artikel ini, Anda harus menambahkan beberapa bahan bakar ke tata bahasa VBScript; Jika Anda memiliki beberapa pertanyaan, saya dapat melakukan yang terbaik untuk menjawabnya; Jika Anda memiliki saran yang lebih baik, kirimkan saya surat.
Bagikan: Hasilkan halaman web statis dengan mengganti tag Semua orang tahu bahwa halaman web statis HTML lebih mungkin diindeks oleh mesin pencari. Menghasilkan halaman web HTML secara dinamis juga dapat meningkatkan jumlah halaman web di situs web, dan mesin pencari juga dapat mencakup lebih banyak. Apa gunanya meningkatkan kualitas halaman web? Saya pikir semua orang juga mengetahuinya. untuk