Consulta a bases de datos access

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

1 respuesta

Respuesta
1
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas