Cet article présente principalement comment afficher la pagination de la base de données ADO.
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 claire.
Ici, l'auteur prendra notre programme ASP commun ASP 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.
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 indiqué par l'indicateur actuel. Ligne est la portée de l'objet RecordSet a été dépassée.
Par exemple: <% sinon Rs.Eof alors ...%>
<% sinon (Rs.Bof et Rs.Eof)%>
Si la position d'enregistrement actuelle est avant la première ligne d'un objet RecordSet, la propriété BOF renvoie True, sinon il renvoie false.
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 affiche la pagination après la pagination ---
- <% Subshowlist ()%>
- <%
- PGSZ = 20 'Setter Switch, spécifiez le nombre de messages affichés sur chaque page, la valeur par défaut est de 20 messages par page
- SetConn = server.createObject (adodb.connection)
- Setrs = server.createObject (adodb.recordSet)
- SQL = SELECT * FROMMESSAGEORDBYIDDESC
- «Interrogez tous les messages et organisez-les dans l'ordre inverse par ID de poste
- Conn.openbbs
- Rs.OpenSQL, Conn, 1,1
- Ifrs.recordCount = 0Then
- 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'calcuule le nombre total de pages qui peuvent être affichées
- Pageno = demande (pageno)
- ifpageno = alors
- Pageno = 1
- autre
- Pageno = pageno + 1
- Pageno = pageno-1
- endire
- ScrollAction = Request (ScrollAction)
- ifscrollAction = page précédente alors
- Pageno = pageno-1
- endire
- ifscrollAction = page suivante alors
- Pageno = pageno + 1
- endire
- ifpageno <1then
- Pageno = 1
- endire
- n = 1
- Rs.Absolutepage = Pageno
- Réponse.write <enter>
- position = Rs.Pagesize * Pageno
- PageBegin = position-rs.pagesize + 1
- ifPosition <Rs.recordCountThen
- Pagend = position
- autre
- Pagend = Rs.recordCout
- endire
- Réponse.write <p> <fontcolor = 'Navy'> <b> Résultats 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 <TableWidth = 600Border = 1CellPadding = 4CellSpacing = 0BGColor = # ffffff>
- Response.Write <trbgColor = # 5FB5E2> <FonTSize = 2> <Td> <b> Thème </b> </td> <td> <b> Utilisateurs </b> </td> <td> <b> Email </b> </td> <td> <b> Date publiée </b> </td> </font> <trbgColor = # ffffff>
- Dowhilenot (rsisnothing)
- RowCount = Rs.PageSize
- Dowhilenotrs.eofandrowcount> 0
- IFN = 1THEN
- Réponse.write <trbgColor = # ffffff>
- AUTRE
- Response.Write <trbgColor = # eeeee>
- Endire
- n = 1-n%>
- <td> <spanstyle = font-size: 9pt> <href = 'View.asp? Key = <% = rs (id)%>'> <% = rs (sujet)%> </a> </span> </td>
- <td> <spanstyle = font-size: 9pt> <% = rs (nom)%> </a> </span> </td>
- <td> <spanstyle = font-size: 9pt> <href = mailto: <% = rs (e-mail)% >> <% = rs (e-mail)%> </a> </span> </td>
- <td> <spanstyle = font-size: 9pt> <% = rs (postdate)%> </span> </td>
- </tr>
- <%
- RowCount = RowCount-1
- Rs.MovEnext
- Boucle
- setRS = Rs.NExTRecordSet
- Boucle
- Conn.Close
- setrs = rien
- setConn = rien
- %>
- </ Table>
- <FormMethod = getAction = list.asp>
- <futType = HiddenName = Pagenovalue = <% = pageno% >>
- <%
- ifpageno> 1ment
- réponse.write <putype = soumidName = 'ScrollAction'Value =' Page précédente '>
- endire
- ifrowcount = 0AndPageNo <> totalThen
- réponse.write <inputType = soumidName = 'ScrollAction'Value =' Page suivante '>
- endire
- réponse.write </ form>
- Endire
- %>
- <% Endsub%>