Solo son 5 minutos para uno que sepa...

Ramon
02 de Enero del 2003
He creado una base de datos en access 2000 llamada "PERSONA.MDB".
En ella he creado una tabla llamada "TABLA1"
La tabla contiene tres campos "ID": autonumerico y clave primaria, "NOMBRE":texto , "APELLIDO":texto
He rellenado la tabla con cinco registros...
id nombre apellido
1 ramon perez
2 rocio sanchez
3 victor flores
4 arcadio tovar
5 carlos reina

Ahora he creado un origen ODBC que apunte a mi base de datos "PERSONA.MDB" y lo he llamado "ODBCPERSONA"
Esto se hace en inicio, configuracion, panel de control, fuentes de datos odbc, dsn del sistema, agregar,
seleccionar driver ms access y la base de datos "c:persona.mdb"...

A continuacion he creado en ASP dos consultas, y las he guardado en c:inetpubwwwwroot.

Codigos de las dos consultas ASP:


***************************** CONSULTAUNO.ASP ********************************
<HTML>
<BODY>
<%
If IsObject(Session("ODBCPERSONA_conn")) Then
Set conn = Session("ODBCPERSONA_conn")
Else
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "ODBCPERSONA","",""
Set Session("ODBCPERSONA_conn") = conn
End If

If IsObject(Session("Consulta1_rs")) Then
Set rs = Session("Consulta1_rs")
Else
sql = "SELECT * FROM Tabla1 "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
If rs.eof Then
rs.AddNew
End If
Set Session("Consulta1_rs") = rs
End If
%>
<TABLE >
<THEAD>
<TR>
<TH>id</TH> <TH >nombre</TH> <TH >apellido</TH>
</TR>
</THEAD>
<TBODY>
<%
On Error Resume Next
rs.MoveFirst
do while Not rs.eof
%>
<TR>
<TD><%=Server.HTMLEncode(rs.Fields("id").Value)%><BR></TD>
<TD><%=Server.HTMLEncode(rs.Fields("nombre").Value)%><BR></TD>
<TD><%=Server.HTMLEncode(rs.Fields("apellido").Value)%><BR></TD>
</TR>
<%
rs.MoveNext
loop
%>
</TBODY>
</TABLE>
</BODY>
</HTML>
************************************************************************************

***************************** CONSULTADOS.ASP ********************************
<HTML>
<BODY>
<%
If IsObject(Session("ODBCPERSONA_conn")) Then
Set conn = Session("ODBCPERSONA_conn")
Else
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "ODBCPERSONA","",""
Set Session("ODBCPERSONA_conn") = conn
End If

sql = "SELECT * FROM Tabla1"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
If rs.eof Then
rs.AddNew
End If
Set Session("Consulta1_rs") = rs
%>
<TABLE>
<THEAD>
<TR>
<TH >id</TH> <TH >nombre</TH> <TH >apellido</TH>
</TR>
</THEAD>
<TBODY>
<TR>
<TD><%=Server.HTMLEncode(rs.Fields("id").Value)%><BR></TD>
<TD><%=Server.HTMLEncode(rs.Fields("nombre").Value)%><BR></TD>
<TD><%=Server.HTMLEncode(rs.Fields("apellido").Value)%><BR></TD>
</TR>
</TBODY>
</TABLE>
</BODY>
</HTML>
************************************************************************************

En la consultauno se muestra los cinco registros, por que no una tabla?? ahora, no la necesito.

En la consultados se muestra unicamente el primer registro... que pasa con los otros cuatro?,
pues que he quitado el bucle while.... loop, y el rs.movenext.

Aqui viene mi problema:
Lo que quiero es poner en la CONSULTADOS.ASP un par de botones: ANTERIOR Y SIGUIENTE, de modo que
al estar uno en "id 2 nombre rocio" y pulsar SIGUIENTE se vaya a "id 3 nombre victor", y si
pulso en ANTERIOR se vaya a "id 1 nombre ramon"

Tal vez se una tonteria la solucion, pero me esta dando dolores de cabeza, he probado con un
formulario, pero no lo hago funcionar pues no domino los formularios. Lo he intentado con
"consultados.asp?id=3", y tampoco, es obvio, tampoco lo domino... Y he intentado una variable
global con session("pagina") guardando el registro que se muestra, pero fallo en los conceptos
y al final me lio mas que la pata de un romano...

Lo que yo quiero es salir del paso, y hacerlo funcionar YA!!, no lo necesito para maana, ni
para hoy, sino para ayer... Y prometo que este fin de semana le echo unas pocas de horas, pero
ahora mismo, es que no puedo.. sino no estaria haciendo el imbecil con estas preguntas.

Centraros en consultados.asp, a ver si sois capaces de hacer que vaya de un registro a otro pulsando
un boton o un enlace... o algo.

EL PROBLEMA SE LLAMA PAGINACION.

Pegadme el codigo, por favor.

Mi email es [email protected]

GGGRRRRAAAAACCCCCIIIIAAAASSSS

Ross
02 de Enero del 2003
<!-- recibimos del formulario la direccin del movimiento y
lo guardamos en una variable de sesin para este usuario -->

<%xx=request.form("direccion")
if xx = "Atras" then
session("pagina")=session("pagina")-1

if session("pagina")< 1 then
session("pagina")=1 'evitamos el error por reload
end if

else
if xx="Adelante" then
session("pagina")=session("pagina")+1
else
session("pagina")=1 'primera pasada
end if
end if%>


'Despues de abrir tu recordset colocas esto
rs.pagesize=10 ' Define el numero de registros, segn voe el tuyo sera 1

<%if session("pagina")>rs.pagecount then
session("pagina")=rs.pagecount 'evitamos el error de reload
end if%>

<%rs.absolutepage=session("pagina")
inicio=1+(session("pagina")-1)*rs.pagesize
fin=inicio+9
if fin > rs.recordcount then
fin =rs.recordcount
end if
%>
'Con esto colocas el numero de registros y paginas
Registros <font color="#FF0000"><%=inicio%> </font>
al <font color="#FF0000"><%=fin%></font> de un total de
<font color="#FF0000"><%=rs.recordcount%></font></td>
<td width="50%" align="center">Pgina <font color="#FF0000"><%=session("pagina")%>
</font> de <font color="#FF0000"><%=rs.pagecount%></font>
'Coloca esto para desplegar todo tu recordset

<%contador=0
Do While contador < rs.pagesize and NOT rs.EOF%>
<tr>
<td><%= rs("Id")%></td>
<td><%= rs("Nombre")%></td>
<td><%= rs("Apellido")%></td>
</tr>

<% rs.MoveNext
contador=contador+1
Loop
%>

'Con esto muestras los botones atrs y adelante

<table border="0" width="38%" height="5">
<tr><%if session("pagina")<> 1 then %>
<td width="50%" height="1" align="center">
<form method="POST" action="paginando.asp">
<p><input type="submit" value="Atras" name="direccion"></p>
</form>
</td><%end if%>
<%if session("pagina")< rs.pagecount then%>
<td width="50%" height="1" align="center">
<form method="POST" name="paginando.asp">
<p><input type="submit" value="Adelante" name="direccion"></p>
</form>
</td><%end if%>
</tr>
</table>

arg
02 de Enero del 2003
hola quiere realizar paginacin pero de esta manera por caso especial

tengo una consulta y quiero obtener de esa consulta una serie de registros, x ej 10, segn un registro inicial y final que se pasan como parmetro i y j

y necesito a partir del recordset global con todos los registros obtener otro recordset con 10 registros solamente, desde i a j, siendo i < j

Cmo se podra hacer...pasar registros de un recordset a otro se puede hacer gracias !!!