Hola: Se hacer consultas y las conexiones. Tengo una pregunta concreta sobre una consulta concreta. Me gustaría saber como puedo coger solo los 20 o 30 registros de una tabla ordenándolos por un campo. En realidad quiero poder cambiar los 20 últimos registros de una tabla a otra. Por ejemplo en fútbol tengos dos tablas 1º división y 2º división y quiero hacer un página asp que cada cierto tiempo me pase los 5 últimos clasificados a la tabla de 2 división y viceversa. Espero que alguien me conteste. Gracias de ante mano
Creo que la aproximación más sencilla a tu problema es la de paginar el objeto Recordset. Las propiedades para realizar esta paginación son: . PageSize = X 'Donde X es el número de registros por página del recordset. Se debe establecer antes de llamar a Open. . AbsolutePage = X 'Donde X es el número de página al que quieres llevar el puntero. . PageCount 'Devuelve el número de páginas del Recordset Recuerda que para que sea de utilidad debes establecer el ORDER BY en la cadena de SQL al abrir el Recordset.
¿Me podría dar una explicación de como iría el código y de como hacer el bucle? Para que también pueda ir saltando de página. Gracias
La siguiente página muestra los registros de una base de datos tal y como hace un buscador. Te permite mostrar 10 registros (o los que tu digas) por página y moverte entre páginas. El ejemplo no es mío. Lo he copiado y traducido para que te sea más cómodo 'COMIENZO PÁGINA <!--VB ADO Archivo de constantes. Se necesita para las contantes tipo adOpenStatic y demás--> <!-- #include file="adovbs.inc" --> <% ' COMIENZO CONSTANTES DE USUARIO Dim CONN_STRING Dim CONN_USER Dim CONN_PASS ' Se está usando una conexión sin DSN. ' Para usar DSN utilizar el dormato de abajo : 'CONN_STRING = "DSN=DSNName;" CONN_STRING = "DBQ=" & Server.MapPath("database.mdb") & ";" CONN_STRING = CONN_STRING & "Driver={Microsoft Access Driver (*.mdb)};" ' Sise necesita usuario y contraseña dar valor a las variables CONN_USER = "" CONN_PASS = "" ' FIN CONSTANTES DE USUARIO ' COMIENZO CODIGO ' Declaración de variables Dim iPageSize 'Tamaño de página Dim iPageCount 'Numero de páginas que devuelve el recordset Dim iPageCurrent 'La página que queremos mostrar Dim strOrderBy 'Un parámetro idiota para mostrar como pasar parámetros Dim strSQL 'Cadena SQL que usará el recordset Dim objPagingConn 'El objeto conexión ADODB Dim objPagingRS 'El objeto recordset ADODB Dim iRecordsShown 'Contador de registros mostradas en el bucle Dim I 'Contador para el bucle de campos ' Dando valores iPageSize = 10 ' Tamaño a la página ' Tomar la página a mostrar o poner por defecto a 1 If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If ' Dar valor a la cadena SQL strSQL = "SELECT * FROM sample ORDER BY id;" ' Crear y abrir la conexión Set objPagingConn = Server.CreateObject("ADODB.Connection") objPagingConn.Open CONN_STRING, CONN_USER, CONN_PASS ' Crear el recordset y darle tamaño a sus páginas Set objPagingRS = Server.CreateObject("ADODB.Recordset") objPagingRS.PageSize = iPageSize ' Puedes cambiar cualquier otra propiedad del recordset 'objPagingRS.CursorLocation = adUseClient objPagingRS.CacheSize = iPageSize ' Abrir el recordset objPagingRS.Open strSQL, objPagingConn, adOpenStatic, adLockReadOnly, adCmdText ' Mirar cuantas páginas ha devuelto iPageCount = objPagingRS.PageCount ' Si la página que queremos mostrar está fuera del rango devuelto ' dar la más cercana (1 o última) If iPageCurrent > iPageCount Then iPageCurrent = iPageCount If iPageCurrent < 1 Then iPageCurrent = 1 ' Mirar que las páginas devueltas no sean cero para evitar errores If iPageCount = 0 Then Response.Write "No se han encontrado registros" Else ' Nos movemos a la página seleccionada objPagingRS.AbsolutePage = iPageCurrent ' Empezamos a escribir una línea tipo Página X de N %> <p> <font size="+1">Página <strong><%= iPageCurrent %></strong> de <strong><%= iPageCount %></strong></font> </p> <% ' Espacio de separación Response.Write vbCrLf ' Continuamos con la fila de títulos Response.Write "<table border=""1"">" & vbCrLf ' Mostramos los nombre de los campos en la primera fila Response.Write vbTab & "<tr>" & vbCrLf For I = 0 To objPagingRS.Fields.Count - 1 Response.Write vbTab & vbTab & "<th>" Response.Write objPagingRS.Fields(I).Name Response.Write "</th>" & vbCrLf Next 'I Response.Write vbTab & "</tr>" & vbCrLf ' Mostramos ahora una fila por registro iRecordsShown = 0 Do While iRecordsShown < iPageSize And Not objPagingRS.EOF Response.Write vbTab & "<tr>" & vbCrLf For I = 0 To objPagingRS.Fields.Count - 1 Response.Write vbTab & vbTab & "<td>" Response.Write objPagingRS.Fields(I) Response.Write "</td>" & vbCrLf Next 'I Response.Write vbTab & "</tr>" & vbCrLf ' Incrementamos el número de registros que hemos mostrado iRecordsShown = iRecordsShown + 1 ' Nos movemos al siguiente registro objPagingRS.MoveNext Loop ' Trabajo Terminado. Cerramos todo Response.Write "</table>" & vbCrLf End If ' Cerramos los objetos de base de datos y liberamos las variables objPagingRS.Close Set objPagingRS = Nothing objPagingConn.Close Set objPagingConn = Nothing ' Mostramos los enlaces para ir a páginas anteriores o siguientes If iPageCurrent > 1 Then %> <a href="estapagina.asp?page=<%= iPageCurrent - 1 %>">[<< Anterior]</a> <% End If ' Ponemos también enlaces a las páginas concretas For I = 1 To iPageCount If I = iPageCurrent Then %> <%= I %> <% Else %> <a href="estapagina.asp?page=<%= I %>"><%= I %></a> <% End If Next 'I If iPageCurrent < iPageCount Then %> <a href="estapagina.asp?page=<%= iPageCurrent + 1 %>">[Next >>]</a> <% End If ' FIN CODIGO %> 'FIN PAGINA Espero que sirva. Si no vale o hay alguna duda no dudes en decírmelo
Gracias Me has aclarado todas las dudas que tenia. Donde más me liaba era luego para mostrar el cambio de páginas. Gracias y perdona las molestias