Was lautet Pagination Display, wenn ADO zugreift Datenbanken? Wenn Sie das Programm Electronic Bulletin Board auf vielen Websites verwendet haben, sollten Sie wissen, dass das Electronic Bulletin Board -Programm, um die Lesegeschwindigkeit der Seite zu verbessern Seiten und jede Seite zeigt eine bestimmte Anzahl von Beiträgen an, z. B. 20. Möchten Sie wissen, wie man Pagination Display implementiert? Bitte lesen Sie diesen Artikel!
Der Artikel "Achtzehn Kampfkünste dynamischer Website-Designs-ASP" hat seit der ersten Ausgabe den größten Teil eines halben Jahres mit Freunden verbracht. und üben Sie. Aus den Briefen, die ich von meinen Freunden erhalten habe, können wir eindeutig das Gefühl haben, dass sich die ASP -Fähigkeiten aller ständig verbessern. In letzter Zeit haben mir viele Freunde geschrieben und hoffen, dass ich einige Beispiele für ASP in der Verwendung im realen Leben schreiben kann. Aus diesem Grund habe ich mich aus dieser Ausgabe entschlossen, die Positionierung von "achtzehn Kampfkunst der dynamischen Website-Design-AS-Ausgabe" von der Einführung und Lernen von ASP-Grundkenntnissen zur Diskussion und Vertiefung des tatsächlichen Betriebs von ASP zu verlagern. Auf Wunsch meiner Freunde werde ich mich in diesem Problem darauf konzentrieren, wie die ADO -Datenbank Paging beim Zugriff auf sie angezeigt wird.
Was lautet Pagination Display, wenn ADO zugreift Datenbanken? Wenn Sie das Programm Electronic Bulletin Board auf vielen Websites verwendet haben, sollten Sie wissen, dass das Electronic Bulletin Board -Programm, um die Lesegeschwindigkeit der Seite zu verbessern Seiten und jede Seite zeigt eine bestimmte Anzahl von Beiträgen an, z. B. 20. Dies ist die Paginierungsanzeige von Datenbankabfragen.
Wie können wir also die Abfrageergebnisse der Datenbank paginieren? Es gibt tatsächlich viele Möglichkeiten, aber es gibt zwei Hauptmethoden:
1. Lesen Sie alle Datensätze in der Datenbank, die die Abfragebedingungen gleichzeitig in den Datensatz erfüllen, und speichern Sie sie im Speicher. (Seitenzahl) und AbsolutePage (Absolute Seite) zur Verwaltung der Paging -Verarbeitung.
2. Gemäß den Anweisungen des Kunden muss die angegebene Anzahl der Datensätze ausgelesen und aus den Datensätzen angezeigt werden, die die Abfragebedingungen jedes Mal entsprechen.
Der Hauptunterschied zwischen den beiden besteht darin, dass erstere alle Aufzeichnungen gleichzeitig in das Gedächtnis liest und dann nach den Anweisungen Urteile und Analysen nach den Anweisungen beurteilt, um die Auswirkung der Paginierungsanzeige zu erzielen, während die letzteren auf der Grundlage der Anweisungen Urteile fällen und die festlegen und die festlegen Die angegebene Nummer, um die Abfragebedingungen zu erfüllen.
Wir können deutlich das Gefühl haben, dass, wenn die Anzahl der Datensätze in der Datenbank Zehntausende oder mehr erreicht, die Ausführungseffizienz der ersten Methode erheblich niedriger ist Übertragen werden. Wenn jedoch die Anzahl der Datensätze in der Datenbank auf dem Server und die Anzahl der Personen online nicht groß ist, ist die Ausführungseffizienz der beiden fast gleich. Das ASP -Programm der ersten Methode ist relativ geschrieben. Die zweite Methode ist viel einfacher und klar.
Hier nimmt der Autor unser gemeinsames ASPBBS -Programm als Beispiel, um zu analysieren, wie die Paginationsanzeigefunktion im BBS -Programm implementiert wird. Viele.
Die Pagination wird angezeigt, wenn ADO auf die Datenbank zugreift, um die Datensätze des Datensatzes zu bedienen. Daher müssen wir zunächst die Eigenschaften und Methoden des Reordset -Objekts verstehen:
BOF -Attribut: Der aktuelle Indikator bezieht sich auf die erste Transaktion zum Datensatz.
EOF -Attribut: Der aktuelle Indikator bezieht sich auf die letzte Transaktion zum Datensatz.
MOVE -Methode: Metriken auf einen Datensatz im Datensatz verschieben.
AbsolutePage -Eigenschaft: Legt den aktuellen Standort des Datensatzes fest.
PageCount -Eigenschaft: Zeigt an, wie viele Seiten von Daten ein Datensätze -Objekt enthält.
PageSize -Eigenschaft: Zeigt die Anzahl der Aufzeichnungen an, die auf jeder Seite des Recordset -Objekts angezeigt werden.
RecordCount -Eigenschaft: Zeigt die Gesamtzahl der Datensätze des Recordset -Objekts an.
Schauen wir uns diese wichtigen Attribute und Methoden genauer an
1. BOF- und EOF -Attribute
Normalerweise schreiben wir Code in ein ASP -Programm, um die BOF- und EOF -Attribute zu überprüfen, um den Speicherort des Datensatzes zu kennen, auf das der aktuelle Indikator verwendet wird. Linie ist der Umfang des Recordset -Objekts wurde überschritten.
Zum Beispiel: < %wenn nicht rs.eof dann ... %>
< % wenn nicht (Rs.Bof und Rs.eof) %>
Wenn sich der aktuelle Datensatzspeicherort in einem Recordset -Objekt befindet
Wenn die erste Zeile aufgezeichnet wird, gibt das BOF -Attribut wahr, ansonsten falsch zurück.
Wenn die aktuelle Datensatzposition nach der letzten Zeile eines Recordset -Objekts erfolgt, gibt die EOF -Eigenschaft true zurück, andernfalls gibt sie false zurück.
Sowohl BOF als auch EOF sind falsch: bedeutet, dass sich der Indikator im Datensatz befindet.
BOF ist wahr: Der aktuelle Indikator bezieht sich auf den ersten Datensatz zum Datensatz. EOF ist wahr: Der aktuelle Indikator bezieht sich auf den letzten Datensatz zum Datensatz.
Sowohl BOF als auch EOF sind wahr: Es gibt keinen Datensatz im Datensatz.
2. Verschieben Sie die Methode
Sie können die Move -Methode verwenden, um Metriken auf einen Datensatz im Datensatz mit der Syntax wie folgt zu verschieben:
rs.move numrecords, starten Sie
Hier ist RS eine Objektvariable, in der ein Datensatz angibt, das sich bei der aktuellen Datensatzposition bewegen möchte. das Startetik.
Alle Rekordobjekte unterstützen die Verschiebungsmethode. Methode, der ein Fehler wird generiert.
MOVEFIRST -Methode: Verschieben Sie die aktuelle Datensatzposition auf den ersten Datensatz.
MOVELAST -Methode: Verschieben Sie die aktuelle Datensatzposition auf den letzten Datensatz.
MOVENEXT -Methode: Verschieben Sie die aktuelle Datensatzposition auf den nächsten Datensatz. MovePrevious -Methode: Verschieben Sie die aktuelle Datensatzposition auf den vorherigen Datensatz.
Move [n] Methode: Verschieben Sie den Index in den n -ten Stiftdatensatz, n startet von 0.
3.. Absolutepage -Attribute
Die AbsolutePage -Eigenschaft legt die Seitenzahl der Seiten fest, auf denen sich die Seite befindet. Pagessize -Datensätze). Es muss hier angemerkt werden, dass nicht alle Datenanbieter diese Eigenschaft unterstützen. Seien Sie also vorsichtig, wenn Sie sie verwenden.
Das Gleiche wie die AbsolutePosition -Eigenschaft, beginnt die Absolutepage -Eigenschaft mit 1. Wenn der aktuelle Datensatz die erste Zeile des Rekordsets ist, beträgt der Absolutepage 1. Die AbsolutePage -Eigenschaft kann so eingestellt werden, dass sie in die erste Zeilenrekordposition einer angegebenen Seite wechseln.
4. Absolutepositionseigenschaft
Wenn Sie den aktuellen Standort der Metrik im Datensatz festlegen müssen, können Sie die AbsolutePosition -Eigenschaft verwenden.
Der Wert der Absolutepositionseigenschaft ist die Position des Stromindikators relativ zur ersten Transaktion, die ab 1 beginnt, dh die Absoluteposition der ersten Transaktion ist 1.
Beachten Sie, dass beim Zugriff auf Datensätze keine Garantie dafür gibt, dass Datensätze jedes Mal in derselben Reihenfolge angezeigt werden.
Um AbsolutePosition zu ermöglichen, müssen Sie es zunächst so einstellen, dass der Benutzer Cursor (Zeiger) verwendet wird, und der ASP -Code lautet wie folgt:
rs2.cursorLocation = 3
5. PageCount -Eigentum
Verwenden Sie die PageCount -Eigenschaft, um festzustellen, wie viele Seiten von Daten ein Datensatz eingesetzt werden. Die Seite hier ist eine Sammlung von Datensätzen, und ihre Größe entspricht der Einstellung der PageSize -Eigenschaft. . Es muss beachtet werden, dass nicht alle Datenanbieter diese Eigenschaft unterstützen.
6. Pagesize -Eigenschaft
Die PageSize -Eigenschaft ist der Schlüssel zur Bestimmung, wie Ado beim Zugriff auf Datenbanken paginiert. Setzt und erstellt eine Seitengröße, sodass die AbsolutePage -Eigenschaft auf den ersten Aufzeichnung anderer logischer Seiten verschoben werden kann. Die PageSize -Eigenschaft kann jederzeit festgelegt werden.
7. RecordCount -Eigentum
Dies ist auch eine sehr häufige und wichtige Eigenschaft. Zum Beispiel: < %Totle = Rs.RecordCount %>
Nachdem Sie die oben genannten Eigenschaften und Methoden von Datensatzobjekten verstanden haben, sollten Sie überlegen, wie Sie sie verwenden, um den Zweck unserer Pagination zu erreichen. Zunächst können wir einen Wert für die PageSize -Eigenschaft festlegen, wodurch die Anzahl der Zeilen angibt, die eine Seite aus der Datensatzgruppe bilden. Um die angezeigte Seitenzahlen zu erhalten; Es scheint sehr nicht kompliziert zu sein.
Wir haben eine so einfache BBS -Anwendung aufgebaut, die die folgenden Felder in der Datenbank enthält: ID, automatische Nummer jedes Beitrags; Zeitpunkt der Veröffentlichung. Der DSN der Datenbank ist BBS. Wir haben alle Schritte bei der Anzeige von Post Paging in einem Prozess namens Showlist () für einen einfachen Anruf eingesetzt. Das Verfahren ist wie folgt:
'---- BBS Show Post Paging ---
< %Sub showlist () %>
< %
PGSZ = 20 'Set Switch, Geben Sie die Anzahl der auf jeder Seite angezeigten Beiträge an. Die Standardeinstellung beträgt 20 Beiträge pro Seite
Setzen Sie conn = server.createObject (adodb.Connection)
Setzen Sie rs = server.createObject (adodb.Recordset)
SQL = SELECT* aus Nachrichtenreihenfolge nach ID dessen
'Fragen Sie alle Beiträge ab und ordnen Sie sie in umgekehrter Reihenfolge nach Post -ID an
Conn.open Bbs
Rs.opensql, Conn, 1,1
Wenn rscordcount = 0 dann
Antwort. < /center> < /p>
anders
Rs.PageSize = Cint (PGSZ) 'Stellen Sie den Wert der PageSize -Eigenschaft fest
Total = int (rscordCount / pgsz * -1) * -1 'Berechnen Sie die Gesamtzahl der Seiten, die angezeigt werden können
Pageno = Anfrage (Pageno)
Wenn pageno = dann
Pageno = 1
anders
Pageno = pageno+1
Pageno = pageno-1
Ende wenn
Scrollaction = request (Scrollaction)
Wenn scrollraction = vorherige Seite dann dann
Pageno = pageno-1
Ende wenn
Wenn scrollraction = nächste Seite dann
Pageno = pageno+1
Ende wenn
Wenn Pageno <1 dann
Pageno = 1
Ende wenn
n = 1
Rs.absolutepage = Pageno
Response.write <center>
Position = Rs.PageSize*Pageno
PageBegin = Position-Rs.PageSize+1
Wenn Position <Rs.RecordCount dann dann
pagend = Position
anders
Pagend = Rs.RecordCount
Ende wenn
Response.write <p> <font color = 'navy'> <b> Datenbankabfrage Ergebnis: < /b>
Response.write (es gibt insgesamt & rscordCount und Informationen, die die Bedingungen, Anzeige & PageBegin &-& Pagend &) < /font> < /p> erfüllen
Antwort.
Antwort. B> E -Mail < /b> < /td> <td> <b> Veröffentlichtes Datum < /b> < /td> < /font> <tr bgcolor =#ffffff>
Tust während nicht (Rs ist nichts)
RowCount = rs.pageSize
Tun, während nicht Rs.eof und RowCount> 0
Wenn n = 1 dann
Response.write <tr bgcolor =#ffffff>
ANDERS
Response.write <tr bgcolor =#eeeee>
Ende wenn
n = 1-n %>
<Td> <span style = font-size: 9pt> <a href = 'view.asp? Key = < % = rs (id) %>'> < % = rs (Subjekt) %> < /a> < / Span> </td>
<Td> <span style = Schriftgröße: 9PT> < % = RS (Name) %> < /a> < /span> < /td>
<Td> <span style = Schriftgröße: 9PT> <a href = mailto: < % = RS (E-Mail) % >> < % = RS (E-Mail) %> < /a> < /span> < /td>
<Td> <span style = font-size: 9pt> < % = rs (postdate) %> < /span> < /td>
< /Tr>
< %
RowCount = RowCount - 1
Rs.Movenext
Schleife
Stellen Sie Rs = Rs.NexTrecordset ein
Schleife
Conn.close
Setzen Sie Rs = nichts
Setzen Sie Conn = nichts
%>
< /Table>
<Formmethode = getAction = list.asp>
<Eingabetyp = Hidden Name = pageno value = < % = pageno % >>
< %
Wenn Pageno> 1 dann
Antwort.
Ende wenn
Wenn RowCount = 0 und Pageno <> insgesamt dann dann
Antwort.
Ende wenn
response.write < /form>
Ende wenn
%>
< % Ende Sub %>
Ich glaube, jeder sollte in der Lage sein, das obige Programm vollständig zu verstehen, sodass der Autor es hier nicht im Detail erklären wird. Es ist erwähnenswert, dass in diesem Programm ein kleiner Trick verwendet wurde. müssen Parameter übergeben, die die aktuelle Seitenzahl jedes Mal repräsentieren, wenn wir das Programm aufrufen, und Sie können die Verwendung der Sitzung überlegen. In Bezug auf das Speichern von Systemressourcen und die Universalität werden jedoch ein solches verstecktes Formular zur Übergabe von Daten bessere Ergebnisse erzielt.
Okay, es ist Zeit, sich wieder zu verabschieden. ; Wenn Sie bessere Vorschläge haben, senden Sie mir bitte einen Brief :)