Función de implementación del programa: visualización de paginación de datos en dos tablas de datos
Recientemente
, encontré un requisito relativamente raro. Me pregunto si usted también lo ha encontrado, así que me gustaría compartirlo con usted.
desde diferentes ubicaciones Las dos tablas en la base de datos se definen como bases de datos DB1 y DB2, y las tablas Table1 y Tabel2. Los datos de estas dos tablas deben mostrarse en las partes superior e inferior de la página respectivamente, y el mismo número de paginación. se utilizará, como la primera parte de los datos. Si no es suficiente, la segunda parte de los datos se completará con
'/*code*/
<%
Set objConn1=Server.CreateObject("ADODB.Recordset").
Establecer objConn2=Server.CreateObject("ADODB.Recordset")
objConn1.Open "PROVIDER=SQLOLEDB; FUENTE DE DATOS = localhost; UID = sa; PWD = 123; BASE DE DATOS = DB1"
objConn2.Open "PROVIDER=SQLOLEDB; FUENTE DE DATOS=localhost;UID=sa;PWD=123;DATABASE=DB2"
Página=CLng(Request.QueryString("Página"))
si página="" entonces
página=1
terminar si
StrSQL1="seleccione * del orden de la Tabla1 por ID desc"
StrSQL2="select * from Table2 order by ID desc"
record_count1=Clng(objConn1.execute(StrSQL1)(0)) 'Obtiene el número de registros en la primera tabla
record_count2=Clng(objConn2.execute(StrSQL2)(0))'Obtener el número de registros en la segunda tabla
record_count=record_count1+record_count2 'Obtiene el número de registros en las dos tablas y
si record_count>0 Entonces
page_size1=5 'El número predeterminado de partes de los datos mostradas en la primera tabla por página
page_size2=5 'Número de visualización predeterminado de datos parciales en la segunda tabla por página
page_count1=CInt(record_count1/page_size1)
Si (record_count1 Mod page_size1)<(page_size1/2) Entonces page_count1=page_count1+1 'Obtiene el número de página de la primera parte de los datos
page_count2=CInt(record_count2/page_size2)
Si (record_count2 Mod page_size2)<(page_size2/2) Entonces page_count2=page_count2+1'Obtenga el número de página de la segunda parte de los datos
si Cint(page_count2)=cint(page) entonces 'Suponga que la segunda parte de los datos debe ser menor, aquí determine si La página actual es la última página con menos datos
thepageRecordcount=record_count2-(page-1)*5 'El número de datos que se muestran en la última página de la segunda parte de datos
page_size1=10-cint(thepageRecordcount) 'El número de elementos mostrados en la última página de la segunda parte de la primera parte de datos'
page_size1=cint(thepageRecordcount) 'Obtiene el número de elementos mostrados en la primera parte de esta página
elseif cint(page)>cint(page_count2) luego 'Después de esto, toda la primera parte de los datos será
page_size1=10
page_size2=0
finalizar si
page_count=CInt(record_count/(page_size1+page_size2) 'El número de páginas en ambas categorías juntas
Si (record_count Mod (page_size1+page_size2))<((page_size1+page_size2)/2) Entonces page_count=page_count+1
Si página < 1 Entonces
Página=1
Terminar si
Si Página > recuento_páginas Entonces
Página = recuento de páginas
Finalizar si
página oscura desde, página hacia
Página desde = página-10
Páginaa=página+10
si Páginadesde<1 entonces
Página desde=1
terminar si
si Pageto>record_count entonces
Página a=page_count
terminar si
Terminar si
Si Página<=1 Entonces 'Mostrar consulta en la primera página
StrSQL1="Seleccione Arriba "&page_size1&" * De la Tabla1 "
StrSQL1=StrSQL1&" Ordenar por descripción de ID"
StrSQl2="Seleccione Arriba "&page_size1&" * De la Tabla2 "
StrSQL2=StrSQL2&"ordenar por id desc"
De lo contrario 'Mostrar consulta en la página N
StrSQL1="Seleccione el ID superior "&(Page-1)*page_size1&" de la Tabla1"
StrSQL1=StrSQL1&" Ordenar por id Desc"
StrSQL1="SELECT 1 ID principal de ("&StrSQL1&") DERIVEDTBL Ordenar por id "
'Respuesta.Escribir(SQL)
id =Recortar(objConn1.execute(StrSQL1)(0))
StrSQL1="Seleccione Arriba "&page_size1&" * De la Tabla1"
StrSQL1=StrSQL1&" donde id<'"&id&"'"
StrSQL1=StrSQL1&" Ordenar por id Desc"
StrSQL2="Seleccione la parte superior "&(Page-1)*page_size2&" id de la Tabla2 "
StrSQL2=StrSQL2&" Ordenar por id Desc"
StrSQL2="SELECT 1 ID principal de ("&StrSQL2&") DERIVEDTBL Ordenar por ID "
id =Trim(objconn2.execute(StrSQL2)(0))
StrSQL2="Seleccione parte superior "&page_size2&" * De la Tabla2 "
StrSQL2=StrSQL2&" donde id<'"&id &"'"
StrSQL2=StrSQL2&" Ordenar por id Desc"
Fin si
%>
<%
Si record_count>0 Entonces
%>
<%
Establecer Rs1=Server.CreateObject("Adodb.Recordset")
rs1.openStrSQL1,objconn1
Para n = 1 Para page_size1
Si rs1.Eof entonces salga por
%>
<!--La primera parte del contenido mostrado se repite-->
<%
rs1.MoverSiguiente
Si rs1.EOF entonces salga por
Próximo
rs1.cerrar
establecer rs1 = nada
%>
<%
Establecer Rs2=Server.CreateObject("Adodb.Recordset")
rs2.openStrSQL2,objconn2
Para n = 1 Para page_size2
Si rs2.Eof entonces salga por
%>
<!--La segunda parte del contenido mostrado se repite-->
<%
rs2.MoverSiguiente
Si rs2.EOF entonces salga por
Próximo
rs2.cerrar
establecer rs2 = nada
%>
<!--Número de página de resultados-->
<%if página<>"1" entonces%><a href=?page=<%=Cint(page-1)%>>Página anterior</a> <%end if%>
<% 'Utiliza un bucle for para escribir la conexión del número de página
Para i=Página de a Página a
si i=0 entonces
yo=1
terminar
si i<>Cint(página) entonces
strurl="<a href=?page="&i&"><font color=#000000>"&i&"</font></a>"
más
strurl="<b><font color=#ce0031>"&i&"</font></b>"
finalizar si
respuesta.escribir strurl
respuesta.escribir " "
próximo
%>
<%si page_count =1 o (page_count-Cint(página))=0 entonces
respuesta.Escribir("")
demás
respuesta.Escribe "<a href=?page="&Cint(page+1)&">Página siguiente</a>"
terminar si
%>
<!--Número de página de resultados-->
'/*Fin del código*/
Mi nivel es limitado, el programa es tosco, puede haber deficiencias ~Espero que puedan criticarme y corregirme~