<%
'Plataforma: Win2000+IIS5.0+Sql2000
'PD: La última versión fue actualizada. La última versión fue la versión SQL y no se utilizaron procedimientos almacenados.
'Versión anterior: [Original] Excelente código de paginación de datos de un millón de niveles - (ocupado durante mucho tiempo) (http://bbs.bccn.net/thread-175543-1-1.html)
'-----------------------------------------------------El siguiente código es el código de la página web
Respuesta.Buffer = Verdadero
Dim SqlLocalName, SqlUsername, SqlPassword, SqlDatabaseName
Dim ConnStr,Conn
''''''''''''''''''''''''' Base de datos SQL'''''''''''''' '''''' '''''''''''''''''''''''''''''
SqlLocalName =(local)'IP de conexión [IP externa local (local)]
SqlUsername=sa 'Nombre de usuario de la base de datos
SqlPassword=XXXXXX 'Contraseña de usuario
SqlDatabaseName=NewsTable 'Nombre de la base de datos
ConnStr = Proveedor=Sqloledb;ID de usuario= & SqlUsername & ; Contraseña= & SqlPassword & ; Catálogo inicial = & SqlDatabaseName & ;
'''''''''''''''''''''''''''''''''''' '''''''' '''''''''''''''''''''''''''''' '
En caso de error Continuar siguiente
Establecer conexión=Servidor.CrearObjeto(ADODB.Conexión)
Conn.open ConnStr
Si se equivoca entonces
errar.Borrar
SetConn=Nada
Response.Write <div style='font-size:14px;color=#ff0000' align='center'>Error de conexión de la base de datos, verifique la cadena de conexión de la base de datos</div>
Respuesta.Fin
Terminar si
'Esta clase realiza creación de instancias de código sin tener en cuenta todas las condiciones posibles para la paginación. Esta categoría es sólo para referencia.
'------------------------------------------------ - -------------------------------------------------
'PageNo-página actual;PageSizeX-tamaño de página;PageCountX-número total de páginas;FieldCount-número total de registros;StrWhere-condiciones de consulta
Dim PageNo,PageSizeX,PageCountX,FieldCount,StrDónde
'Realizar tarea
Número de página = recortar (Solicitud.Cadena de consulta (Nº de página))
PageSizeX=30' define el tamaño de página
si es numérico (PageNo) o PageNo = entonces 'Si no hay ningún valor de página, inicialice el valor
Número de página=abs(Nº de página)
si número de página=0 entonces número de página=1
demás
Número de página=1
terminar si
StrWhere=(ClassCode=0101 and Hits>20)'Nota, preste atención a la longitud de los caracteres aquí
establecer recom = servidor.createobject(adodb.command)
recom.activeconnection = Conexión
recomendar.tipo de comando = 4
recom.commandtext = Clase_Noticias
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)
establecer rs = recom.execute()
si rs.eof entonces
establecer rs=nada: establecer recom=nada: Conn.Close: establecer Conn=nada
Response.write <script LANGUAGE='javascript'>alert('No se encontró ningún registro actualmente, ¡regrese e intente nuevamente!');history.go(-1);</script>
respuesta.fin
terminar si
'Mostrar datos
hacer mientras no rs.eof
respuesta.write&rs(Título)& Agregar hora:&rs(AddTime)&<br/>
rs.movenext
bucle
'Obtiene el número total de registros y calcula el número de páginas
establecer rs = rs.NextRecordset
si rs(countx) > 0 entonces
FieldCount=rs(cuentax)
demás
Número de campos = 0
terminar si
si (FieldCount mod PageSizeX)>0 entonces
PageCountX=((FieldCount - (FieldCount mod PageSizeX))/ PageSizeX)+1
demás
PageCountX= (FieldCount / PageSizeX)
terminar si
'Cerrar y liberar recursos relacionados
establecer rs=nada: establecer recom=nada: Conn.Close: establecer Conn=nada
'Mostrar paginación
si número de página <= 1 entonces
Response.Write <font color='#FF0000'>[Inicio] [Página anterior]</font>
demás
Response.Write[<a href='?PageNo=1' target='_self' title='Página de inicio'><font color='#FF0000'>Página de inicio</font></a>]
Response.Write[<a href='?PageNo=&(PageNo-1)&' target='_self' title='Página anterior'><font color='#FF0000'>Página anterior</font>< /a >]
terminar si
si PageNo>=PageCountX entonces
Respuesta.Escribir <font color='#FF0000'>[página siguiente] [última página]</font>
demás
Response.Write[<a href='?PageNo=&(PageNo+1)&'target='_self' title='Página siguiente'><font color='#FF0000'>Página siguiente</font>< /a >]
Response.Write[<a href='?PageNo=&PageCountX&' target='_self' title='Última página'><font color='#FF0000'>Última página</font></a>]
terminar si
Respuesta.Escribir[Página <font color=red>&NºPágina&</font>/total <font color=red> & PageCountX &</font>]
Response.Write [Total<font color=red>&FieldCount&</font> elementos<font color=red>& PageSizeX & </font> elementos/página]
Response.Write Ir a & <input id=zhuanpage name=zhuanpage size=2 value=&PageNo&> & página <input type=enviar valor=Go onclick=gotoPage()>
Respuesta.Escribir</td></tr></table>
Response.Write<script>function gotoPage(){var pg=document.getElementById('zhuanpage').value;if(isNaN(pg)||pg>&PageCountX&||pg<0){window.alert('Por favor, correcto Ingrese el número de página, que solo puede ser un número entero positivo y no puede ser mayor que &PageCountX&');regresar. false;}else{window.location.href='?PageNo='+document.getElementById('zhuanpage').value+'';return true;}}</script>
%>
'------------------------------------------------ - ------El siguiente código es el código del procedimiento almacenado
CREAR procedimientoNews_Class
--Paginación de noticias de información a nivel de millón
(
@StrDonde varchar(100),
@PageSize int,
@PageIndexint
)
COMO
declare@strSQLvarchar(2000) -- declaración principal
declare@strCountSQL varchar(2000) -- declaración principal del registro total
declare@strTmpvarchar(1000) -- variable temporal
Establecer @strTmp = Seleccionar arriba + str(@PageSize) + Título,AddTime de Tb_News. Tenga en cuenta aquí que se necesitan varios campos para leer varios campos.
si @StrDonde<>''
Comenzar
Establezca @strSQL=@strTmp + donde ID < (seleccione min(ID) de (seleccione arriba + str((@PageIndex-1)*@PageSize)+ ID de Tb_News Donde +@StrWhere+ordene por ID desc)como tblTmp) y +@StrWhere+ orden por ID desc
establecer @strCountSQL=seleccionar recuento(ID) como recuentox de Tb_News Donde +@StrWhere+
Fin
demás
Comenzar
Establecer @strSQL=@strTmp + donde ID < (seleccione min(ID) de (seleccione arriba + str((@PageIndex-1)*@PageSize)+ ID de Tb_News ordenar por ID desc)as tblTmp ) ordenar por ID desc
establecer @strCountSQL = seleccionar recuento (ID) como recuentox de Tb_News
Fin
si @PageIndex = 1
si @StrDonde<>''
Comenzar
Establecer @strSQL=@strTmp + Where +@StrWhere+ ordenar por ID desc
Fin
demás
Comenzar
Establecer @strSQL=@strTmp + ordenar por descripción de ID
Fin
ejecutivo(@strSQL)
ejecutivo(@strCountSQL)
IR