Qu'est-ce que l'affichage de la pagination lorsque ADO accède aux bases de données? Si vous avez utilisé le programme électronique du babillard sur de nombreux sites Web, vous devez savoir que pour améliorer la vitesse de lecture de la page, le programme électronique du babillard ne répertorie généralement pas tous les messages sur une seule page, mais à la place, il est divisé en multiple Pages à afficher, et chaque page affiche un certain nombre de messages, tels que 20. Vous voulez savoir comment implémenter l'affichage de pagination? Veuillez lire cet article!
L'article "Dix-huit arts martiaux de la conception de sites Web dynamiques - a passé la plupart du demi-année avec les amis depuis le premier numéro. et pratiquer. D'après les lettres que j'ai reçues de mes amis, nous pouvons clairement sentir que les compétences ASP de chacun s'améliorent constamment. Récemment, de nombreux amis m'ont écrit et j'espère pouvoir écrire quelques exemples d'ASP dans une utilisation réelle. Par conséquent, à partir de cette question, j'ai décidé de déplacer le positionnement de "dix-huit arts martiaux de l'édition dynamique de conception de site Web" de l'introduction et de l'apprentissage des connaissances de base de l'ASP à discuter et à approfondir le fonctionnement réel de l'ASP. À la demande de mes amis, dans ce numéro, je me concentrerai sur la façon d'afficher la pagination de la base de données ADO lors de l'accès.
Qu'est-ce que l'affichage de la pagination lorsque ADO accède aux bases de données? Si vous avez utilisé le programme électronique du babillard sur de nombreux sites Web, vous devez savoir que pour améliorer la vitesse de lecture de la page, le programme électronique du babillard ne répertorie généralement pas tous les messages sur une seule page, mais à la place, il est divisé en multiple pages à afficher, et chaque page affiche un certain nombre de messages, tels que 20. Il s'agit de l'affichage de pagination des requêtes de base de données.
Alors, comment pouvons-nous paginer les résultats de la requête de la base de données? Il y a en fait de nombreuses façons, mais il existe deux façons principales:
1. Lisez tous les enregistrements de la base de données qui remplissent les conditions de requête dans le coffre-fort en même temps et les stockent en mémoire. (Numéro de page) et Absolutepage (page absolue) pour gérer le traitement de la pagination.
2. Selon les instructions du client, le nombre spécifié d'enregistrements doit être lu et affiché à partir des enregistrements qui remplissent les conditions de requête à chaque fois.
La principale différence entre les deux est que le premier lit tous les enregistrements dans la mémoire à la fois, puis fait des jugements et des analyses en séquence en fonction des instructions pour atteindre l'effet de l'affichage de la pagination, tandis que le second fait des jugements en fonction des instructions et définit le Numéro spécifié pour répondre aux conditions de requête.
Nous pouvons clairement sentir que lorsque le nombre d'enregistrements dans la base de données atteint des dizaines de milliers ou plus, l'efficacité d'exécution de la première méthode sera nettement inférieure à celle de la deuxième méthode, car lorsque chaque client interroge la page, tous les résultats doivent être transféré. Cependant, lorsque le nombre d'enregistrements dans la base de données sur le serveur et le nombre de personnes en ligne en même temps ne sont pas importants, l'efficacité d'exécution des deux est presque la même. Le programme ASP de la première méthode est relativement écrit, la deuxième méthode est beaucoup plus simple et plus claire.
Ici, l'auteur prendra notre programme commun ASPBBS comme exemple pour analyser comment implémenter la fonction d'affichage de pagination dans le programme BBS. Car le nombre d'enregistrements de base de données et le nombre de personnes accédant simultanément dans le programme BBS que nous utilisons généralement ne sera pas trop beaucoup.
L'affichage de pagination lorsque ADO accède à la base de données est en fait pour faire fonctionner les enregistrements de l'enregistrement. Nous devons donc d'abord comprendre les propriétés et les méthodes de l'objet de réordon:
Attribut BOF: L'indicateur actuel fait référence à la première transaction à l'enregistrement.
Attribut EOF: L'indicateur actuel fait référence à la dernière transaction à l'enregistrement.
Déplacer la méthode: déplacer les métriques vers un enregistrement dans le plateau de disques.
Propriété Absolutepage: Définit l'emplacement actuel de l'enregistrement sur quelle page est située.
Propriété PageCount: affiche le nombre de pages de données qu'un objet RecordSet contient.
Propriété PageSize: Affiche le nombre d'enregistrements affichés sur chaque page de l'objet RecordSet.
Propriété RecordCount: affiche le nombre total d'enregistrements de l'objet RecordSet.
Examinons de plus près ces attributs et méthodes importants
1. Attributs BOF et EOF
Habituellement, nous écrivons du code dans un programme ASP pour vérifier les attributs BOF et EOF pour connaître l'emplacement de l'enregistrement auquel l'indicateur pointe. La portée de l'objet RecordSet a-t-elle été dépassée.
Par exemple: <% sinon Rs.Eof alors ...%>
<% sinon (Rs.Bof et Rs.Eof)%>
Si l'emplacement d'enregistrement actuel est dans un objet de coffre-fort
Lorsque la première ligne est enregistrée, l'attribut BOF renvoie True, sinon faux.
Si la position d'enregistrement actuelle est après la dernière ligne d'un objet RecordSet, la propriété EOF renvoie True, sinon il renvoie False.
BOF et EOF sont faux: signifie que l'indicateur est situé dans le plateau de disques.
BOF est vrai: l'indicateur actuel fait référence au premier enregistrement à l'enregistrement. EOF est vrai: l'indicateur actuel fait référence au dernier enregistrement à l'enregistrement.
BOF et EOF sont vrais: il n'y a pas d'enregistrement dans le plateau de disques.
2. Déplacer la méthode
Vous pouvez utiliser la méthode de déplacement pour déplacer les métriques vers un enregistrement dans l'encords, avec la syntaxe comme suit:
Rs.Move numRecords, commencez
Ici, RS est une variable d'objet, indiquant un objet RecordSet qui veut se déplacer lorsque la position d'enregistrement actuelle; la balise de départ.
Tous les objets RecordSet prennent en charge la méthode de déplacement. Méthode, une erreur sera générée.
MOCHE MOTIFST: Déplacez la position d'enregistrement actuelle vers le premier enregistrement.
MOTHE MOVELAST: Déplacez la position d'enregistrement actuelle vers le dernier enregistrement.
MOTHODE MOVENEXT: Déplacez la position d'enregistrement actuelle vers l'enregistrement suivant. MethPrevious Méthode: déplacez la position d'enregistrement actuelle vers l'enregistrement précédent.
Déplacer la méthode [n]: déplacer l'index vers l'enregistrement du Nth Pen, n commence à partir de 0.
3. Absolutepage Attributs
La propriété AbsolutePage définit le numéro de page de pages sur quelle page se trouve; utilisez la propriété Pagesize pour diviser l'objet d'enregistrement en pages logiques et le nombre d'enregistrements pour chaque page est Enregistrements de pages). Il faut noter ici que tous les fournisseurs de données ne prennent pas en charge cette propriété, alors soyez prudent lorsque vous l'utilisez.
Comme la propriété Absoluteposition, la propriété Absolutepage commence par 1. Si l'enregistrement actuel est la première ligne du coffre-tout, l'Absolutepage est 1. La propriété Absolutepage peut être définie pour passer à la première position d'enregistrement de ligne d'une page spécifiée.
4. Propriété absolue
Si vous devez déterminer l'emplacement actuel de la métrique dans le coffre-fort, vous pouvez utiliser la propriété Absolutepos.
La valeur de la propriété Absoluteposition est la position de l'indicateur actuel par rapport à la première transaction, qui commence à partir de 1, c'est-à-dire que l'absoluteposition de la première transaction est 1.
Notez que lors de l'accès à des ensembles de registres, rien ne garantit que les ensembles de registres apparaîtront dans le même ordre à chaque fois.
Pour activer Absolutepos, vous devez d'abord le définir pour utiliser le curseur utilisateur (pointeur), et le code ASP est le suivant:
rs2.cursorlocation = 3
5. Propriété PageCount
Utilisez la propriété PageCount pour déterminer le nombre de pages de données qu'un objet RecordSet contient. La page ici est une collection d'enregistrements de données, et sa taille est égale au réglage de la propriété PageSize. . Il faut noter que tous les fournisseurs de données ne prennent pas en charge cette propriété.
6. Propriété de pages
La propriété PageSize est la clé pour déterminer comment ADO pagine lors de l'accès aux bases de données. Définit et crée une taille de page, permettant à la propriété AbsolutePage d'être déplacée vers le premier enregistrement d'autres pages logiques. La propriété PageSize peut être définie à tout moment.
7. Propriété RecordCount
Il s'agit également d'une propriété très courante et importante. Par exemple: <% totle = Rs.recordCount%>
Après avoir compris les propriétés et les méthodes ci-dessus des objets de coffre-fort, considérons comment les utiliser pour atteindre le but de notre affichage de pagination. Tout d'abord, nous pouvons définir une valeur pour la propriété PageSize, spécifiant ainsi le nombre de lignes qui constituent une page prise à partir du groupe d'enregistrements; puis utilisez la propriété RecordCount pour déterminer le nombre total d'enregistrements; Pour obtenir le numéro total de la page affichée; Cela semble très compliqué.
Nous avons construit une application BBS si simple, qui a les cinq champs suivants dans sa base de données: ID, numéro automatique de chaque message; temps de publication. Le DSN de la base de données est BBS. Nous mettons toutes les étapes de l'affichage de la pagination de post dans un processus appelé showList () pour un appel facile. La procédure est la suivante:
'---- bbs montrent la post-pagination ---
<% Sub showlist ()%>
<%
PGSZ = 20 'Set Interrupteur, spécifiez le nombre de messages affichés sur chaque page, la valeur par défaut est de 20 messages par page
Définir Conn = Server.CreateObject (ADODB.Connection)
Set rs = server.createObject (adodb.recordSet)
SQL = SELECT * From Message Order by ID DESC
«Interrogez tous les messages et organisez-les dans l'ordre inverse par ID de poste
Conn.open bbs
Rs.OpenSQL, Conn, 1,1
Si Rs.RecordCount = 0 alors
Response.Write <p> <Anter> Désolé, il n'y a pas d'informations pertinentes dans la base de données! </ Center> </p>
autre
Rs.PageSize = Cint (PGSZ) 'Définissez la valeur de la propriété PageSize
Total = int (Rs.RecordCount / pgsz * -1) * - 1 'Calculez le nombre total de pages qui peuvent être affichées
Pageno = demande (pageno)
Si pageno = alors
Pageno = 1
autre
Pageno = pageno + 1
Pageno = pageno-1
terminer si
ScrollAction = Request (ScrollAction)
Si ScrollAction = page précédente alors
Pageno = pageno-1
terminer si
Si ScrollAction = page suivante alors
Pageno = pageno + 1
terminer si
Si pageno <1 alors
Pageno = 1
terminer si
n = 1
Rs.Absolutepage = Pageno
Réponse.write <enter>
position = Rs.Pagesize * Pageno
PageBegin = position-rs.pagesize + 1
Si la position <Rs.recordCount alors
Pagend = position
autre
PAgend = Rs.recordCount
terminer si
Réponse.write <p> <font color = 'Navy'> <b> Résultat de la requête de la base de données: </b>
Response.Write (il y a un total de & Rs.RecordCount et des informations qui remplissent les conditions, afficher et pagebin & - & Pagend &) </font> </p>
Response.Write <Table Width = 600 Border = 1 CellPadding = 4 CellSpacing = 0 bgColor = # ffffff>
Response.Write <tr BgColor = # 5FB5E2> <font size = 2> <td> <b> thème </b> </td> <td> <b> utilisateur </b> </td> <td> < B> e-mail </b> </td> <td> <b> Date publiée </b> </td> </font> <tr bgcolor = # ffffff>
Faire tout en ne faisant pas (RS n'est rien)
RowCount = Rs.PageSize
Faire tout en ne faisant pas Rs.Eof et RowCount> 0
Si n = 1 alors
Réponse.write <tr bgcolor = # ffffff>
AUTRE
Response.Write <tr bgColor = # eeeee>
Terminer si
n = 1-n%>
<td> <span style = font-size: 9pt> <a href = 'View.asp? Key = <% = rs (id)%>'> <% = rs (sujet)%> </s> </ / Span> </td>
<td> <span style = font-size: 9pt> <% = rs (name)%> </ a> </span> </td>
<td> <span style = Font-Size: 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
Boucle
Définir RS = Rs.NextreCordset
Boucle
Conn.Close
Définir RS = rien
Définir Conn = Rien
%>
</ Table>
<Formulaire méthode = getAction = list.asp>
<Type d'entrée = nom caché = Pageno Value = <% = Pageno% >>
<%
Si Pageno> 1 alors
réponse.Write <Type de saisie = soumettre name = 'ScrollAction' Value = 'Page précédente'>
terminer si
Si rowcount = 0 et pageno <> total alors
réponse.Write <Type de saisie = soumettre name = 'scrollaction' value = 'page suivante'>
terminer si
réponse.write </ form>
Terminer si
%>
<% End sous%>
Je crois que tout le monde devrait être en mesure de comprendre pleinement le programme ci-dessus, donc l'auteur ne l'expliquera pas en détail ici. Il convient de noter qu'une petite astuce a été utilisée dans ce programme <Type d'entrée = nom caché = Pageno Value = <% = Pageno% >>, qui est un passage secret utilisé pour transmettre des données chaque fois que le fichier ASP est appelé, car nous Besoin de transmettre des paramètres représentant le numéro de page actuel à chaque fois que nous appelons le programme, et vous pouvez penser à utiliser la session, mais en termes d'économie de ressources système et d'universalité, l'utilisation d'une forme aussi cachée pour transmettre des données obtiendra de meilleurs résultats.
D'accord, il est temps de dire au revoir. ; si vous avez de meilleures suggestions, envoyez-moi une lettre :)