Função de implementação do programa: exibição de paginação de dados em duas tabelas de dados
Recentemente, encontrei um requisito relativamente raro, então gostaria de compartilhá-lo com você
: duas partes de dados, duas. de locais diferentes As duas tabelas no banco de dados são definidas como bancos de dados DB1 e DB2, e as tabelas Tabela1 e Tabela2 devem ser exibidas nas partes superior e inferior da página, respectivamente, e o mesmo número de paginação deve. ser usado, como a primeira parte dos dados. Se não for suficiente, a segunda parte dos dados será preenchida em
'/*code*/
<%
Set objConn1=Server.CreateObject("ADODB.Recordset")
Definir 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("Página"))
se página = "" então
página=1
terminar se
StrSQL1 = "selecione * da ordem da Tabela 1 por ID desc"
StrSQL2="select * from Table2 order by ID desc"
record_count1=Clng(objConn1.execute(StrSQL1)(0)) 'Obtém o número de registros na primeira tabela
record_count2=Clng(objConn2.execute(StrSQL2)(0))'Obtém o número de registros na segunda tabela
record_count=record_count1+record_count2 'Obtém o número de registros nas duas tabelas e
If record_count>0 Then
page_size1=5 'O número padrão de partes exibidas dos dados na primeira tabela por página
page_size2=5 'Número de exibição padrão de dados parciais na segunda tabela por página
page_count1=CInt(record_count1/page_size1)
If (record_count1 Mod page_size1)<(page_size1/2) Then page_count1=page_count1+1 'Obtém o número da página da primeira parte dos dados
page_count2=CInt(record_count2/page_size2)
If (record_count2 Mod page_size2)<(page_size2/2) Then page_count2=page_count2+1'Obtém o número da página da segunda parte dos dados
if Cint(page_count2)=cint(page) then 'Suponha que a segunda parte dos dados deve ser menor, aqui determine se A página atual é a última página com menos dados
thepageRecordcount=record_count2-(page-1)*5 'O número de dados exibidos na última página da segunda parte dos dados
page_size1=10-cint(thepageRecordcount) 'O número de itens exibidos na última página da segunda parte da primeira parte dos dados'
page_size1=cint(thepageRecordcount) 'Obtém o número de itens exibidos na primeira parte desta página
elseif cint(page)>cint(page_count2) then 'Depois disso, toda a primeira parte dos dados será
page_size1=10
page_size2=0
fim se
page_count=CInt(record_count/(page_size1+page_size2) 'O número de páginas em ambas as categorias juntas
If (record_count Mod (page_size1+page_size2))<((page_size1+page_size2)/2) Then page_count=page_count+1
If Page <1 Then
Página=1
Terminar se
Se página> page_count então
Página = contagem_páginas
Fim se
esmaecer Pagefrom, Pageto
Página de=página-10
Páginato=página+10
se Páginade<1 então
Página de=1
terminar se
se Pageto>record_count então
Páginato=page_count
terminar se
Terminar se
If Page<=1 Then 'Exibir consulta na primeira página
StrSQL1="Selecione o topo "&page_size1&" * Da Tabela1 "
StrSQL1=StrSQL1&"Ordenar por ID desc"
StrSQl2="Selecione Top "&page_size1&" * Da Tabela2 "
StrSQL2=StrSQL2&"ordenar por id desc"
Else 'Exibir consulta na página N
StrSQL1="Selecione Top "&(Página-1)*page_size1&" ID da Tabela1 "
StrSQL1=StrSQL1&"Ordenar por id Desc"
StrSQL1="SELECIONE 1 ID principal de ("&StrSQL1&") DERIVEDTBL Ordenar por id "
'Resposta.Write(SQL)
id =Trim(objConn1.execute(StrSQL1)(0))
StrSQL1="Selecione o topo "&page_size1&" * Da Tabela1"
StrSQL1=StrSQL1&" onde id<'"&id&"'"
StrSQL1=StrSQL1&"Ordenar por id Desc"
StrSQL2="Selecione Top "&(Página-1)*page_size2&" id da Tabela2 "
StrSQL2=StrSQL2&"Ordenar por id Desc"
StrSQL2="SELECIONE 1 id principal de ("&StrSQL2&") DERIVEDTBL Ordenar por id "
id =Trim(objconn2.execute(StrSQL2)(0))
StrSQL2="Selecionar Top "&page_size2&" * Da Tabela2 "
StrSQL2=StrSQL2&" onde id<'"&id &"'"
StrSQL2=StrSQL2&" Ordenar por id Desc"
End If
%>
<%
Se record_count>0 Então
%>
<%
Definir Rs1=Server.CreateObject("Adodb.Recordset")
rs1.openStrSQL1,objconn1
Para n = 1 Para page_size1
Se rs1.Eof, então saia para
%>
<!--A primeira parte do conteúdo exibido faz um loop-->
<%
rs1.MoveNext
Se rs1.EOF, então saia para
Próximo
rs1.fechar
definir rs1 = nada
%>
<%
Definir Rs2=Server.CreateObject("Adodb.Recordset")
rs2.openStrSQL2,objconn2
Para n = 1 Para page_size2
Se rs2.Eof, então saia para
%>
<!--A segunda parte do conteúdo exibido faz um loop-->
<%
rs2.MoveNext
Se rs2.EOF, então saia para
Próximo
rs2.fechar
definir rs2 = nada
%>
<!--Número da página de resultados-->
<%if page<>"1" then%><a href=?page=<%=Cint(page-1)%>>Página anterior</a> <%end if%>
<% 'Use um loop for para escrever a conexão do número da página
Para i=Pagefrom para Pageto
se eu=0 então
eu=1
fim se
se i<>Cint(página) então
strurl="<a href=?page="&i&"><font color=#000000>"&i&"</font></a>"
outro
strurl="<b><font color=#ce0031>"&i&"</font></b>"
fim se
resposta.write strurl
resposta.write " "
próximo
%>
<%se page_count =1 ou (page_count-Cint(page))=0 então
resposta.Write("")
outro
resposta.Escreva "<a href=?page="&Cint(page+1)&">Próxima página</a>"
terminar se
%>
<!--Result page number-->
'/*Fim do código*/
Meu nível é limitado, o programa é difícil, pode haver falhas~Espero que você possa me criticar e me corrigir~