<%
'Plateforme : Win2000+IIS5.0+Sql2000
'PS : mise à niveau de la dernière version. La dernière version était la version SQL et aucune procédure stockée n'a été utilisée.
'Version précédente : [Original] Excellent code de pagination de données au niveau d'un million - (occupé depuis longtemps) (http://bbs.bccn.net/thread-175543-1-1.html)
'---------------------------------------------Le code suivant est le code de la page Web
Réponse.Buffer = True
Dim SqlLocalName, SqlUsername, SqlPassword, SqlDatabaseName
Dim ConnStr,Conn
''''''''''''''''''''''''' Base de données SQL'''''''''''''' '''''' '''''''''''''''''''''''''''''''
SqlLocalName =(local)'IP de connexion [IP étrangère locale (locale)]
SqlUsername=sa 'Nom d'utilisateur de la base de données
SqlPassword=XXXXXX 'Mot de passe utilisateur
SqlDatabaseName=NewsTable 'Nom de la base de données
ConnStr = Provider=Sqloledb;ID utilisateur= & SqlUsername & ; Mot de passe= & SqlPassword & ; Catalogue initial = & SqlDatabaseName & ;
'''''''''''''''''''''''''''''''''''''' '''''''' '''''''''''''''''''''''''''''''''
En cas d'erreur, reprendre ensuite
Définir Conn=Server.CreateObject(ADODB.Connection)
Conn.open ConnStr
Si erreur alors
err.Effacer
SetConn=Rien
Response.Write <div style='font-size:14px;color=#ff0000' align='center'>Erreur de connexion à la base de données, veuillez vérifier la chaîne de connexion à la base de données</div>
Réponse.Fin
Fin si
'Cette classe exécute le code d'instanciation sans prendre en compte toutes les conditions possibles de pagination. Cette catégorie est pour référence seulement
'------------------------------------------------ - -------------------------------------------------
'PageNo-page actuelle;PageSizeX-taille de la page;PageCountX-nombre total de pages;FieldCount-nombre total d'enregistrements;StrWhere-conditions de requête
Dim PageNo,PageSizeX,PageCountX,FieldCount,StrWhere
'Effectuer la mission
PageNo=trim(Request.Querystring(PageNo))
PageSizeX=30' définit la taille de la pagination
if isnumeric(PageNo) ou PageNo= then'S'il n'y a pas de valeur de page, initialisez la valeur
Numéro de page = abs (No de page)
si PageNo=0 alors PageNo=1
autre
Numéro de page = 1
finir si
StrWhere=(ClassCode=0101 and Hits>20)'Remarque, faites attention à la longueur des caractères ici
set recom = serveur.createobject (adodb.command)
recom.activeconnection = Conn
recom.commandtype = 4
recom.commandtext = News_Class
recom.Parameters.Appendrecom.CreateParameter (@StrWhere,202,1,100,StrWhere)
recom.Parameters.Appendrecom.CreateParameter (@PageSize,3,1,,PageSizeX)
recom.Parameters.Appendrecom.CreateParameter (@PageIndex,3,1,,PageNo)
définir rs = recom.execute()
si rs.eof alors
set rs=rien : set recom=rien : Conn.Close : set Conn=rien
réponse.write <script LANGUAGE='javascript'>alert('Aucun enregistrement trouvé actuellement, veuillez revenir en arrière et réessayer !');history.go(-1);</script>
réponse.end
finir si
'Afficher les données
faire sans rs.eof
réponse.write&rs(Titre)& Ajouter une heure :&rs(AddTime)&<br/>
rs.movenext
boucle
'Obtenir le nombre total d'enregistrements et calculer le nombre de pages
définir rs = rs.NextRecordset
si rs(countx) > 0 alors
FieldCount=rs(nombrex)
autre
Nombre de champs = 0
finir si
si (FieldCount mod PageSizeX)>0 alors
PageCountX=((FieldCount - (FieldCount mod PageSizeX))/ PageSizeX)+1
autre
PageCountX= (FieldCount / PageSizeX)
finir si
'Fermer et libérer les ressources associées
set rs=rien : set recom=rien : Conn.Close : set Conn=rien
'Afficher la pagination
si Numéro de Page<=1 alors
Response.Write <font color='#FF0000'>[Accueil] [Page précédente]</font>
autre
Response.Write[<a href='?PageNo=1' target='_self' title='Homepage'><font color='#FF0000'>Page d'accueil</font></a>]
Response.Write[<a href='?PageNo=&(PageNo-1)&' target='_self' title='Page précédente'><font color='#FF0000'>Page précédente</font>< /a >]
finir si
si PageNo>=PageCountX alors
Réponse.Écrire <font color='#FF0000'>[page suivante] [dernière page]</font>
autre
Response.Write[<a href='?PageNo=&(PageNo+1)&'target='_self' title='Page suivante'><font color='#FF0000'>Page suivante</font>< /a >]
Response.Write[<a href='?PageNo=&PageCountX&' target='_self' title='Dernière page'><font color='#FF0000'>Dernière page</font></a>]
finir si
Response.Write[Page <font color=red>&PageNo&</font>/total <font color=red> & PageCountX &</font>]
Response.Write [Total<font color=red>&FieldCount&</font> éléments<font color=red>& PageSizeX & </font> éléments/page]
Response.Write Accédez à & <input id=zhuanpage name=zhuanpage size=2 value=&PageNo&> & page <input type=submit value=Go onclick=gotoPage()>
Réponse.Write</td></tr></table>
Response.Write<script>function gotoPage(){var pg=document.getElementById('zhuanpage').value;if(isNaN(pg)||pg>&PageCountX&||pg<0){window.alert('Veuillez être correct Entrez le numéro de page, qui ne peut être qu'un entier positif et il ne peut pas être supérieur à &PageCountX&');return false;}else{window.location.href='?PageNo='+document.getElementById('zhuanpage').value+'';return true;}}</script>
%>
'------------------------------------------------ - ------Le code suivant est le code de la procédure stockée
Procédure CREATENews_Class
--Informations d'actualité avec des millions de pages
(
@StrOù varchar(100),
@PageSize entier,
@PageIndexint
)
COMME
déclarer@strSQLvarchar(2000) -- instruction principale
declare@strCountSQL varchar(2000) -- instruction principale de l'enregistrement total
déclarer@strTmpvarchar(1000) -- variable temporaire
Set @strTmp = Select top + str (@PageSize) + Title, AddTime from Tb_News --Notez ici que plusieurs champs sont nécessaires pour lire plusieurs champs
si @StrWhere<>''
Commencer
Définissez @strSQL=@strTmp + où ID < (select min(ID) from (select top + str((@PageIndex-1)*@PageSize)+ ID from Tb_News Where +@StrWhere+order by ID desc)as tblTmp ) et +@StrWhere+ trier par ID desc
définir @strCountSQL=select count(ID) comme countx depuis Tb_News Where +@StrWhere+
Fin
autre
Commencer
Définir @strSQL=@strTmp + où ID < (select min(ID) from (select top + str((@PageIndex-1)*@PageSize)+ ID from Tb_News commander par ID desc)as tblTmp ) trier par ID desc
définir @strCountSQL=select count(ID) comme countx depuis Tb_News
Fin
si @PageIndex = 1
si @StrWhere<>''
Commencer
Définir @strSQL=@strTmp + Where +@StrWhere+ trier par ID desc
Fin
autre
Commencer
Définir @strSQL=@strTmp + trier par ID desc
Fin
exécutable (@strSQL)
exec (@strCountSQL)
ALLER