Un de mes programmes de pagination asp + sqlserver : la caractéristique de ce programme est de déposer les enregistrements de la page en cours sur la page. Les performances sont bonnes et il n'y a pas besoin de procédures stockées. Le code n'étant pas encapsulé, il est très fragmenté. Pour l'utiliser dans votre programme, vous devez le lire brièvement. Faites ensuite attention à la signification des endroits que vous devez vous fixer. Certains peuvent être omis. Certains passages de paramètres peuvent également être omis.
Le code est le suivant :
'''' L'outil de pagination Snow de Saibei (serveur SQL) ne nécessite pas de procédures stockées --------------------------- ---
'Il y a # dans les commentaires ## nécessite les paramètres utilisateur
'Il y a une description du paramètre passant** dans le commentaire à transmettre via les paramètres.
'Définir les variables
dim tOption 'conditions de requête
dim tOrder 'Trier les chaînes
dim tOrderField 'Le champ de commande peut être obtenu via les paramètres : order_field
dim tOrderDirection 'La direction du tri peut être obtenue via les paramètres : order_direction
dim tPageSize 'Taille de la page
dim tTotalCount 'Le nombre total d'enregistrements peut être obtenu via les paramètres : t_count
dim tPageCount 'Nombre de pages
dim tCurPage 'Le numéro de la page actuelle peut être obtenu via les paramètres : page
dim tTableName 'Nom de la table ou de la vue
dim tFieldAlias 'alias du numéro de ligne
dim tFieldList 'Liste des champs de requête
dim tPageField 'Champ utilisé pour la pagination
dim r_count 'Nombre d'enregistrements trouvés
set rs=server.createobject("adodb.recordset") 'Objet de jeu d'enregistrements
' traitement de tri
tOrderField=Request("order_field") 'Récupérer le champ de tri (passage du paramètre**)
tOrderDirection=Request("order_dir") 'Obtenir le sens de tri (passage du paramètre**)
if(tOrderField="") then tOrderField="item_code" ' ### Définir le champ de tri par défaut
if(tOrderDirection="") then tOrderDirection="asc" ' ### Définir le sens de tri par défaut
'www.downcodes.com
tOrder=" trier par " & tOrderField & " " & tOrderDirection & " " 'Générer une chaîne de tri
'Définir les paramètres
tPageSize=find_rs_count ' ### Définir la taille de la page
tTableName="view_select1" ' ### Définir et interroger la table ou la vue
tFieldList=" * " ' ### Liste des champs à interroger
tPageField="item_code" ' ### Définir une clé primaire ou un champ d'index unique pour les calculs de pagination
'Traitement des pages
tCurPage=Request("page") 'Obtenir la page actuelle (passage du paramètre**)
tTotalCount=Request("t_count") 'Obtenir le nombre total de pages (passage de paramètres**)
if(tCurPage="") then tCurPage=1
si(cint(tCurPage)=0) alors tCurPage=1
si(tPageCount="") alors tPageCount =1
if(cint(tPageCount)=0) then tPageCount=1
' Construire des conditions de requête, qui seront certainement différentes selon le programme spécifique. Mais la dernière condition doit être "où ???"
tOption=" issue_flag='Y'" ' ### Définir les conditions
if f_c<>"" then tOPtion= tOPtion & f_c ' ### Définir les conditions
if trim(tOption)="" then
tOption = "where 1=1 " 'S'il n'y a aucune condition, ajoutez-en une vous-même.
autre
tOption= " où " & tOPtion
finir si
'Construisez la chaîne de requête, le cœur de ce programme de pagination. Cette chaîne de requête est l'enregistrement dont nous avons besoin pour télécharger uniquement la page actuelle.
si(tCourPage>1) alors
conStr="select top " & tPageSize & " " & tFieldList & " from " & tTableName & tOption
conStr =conStr & " et " & tPageField & " pas dans(select top " & tPageSize*(tCurPage-1) & " " & tPageField & " from " & tTableName & tOption & " " & tOrder & ") " & tOrder
autre
conStr="select top " & tPageSize & " " & tFieldList & " from " & tTableName & tOption & " " & tOrder
finir si
'Exécuter la requête principale et obtenir le jeu d'enregistrements correspondant
Appelez ConnDataBase() ' ### Établir une connexion à la base de données
rs.cursorlocation=3
rs.open conStr,conn,3,1 'Exécuter la requête
r_count = rs.recordcount
'Lorsque le nombre total d'enregistrements n'a pas été interrogé et que le nombre total d'enregistrements dépasse la taille de la page, interrogez le nombre total d'enregistrements dans les conditions actuelles.
if(r_count>=tPageSize ou tCurPage>1) et tTotalCount=0 alors
set rr=conn.execute("select count(*) from " & tTableName & " " & tOption)
tCompteTotal=rr(0)
rr.close()
setrr = rien
finir si
if(cint(tTotalCount)=0) then tTotalCount=r_count 'Si le nombre total d'enregistrements est égal à 0, définissez le nombre d'enregistrements dans la différence actuelle définie sur le nombre total d'enregistrements, indiquant que le nombre total actuel d'enregistrements est inférieur à la taille des pages
'Calculer le nombre de pages en utilisant la taille de la page et le nombre total d'enregistrements
si(cint(tTotalCount)>cint(tPageSize)) alors
tPageCount=cint((cint(tTotalCount) cint(tPageSize)))
si(cint(tTotalCount) mod cint(tPageSize))>0 alors
tPageCount =tPageCount +1
finir si
finir si
tCurPage=cint(tCurPage)
tPageCount=cint(tPageCount)
'------------------------------------------------ - -------------------
C'est l'intégralité du code. Les amis intéressés peuvent l'étudier, ou l'encapsuler et ajouter une navigation par pagination et d'autres méthodes. Quoi qu'il en soit, j'espère que ce code pourra être utile à tout le monde.