• Sábado 21 de Diciembre de 2024, 12:55

Autor Tema:  Recordcount  (Leído 1962 veces)

monkytrox

  • Miembro activo
  • **
  • Mensajes: 42
    • Ver Perfil
Recordcount
« en: Lunes 18 de Julio de 2005, 23:02 »
0
Hola, una vez mas, ante todo mucha gracias a todos los que me han ayudado con la contrucion de una intranet, ahora les traigo otra consulta, tengo tablas de mas de 100.000 registros y necesito mostrar sus datos, con recordcount, me muestra un valor de -1, lo que me impide poder mostrar resultados compaginados, el mismo codigo me funsiona perfectamente con tablas de menos de registros, adjunto el codigo para que me echen una mano:

<%
Dim oConn, rs, SQL
Dim PaginaActual
Dim PaginasTotales ' cuántas páginas tenemos
Dim TamPagina' cuantos registros por pagina
Dim CuantosRegistros

TamPagina=10


if Request.Querystring("pagina")="" then
PaginaActual=1
else
PaginaActual=CInt(Request.Querystring("pagina"))
end if


Set oConn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
'Conexion a base de datos
StrConn = "Provider=SQLOLEDB;Data Source=BARON; Initial Catalog = Televenta_Chilesat; User Id =sa; Password=123123"
'Consulta SQL
sql = " select * from tb_cliente"


oConn.Open StrConn
RS.Open sql,oConn,3,3
'Cuento las páginas
rs.PageSize=TamPagina
rs.CacheSize=TamPagina

PaginasTotales=rs.PageCount

response.Write(rs.pagecount)
response.Write(rs.Absolutepage)


'Compruebo que la pagina actual está en el rango
if PaginaActual < 1 then
PaginaActual = 1
end if
if PaginaActual > PaginasTotales then
PaginaActual = PaginasTotales
end if

'Por si la consulta no devuelve registros!
if PaginasTotales=0 then

Response.Write("No se encontraron resultados.")

else

'Vamos a paginar
'rs.AbsolutePage=PaginaActual
Response.Write("Pagina " & PaginaActual & " de " & PaginasTotales)
Response.Write("<br><br>")
CuantosRegistros=0
'do while not rs.EOF and CuantosRegistros < TamPagina


%>
<table width="80%" border="1" cellpadding="0" cellspacing="0" bordercolor="0148B2">


<table width="60%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr bgcolor="0148B2">
<td width="18%"><span class="Estilo24 Estilo23 Estilo25"><strong>CODIGO</strong></span></td>
<td width="82%"><span class="Estilo24 Estilo23 Estilo25"><strong>Fecha</strong></span></td>
<td width="82%"><span class="Estilo24 Estilo23 Estilo25"><strong>usuario</strong></span></td>

</tr>
<% do while not rs.eof and CuantosRegistros < TamPagina %>
<tr>

<td><span class="Estilo24 Estilo23"><strong><%=RS("area")%></strong></span></td>
<td><span class="Estilo4 Estilo23"><%'=RS("area")%></span></td>
<td><span class="Estilo4 Estilo23"><%'=RS("operador")%></span></td>


<%CuantosRegistros=CuantosRegistros+1
rs.movenext
loop
end if
%>
</tr>
</table>
</table>
<%'Limpiamos los objetos (SIEMPRE)
RS.Close
Set RS = Nothing
oConn.Close
Set oConn = Nothing

'Muestro los enlaces
Response.Write("<hr>")
if PaginaActual > 1 then
Response.Write("<A HREF=gest_usuarios.asp?pagina="& PaginaActual-1& ">10 Anteriores</A>   ")
end if
if PaginaActual < PaginasTotales then
Response.Write("<A HREF=gest_usuarios.asp?pagina=" & PaginaActual+1 &">10 Siguientes</A>")
end if

%>

ROBER.29

  • Miembro MUY activo
  • ***
  • Mensajes: 421
    • Ver Perfil
    • http://www.contrapixel.com
Re: Recordcount
« Respuesta #1 en: Martes 19 de Julio de 2005, 08:32 »
0
Hola,

El problema que tienes con el RecordCount es por el tipo de apertura del RecordSet, ya que dependiendo del metodo de apertura te funcionan unas propiedades u otras.

Prueba abrir el RecordSet con el método de apertura 3, 1; es decir, abrele de la siguiente forma:

Código: Text
  1.  
  2. RS.Open sql,oConn, 3, 1
  3.  
  4.  

Espero que te sirva.

Un saludo.
Roberto García
Moderador de Visual Basic.
Gerente
[contra]PixeL S.L.
Valladolid

monkytrox

  • Miembro activo
  • **
  • Mensajes: 42
    • Ver Perfil
Re: Recordcount
« Respuesta #2 en: Miércoles 20 de Julio de 2005, 18:25 »
0
me sigue apareciendo el recorcount con valor -1, tengo que acotar que para registros con con registros menores o iguales a 70 mil, ese codigo me funciona bien, pero con mas registros el recordcount me sale con -1, ojalas me puedan ayudar

zhoel

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Recordcount
« Respuesta #3 en: Lunes 25 de Julio de 2005, 22:08 »
0
lo que te dijeron del tipo de apertura es cierto y la mayoria de las veces sucede con bases de MSAccess pero ademas es un problema de ADODB podrias intentar actualizar la propiedad  moviendo el puntero hacia el ultimo registro y luego hacia el primero (movelast, movefirst) pero debes tener cuidado de como haces la apertura del recorset para que te permita hacer esto...
otra solucion podria ser utilizando el count...
es decir sql = " select count(*), * from tb_cliente"
o algo asi...
pero mi recomendacion es que revises que version de ADO posees y verificar que no hayas tenido una version mas nueva antes y que la hayas borrado de alguna manera. he visto algunas veces que ocurrio pero es muy dificil porque ADO incorpora el control de versiones...
bueno... espero que te sirva...