Fonction de mise en œuvre du programme : affichage paginé des données dans deux tableaux de données.
Récemment, j'ai rencontré une exigence relativement rare, je me demande si vous l'avez rencontrée également, j'aimerais donc la partager avec vous
: deux parties de données, deux
.à partir d'emplacements différents. Les deux tables de la base de données sont définies comme bases de données DB1 et DB2, et tables Table1 et Tabel2. Les données de ces deux tables doivent être affichées respectivement dans les parties supérieure et inférieure de la page, et le même numéro de pagination doit être affiché. être utilisée, comme la première partie des données. Si cela ne suffit pas, la deuxième partie des données sera renseignée
'/*code*/
<%
Set objConn1=Server.CreateObject("ADODB.Recordset").
Définir objConn2=Server.CreateObject("ADODB.Recordset")
objConn1.Open "PROVIDER=SQLOLEDB;DATA SOURCE=localhost;UID=sa;PWD=123;DATABASE=DB1"
objConn2.Open "PROVIDER=SQLOLEDB;DATA SOURCE=localhost;UID=sa;PWD=123;DATABASE=DB2"
Page=CLng(Request.QueryString("Page"))
si page="" alors
page=1
finir si
StrSQL1="sélectionner * dans la commande Table1 par ID desc"
StrSQL2="select * from Table2 order by ID desc"
record_count1=Clng(objConn1.execute(StrSQL1)(0)) 'Obtenir le nombre d'enregistrements dans la première table
record_count2=Clng(objConn2.execute(StrSQL2)(0))'Obtenir le nombre d'enregistrements dans la deuxième table
record_count=record_count1+record_count2 'Obtenir le nombre d'enregistrements dans les deux tables et
If record_count>0 Then
page_size1=5 'Le nombre par défaut de parties affichées des données dans la première table par page
page_size2=5 'Nombre d'affichage par défaut de données partielles dans le deuxième tableau par page
page_count1=CInt(record_count1/page_size1)
If (record_count1 Mod page_size1)<(page_size1/2) Then page_count1=page_count1+1 'Obtenir le numéro de page de la première partie des données
page_count2=CInt(record_count2/page_size2)
If (record_count2 Mod page_size2)<(page_size2/2) Then page_count2=page_count2+1'Obtenir le numéro de page de la deuxième partie des données
if Cint(page_count2)=cint(page) then 'Supposer que la deuxième partie des données doit être inférieur, déterminez ici si la page actuelle est la dernière page avec moins de données
thepageRecordcount=record_count2-(page-1)*5 'Le nombre de données affichées sur la dernière page de la deuxième partie de données
page_size1=10-cint(thepageRecordcount) 'Le nombre d'éléments affichés sur la dernière page de la deuxième partie de la première partie des données'
page_size1=cint(thepageRecordcount) 'Obtenir le nombre d'éléments affichés dans la première partie de cette page
elseif cint(page)>cint(page_count2) then 'Après cela, toute la première partie des données sera
page_size1=10
page_size2=0
fin si
page_count=CInt(record_count/(page_size1+page_size2) 'Le nombre de pages dans les deux catégories ensemble
Si (record_count Mod (page_size1+page_size2))<((page_size1+page_size2)/2) Alors page_count=page_count+1
Si Page < 1 Alors
Page=1
Fin si
Si Page > nombre_pages Alors
Page = nombre_pages
Fin si
Dim Pagefrom,Pageto
Page à partir de = page-10
Pageto=page+10
si Pagefrom<1 alors
Page à partir de = 1
finir si
si Pageto>record_count alors
Pageto=page_count
finir si
Fin si
Si Page<=1 Then 'Afficher la requête sur la première page
StrSQL1="Sélectionnez Top "&page_size1&" * From Table1 "
StrSQL1=StrSQL1&" Trier par ID desc"
StrSQl2="Sélectionnez Top "&page_size1&" * From Table2 "
StrSQL2=StrSQL2&"trier par identifiant desc"
Sinon 'Afficher la requête à la page N
StrSQL1="Sélectionner le haut "&(Page-1)*page_size1&" ID de la table1 "
StrSQL1=StrSQL1&" Trier par ID Desc"
StrSQL1="SELECT Top 1 ID From ("&StrSQL1&") DERIVEDTBL Trier par ID "
'Réponse.Écrire(SQL)
identifiant =Trim(objConn1.execute(StrSQL1)(0))
StrSQL1="Sélectionner le haut "&page_size1&" * De la table1"
StrSQL1=StrSQL1&" où id<'"&id&"'"
StrSQL1=StrSQL1&" Trier par ID Desc"
StrSQL2="Sélectionnez Top "&(Page-1)*page_size2&" id From Table2 "
StrSQL2=StrSQL2&" Trier par ID Desc"
StrSQL2="SELECT Top 1 id From ("&StrSQL2&") DERIVEDTBL Trier par id "
id =Trim(objconn2.execute(StrSQL2)(0))
StrSQL2="Sélectionnez Top "&page_size2&" * From Table2 "
StrSQL2=StrSQL2&" où id<'"&id &"'"
StrSQL2=StrSQL2&" Trier par identifiant Desc"
Fin si
%>
<%
Si record_count>0 Alors
%>
<%
Définir Rs1=Server.CreateObject("Adodb.Recordset")
rs1.openStrSQL1,objconn1
Pour n = 1 À page_size1
Si rs1.Eof alors quittez pour
%>
<!--La première partie du contenu affiché en boucle-->
<%
rs1.MoveNext
Si rs1.EOF alors quittez pour
Suivant
rs1.fermer
définir rs1 = rien
%>
<%
Définir Rs2=Server.CreateObject("Adodb.Recordset")
rs2.openStrSQL2,objconn2
Pour n = 1 À page_size2
Si rs2.Eof alors quittez pour
%>
<!--La deuxième partie des boucles de contenu affichées-->
<%
rs2.MoveNext
Si rs2.EOF alors quittez pour
Suivant
rs2.fermer
définir rs2 = rien
%>
<!--Numéro de la page de résultat-->
<%if page<>"1" then%><a href=?page=<%=Cint(page-1)%>>Page précédente</a> <%end if%>
<% 'Utilisez une boucle for pour écrire la connexion du numéro de page
Pour i=Pagefrom à Pageto
si je = 0 alors
je = 1
terminer si
si i<>Cint(page) alors
strurl="<a href=?page="&i&"><font color=#000000>"&i&"</font></a>"
autre
strurl="<b><font color=#ce0031>"&i&"</font></b>"
terminer si
réponse.write strurl
réponse.écrire " "
suivant
%>
<%si page_count =1 ou (page_count-Cint(page))=0 alors
réponse.Write("")
autre
réponse.Écrivez "<a href=?page="&Cint(page+1)&">Page suivante</a>"
finir si
%>
<!--Numéro de la page de résultat-->
'/*Fin du code*/
Mon niveau est limité, le programme est approximatif, il peut y avoir des défauts~J'espère que vous pourrez me critiquer et me corriger~