Este artículo presenta principalmente cómo mostrar la paginación de la base de datos de ADO.
¿Cómo podemos paginar los resultados de la consulta de la base de datos? En realidad, hay muchas maneras, pero hay dos formas principales:
1. Lea todos los registros en la base de datos que cumplen con las condiciones de consulta en el conjunto de registros a la vez y guardelos en la memoria. (Número de página) y AbsoluTepage (página absoluta) para administrar el procesamiento de la paginación.
2. Según las instrucciones del cliente, el número especificado de registros se leerá y se mostrará a partir de los registros que cumplan con las condiciones de consulta cada vez.
La principal diferencia entre los dos es que el primero lee todos los registros en la memoria a la vez y luego hace juicios y análisis en secuencia de acuerdo con las instrucciones para lograr el efecto de la pantalla de paginación, mientras que el segundo hace juicios basados en las instrucciones y establece el Número especificado para cumplir con las condiciones de consulta.
Podemos sentir claramente que cuando el número de registros en la base de datos alcanza decenas de miles o más, la eficiencia de ejecución del primer método será significativamente menor que el del segundo método, porque cuando cada cliente consulte la página, todos los resultados deben ser transferidos. Sin embargo, cuando el número de registros en la base de datos en el servidor y el número de personas en línea al mismo tiempo no son grandes, la eficiencia de ejecución de los dos es casi la misma. El programa ASP del primer método está relativamente escrito, el segundo método es mucho más simple y claro.
Aquí, el autor tomará nuestro programa ASP BBS común como un ejemplo para analizar cómo implementar la función de visualización de paginación en el programa BBS. demasiados.
La pantalla de paginación cuando ADO accede a la base de datos es en realidad operar los registros del conjunto de registros. Por lo tanto, primero debemos comprender las propiedades y métodos del objeto ReordSet:
Atributo BOF: el indicador actual se refiere a la primera transacción al conjunto de registros.
Atributo EOF: el indicador actual se refiere a la última transacción al conjunto de registros.
MOTE MÉTODO: Mueva las métricas a un registro en el conjunto de registros.
PROPIEDAD ABSOLUTEPAGE: Establece la ubicación actual del registro en el que se encuentra la página AbsolutEposition: la ubicación actual de la métrica en el conjunto de registros.
Propiedad PageCount: muestra cuántas páginas de datos contiene un objeto de conjunto de registros.
Propiedad PageSize: muestra el número de registros que se muestran en cada página del objeto RecordSet.
Propiedad Registro: muestra el número total de registros del objeto RegistroSet.
Echemos un vistazo más de cerca a estos importantes atributos y métodos
1. Atributos BOF y EOF
Por lo general, escribimos código en un programa ASP para verificar los atributos BOF y EOF para conocer la ubicación del conjunto de registros que apunta por el indicador actual. La línea es el alcance del objeto de conjunto de registros que se ha excedido.
Por ejemplo: < %si no rs.eof entonces ... %>
< % si no (rs.bof y rs.eof) %>
Si la posición de registro actual es antes de la primera fila de un objeto RegistroSet, la propiedad BOF devuelve verdaderas, de lo contrario, devuelve False.
Si la posición de registro actual es después de la última fila de un objeto RegistroSet, la propiedad EOF devuelve verdaderas, de lo contrario, devuelve falso.
Tanto BOF como EOF son falsos: significa que el indicador se encuentra en el conjunto de registros.
BOF es verdadero: el indicador actual se refiere al primer registro al conjunto de registros. EOF es verdadero: el indicador actual se refiere al último registro al conjunto de registros.
Tanto BOF como EOF son ciertos: no hay registro en el conjunto de registros.
2. MOVER MÉTODO
Puede usar el método Move para mover las métricas a un registro en el conjunto de registros, con la sintaxis de la siguiente manera:
Rs.Move NumRecords, comienza
Aquí RS es una variable de objeto, que indica un objeto de conjunto de registro que quiere moverse cuando la posición de registro actual es una fórmula de cálculo de número positivo y negativo que establece el número de movimientos de la posición de registro actual; la etiqueta de inicio.
Todos los objetos de registro admiten el método de movimiento. Método, se generará un error A.
MOTO MOTO MÉTODO: Mueva la posición de registro actual al primer registro.
Método de Movelast: mueva la posición de registro actual al último registro.
Método MoveNext: mueva la posición de registro actual al siguiente registro. MOTO MOVEPREVIUS: Mueva la posición de registro actual al registro anterior.
Mueva [n] Método: mueva el índice al enésimo registro de la pluma, n comienza desde 0.
3. Atributos de AbsolutePage
La propiedad AbsoluTepage establece el número de página de páginas en las que se encuentra la página; Registros de páginas). Cabe señalar aquí que no todos los proveedores de datos respaldan esta propiedad, así que tenga cuidado al usarla.
Lo mismo que la propiedad AbsoluTePosition, la propiedad AbsoluTepage comienza con 1. Si el registro actual es la primera fila del conjunto de registros, el AbsoluTepage es 1. La propiedad AbsoluTepage se puede configurar para pasar a la posición de registro de la primera fila de una página especificada.
4. Propiedad de AbsolutePosition
Si necesita determinar la ubicación actual de la métrica en el conjunto de registros, puede usar la propiedad AbsoluTePosition.
El valor de la propiedad AbsoluTeposition es la posición del indicador actual en relación con la primera transacción, que comienza desde 1, es decir, la capacidad de absoluta de la primera transacción es 1.
Tenga en cuenta que al acceder a los registros, no hay garantía de que los registros aparezcan en el mismo orden cada vez.
Para habilitar AbsoluTePosition, primero debe configurarlo para usar el Cursor del usuario (puntero), y el código ASP es el siguiente:
rs2.cursorlocation = 3
5. Propiedad de PageCount
Use la propiedad PAGECOUNT para determinar cuántas páginas de datos contiene un objeto Registro. La página aquí es una colección de registros de datos, y su tamaño es igual a la configuración de la propiedad de PageSize. . Cabe señalar que no todos los proveedores de datos respaldan esta propiedad.
6. Propiedad de páginas
La propiedad de PageSize es la clave para determinar cómo ADO se pagina al acceder a las bases de datos. Establece y crea un tamaño de página, lo que permite que la propiedad AbsoluTepage se mueva al primer registro de otras páginas lógicas. La propiedad de PageSize se puede establecer en cualquier momento.
7. Propiedad de registro
Esta es también una propiedad muy común e importante. Por ejemplo: < %Totle = Rs.RecordCount %>
Después de comprender las propiedades y métodos anteriores de los objetos de conjunto de registros, consideremos cómo usarlos para lograr el propósito de nuestra pantalla de paginación. Primero, podemos establecer un valor para la propiedad de PageSize, especificando así el número de filas que constituyen una página tomada del grupo de registro; Para obtener el número total de la página que se muestra; Parece muy complicado.
Hemos creado una aplicación BBS tan simple, que tiene los siguientes cinco campos en su base de datos: ID, número automático de cada publicación; Tiempo de publicación. El DSN de la base de datos es BBS. Ponemos todos los pasos para mostrar la publicación posterior en un proceso llamado ShowList () para una fácil llamada. El procedimiento es el siguiente:
?
- '---- BBS Muestra Post Paging ---
- <%Subshowlist ()%>
- <%
- PGSZ = 20 'STISTE DE ENCENDIDO, Especifique el número de publicaciones que se muestran en cada página, el valor predeterminado es 20 publicaciones por página
- Setconn = server.createObject (ADODB.Connection)
- Setrs = server.createObject (ADODB.Recordset)
- sql = select*fromMessageOrderByidDesc
- 'Consulta todas las publicaciones y organizarlas en orden inverso por ID de publicación
- Conn.openbbs
- Rs.opensql, Conn, 1,1
- IFrs.RecordCount = 0Then
- Response.Write <P> <Center> Lo siento, no hay información relevante en la base de datos! </Center> </p>
- demás
- Rs.pagesize = cint (PGSZ) 'Establezca el valor de la propiedad PageSize
- Total = int (Rs.RecordCount/PGSZ*-1)*-1''calcule el número total de páginas que se pueden mostrar
- Pageno = solicitud (pageno)
- ifpageno = entonces
- Pageno = 1
- demás
- Pageno = pageno+1
- Pageno = pageno-1
- endif
- Scrollaction = request (scrollaction)
- ifscrollaction = página anterior entonces
- Pageno = pageno-1
- endif
- ifscrollaction = página siguiente entonces
- Pageno = pageno+1
- endif
- ifpageno <1
- Pageno = 1
- endif
- n = 1
- Rs.AbsolutePage = Pageno
- Respuesta.Write <Center>
- posición = rs.pagesize*pageno
- PageBegin = Position-Rs.Pagesize+1
- ifposition <rs.RecordCountThen
- pagend = posición
- demás
- pagend = rs.RecordCout
- endif
- Response.Write <P> <fontColor = 'Navy'> <b> Resultados de la consulta de la base de datos: </b>
- Response.Write (hay un total de & rs.RecordCount & piezas de información que cumplen con las condiciones, Display & PageBegin &-& Pagend &) </font> </p>
- Respuesta.Write <tableWidth = 600Border = 1CellPadding = 4CellSpacing = 0BGColor =#ffffff>
- Response.Write <TrbgColor =#5FB5E2> <fontSize = 2> <td> <b> tema </b> </td> <td> <b> usuarios </b> </td> <td> <b> Correo electrónico </b> </td> <td> <b> fecha publicada </b> </td> </font> <trbgcolor =#ffffff>
- Dowhilenot (rsisnothing)
- RowCount = Rs.Pagesize
- Dowhilenotrs.eofandrowcount> 0
- Ifn = 1
- Response.Write <TrbgColor =#ffffff>
- DEMÁS
- Response.write <trbgcolor =#eeeee>
- Endif
- n = 1-N%>
- <TD> <spanStyle = font-size: 9pt> <ahref = 'ver.asp? Key = <%= rs (id)%>'> <%= rs (sujeto)%> </a> </span> </td>
- <TD> <spanStyle = font-size: 9pt> <%= rs (nombre)%> </a> </span> </td>
- <TD> <spanstyle = font-size: 9pt> <ahref = mailto: <%= rs (correo electrónico)%>> <%= rs (correo electrónico)%> </a> </span> </td>
- <TD> <spanstyle = font-size: 9pt> <%= rs (postdate)%> </span> </td>
- </tr>
- <%
- RowCount = RowCount-1
- Rs.Movenext
- Bucle
- setRS = rs.nextrecordset
- Bucle
- Conn.clar
- SETRS = nada
- setConn = nada
- %>
- </table>
- <Formmethod = getAction = list.asp>
- <InputType = HiddenName = PageNovalue = <%= Pageno%>>
- <%
- ifpageno> 1
- Response.Write <inputType = SubtName = 'ScrollAction'Value =' Página anterior '>
- endif
- IfrowCount = 0andpageno <> TotalThen
- Response.write <inputType = SubtName = 'ScrollAction'Value =' Página siguiente '>
- endif
- Response.Write </form>
- Endif
- %>
- <%Endsub%>