Foros del Web » Programando para Internet » ASP Clásico »

Como delimitar el tamaño de una consulta

Estas en el tema de Como delimitar el tamaño de una consulta en el foro de ASP Clásico en Foros del Web. Mi problema es el siguiente, tengo una consulta de noticias, en la que al realizarla desconzco el tamaño que tienen las mismas, ya que pueden ...
  #1 (permalink)  
Antiguo 26/06/2009, 07:25
 
Fecha de Ingreso: junio-2009
Mensajes: 14
Antigüedad: 15 años, 10 meses
Puntos: 0
Como delimitar el tamaño de una consulta

Mi problema es el siguiente, tengo una consulta de noticias, en la que al realizarla desconzco el tamaño que tienen las mismas, ya que pueden ser mas o menos extensas.

Realice un codigo para ller las noticias, y presentarlas en la Web, pero el resultado es que al haber muhcas noticias,y no limitar el número se salian del espacio diseñado para ello, luego las he limitado con el elemento for, para que solo muestre un número de registros limitado, pero aún me sucede que dependiendo del tamaño de las noticias (texto escrito en la tabla de acces) o bien me sobra espacio para una noticia más, o bien se me salen por abajo por que alguien se alargo demasiado en el texto.

¿Puedo mediante algún control, conocer el número de lineas que he ocupado, y de ese modo solicitar que se salga del bucle para no mostrar más noticias?

Os paso el codigo que he usado en ambas ocasiones por si ayuda en algo, ya os digo que soy nuevo en asp, y poco a poco voy aprendiendo pero aveces me atasco.

Gracias de antemano.

Codigo con el control EOF, me da todas las noticias que hay en la tabla, y se me sale por abajo del diseño de la página.
Código asp:
Ver original
  1. <&#37;
  2.     Dim oConn, RS
  3.     'conectamos a la tabla.
  4.     Set oConn = Server.CreateObject ("ADODB.Connection")
  5.     oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("basedatos.mdb")
  6.     'Abrmios el RecordSet (accedemos a los datos de la BD).
  7.     sql = "SELECT * FROM noticias"
  8.     Set RS = Server.CreateObject ("ADODB.RecordSet")
  9.     RS.Open sql, oConn
  10.     'Mostramos los campos hasta que nuestro RS no termine.
  11.     'Cuando termine... sale del bulcle automaticamente.
  12.     Do While Not RS.EOF
  13.     Dim links
  14.     links = RS("Link")
  15.         Response.Write ("<p align= left>")& RS("Portada")
  16.         Response.Write ("<p align= right><a href="&links&">Mas información</a>")
  17.         Response.Write ("<p align=center><font size=5 color=#808080><b>...................................................</b></font></p>")            
  18.     'MoveNext nos movera al siguiente registro de la tabla. A la siguiete fila.
  19.     RS.MoveNext
  20.     Loop
  21.     'primero cerramos los objetos y luego los limpiamos.
  22.     RS.Close
  23.     oConn.Close
  24.     Set RS = nothing
  25.     Set oConn = nothing
  26. %>

Codigo con el bucle For, me arregla algo pero no limita por tamaño que es lo que necesito.

Código asp:
Ver original
  1. <%
  2.     'conectamos a la tabla.
  3.     Set oConn = Server.CreateObject ("ADODB.Connection")
  4.     oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& Server.MapPath("basedatos.mdb")
  5.     'Abrmios el RecordSet (accedemos a los datos de la BD).
  6.     sql = "SELECT * FROM noticias ORDER BY Id DESC"
  7.     Set RS = Server.CreateObject ("ADODB.RecordSet")
  8.     RS.Open sql, oConn
  9.     'Mostramos los campos hasta que nuestro RS no termine.
  10.     'Cuando termine... sale del bulcle automaticamente.
  11.     cuen = 0
  12.     For cuen = 0 To 5 Step 1
  13.         links = RS("Link")
  14.         Response.Write ("<p align= left>")& RS("Portada")
  15.         Response.Write ("<p align= right><a href="&links&">Mas información</a>")
  16.         Response.Write ("<p align=center><font size=5 color=#808080><b>...................................................</b></font></p>")            
  17.         'MoveNext nos movera al siguiente registro de la tabla. A la siguiete fila.
  18.         RS.MoveNext
  19.     Next
  20.     'primero cerramos los objetos y luego los limpiamos.
  21.     RS.Close
  22.     oConn.Close
  23.     Set RS = nothing
  24.     Set oConn = nothing
  25. %>
Bueno lo dicho gracias por la colaboración.

Última edición por joseantonim; 27/06/2009 a las 13:30
  #2 (permalink)  
Antiguo 26/06/2009, 07:55
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 3 meses
Puntos: 126
Respuesta: Como delimitar el tamaño de una consulta

Hola

Se me ocurre que podrías usar un div, para el exceso

<div id="contenedor" style="overflow:hidden" width="100px" height="100px">

.....

</div>

Al usar la propiedad CSS overflow con el valor hidden impides que haya scroll. Además has de añadirle el ancho y largo que quieres que ocupe

Para el defecto lo que has de hacer es alargar el bucle, pero no tal y como lo estás haciendo, me refiero a que uses getrows para imprimir los registros y sacar la cantidad que se ha traído

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Última edición por Adler; 26/06/2009 a las 08:01
  #3 (permalink)  
Antiguo 26/06/2009, 08:59
 
Fecha de Ingreso: junio-2009
Mensajes: 14
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como delimitar el tamaño de una consulta

Gracias por la respuesta;

tras darle unas cuantas vueltas lo he dejado del siguiente modo, para el defecto uso la propiedad EOF del Recodset,
if RS.EOF = true then
exit for
end if

y para el exceso he preferido, aunque no es lo que buscaba poner la propiedad overflow = auto, en el div, ya que ya lo tenía en una capa, lo que no había puesto todo el codigo completo.

No me llega a llenar, pero por lo menos el exceso lo controla con un scroll, ya que ponerlo en hidden, supone que corte una noticia por la mitad, por eso quería poder conocer el numero de líneas escritas para decirle al recordset que parase en el momento que no cogiese una nueva noticia.

Pero gracias, he logrado que quede mucho mejor ahora.
  #4 (permalink)  
Antiguo 30/06/2009, 20:16
Avatar de adiazm  
Fecha de Ingreso: julio-2008
Ubicación: Santiago
Mensajes: 51
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Como delimitar el tamaño de una consulta

¿Mi estimado, y ya pensó en poner en la consulta sql un top 5 o la cantidad de noticias que quiera?

Además, podrías realizar la operación de cortar el contenido incorporando un mid antes de mostrar el campo y limitarlo 150 caracteres, por ejemplo.

  #5 (permalink)  
Antiguo 01/07/2009, 12:37
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años, 4 meses
Puntos: 16
Respuesta: Como delimitar el tamaño de una consulta

no se que base de datos uses pero en MySQL yo uso la opcion LIMIT asi

SQL="Select * FROM noticias ORDER BY id DESC LIMIT 5"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:21.