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

Sacar registros aleatorios de BD?

Estas en el tema de Sacar registros aleatorios de BD? en el foro de ASP Clásico en Foros del Web. Hola chicos/as tengo la intención de sacar unos registros aleatorios de una base de datos pero solo consigo sacar uno con Randomize y estoy un ...
  #1 (permalink)  
Antiguo 29/03/2009, 06:15
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 24
Antigüedad: 16 años
Puntos: 0
Sacar registros aleatorios de BD?

Hola chicos/as tengo la intención de sacar unos registros aleatorios de una base de datos pero solo consigo sacar uno con Randomize y estoy un poco espeso me podríais ayudar, por favor.

<%
AbreBaseDatos("Datos")
SQL = "SELECT * FROM ARTICULOS"
AbreRecordSet rs,SQL,ConDatos

intTotalRecords = rs.RecordCount
Randomize()
intRandomNumber = Int((intTotalRecords * Rnd))
rs.Move intRandomNumber
%>

<a href="/articulo.asp?op=Ver_Articulo&RefPro=<%=rs.fields(" RefProducto")%>&RefArt=<%=rs.fields("RefArticulo") %>&cat=<%=rs.fields("categoria")%>"><img src="/imagen.asp?path=<%=Server.MapPath("/Images/Productos/")& "/" & rs.fields("RefArticulo")%>_1.jpg&height=75" height="75" border="0" align="left"></a>
<br><br>
<a href="/articulo.asp?op=Ver_Articulo&RefPro=<%=rs.fields(" RefProducto")%>&RefArt=<%=rs.fields("RefArticulo") %>&cat=<%=rs.fields("categoria")%>"><%=rs("Nombre" )&" "&rs("color")%></a><br><br><br><font size="1"><blockquote><%=(left(rs("Descripcion"),25 0)) %> ...</blockquote></font>

Un saludo y muchas gracias.
  #2 (permalink)  
Antiguo 29/03/2009, 10:41
Avatar de mc_quake  
Fecha de Ingreso: enero-2006
Ubicación: www.ecocargo.cl
Mensajes: 683
Antigüedad: 18 años, 10 meses
Puntos: 8
Respuesta: Sacar registros aleatorios de BD?

para optener registros aleatorios de una tabla solo usas esto NEWID()

ej:

SQL = "SELECT * FROM ARTICULOS NEWID()"
__________________
Mc_Quake

Para ayudar en lo que se pueda:Zzz:
  #3 (permalink)  
Antiguo 29/03/2009, 16:42
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 24
Antigüedad: 16 años
Puntos: 0
Respuesta: Sacar registros aleatorios de BD?

Cita:
Iniciado por mc_quake Ver Mensaje
para optener registros aleatorios de una tabla solo usas esto NEWID()

ej:

SQL = "SELECT * FROM ARTICULOS NEWID()"
No entiendo lo que me quieres decir.

Un saludo y muchas gracias.
  #4 (permalink)  
Antiguo 29/03/2009, 20:02
Avatar de mc_quake  
Fecha de Ingreso: enero-2006
Ubicación: www.ecocargo.cl
Mensajes: 683
Antigüedad: 18 años, 10 meses
Puntos: 8
Respuesta: Sacar registros aleatorios de BD?

Cita:
Iniciado por RauMarSo Ver Mensaje
No entiendo lo que me quieres decir.

Un saludo y muchas gracias.
tu pides esto:
sacar unos registros aleatorios de una base de datos pero solo consigo sacar uno.

solucion usando la cosulta que ya tines pesta:


Código asp:
Ver original
  1. <%
  2. AbreBaseDatos("Datos")
  3. SQL = "SELECT TOP 10 * FROM ARTICULOS NEWID()"
  4. ' selecconas 10 registros de forma aleatoria de la tabla articulos. el numero 10 lo cambias por la cantidad de registros que quieras optener
  5. AbreRecordSet rs,SQL,ConDatos
  6. intTotalRecords = rs.RecordCount
  7.  
  8. While NOT rs.EOF
  9. %>
  10. <a href="/articulo.asp?op=Ver_Articulo&RefPro=<%=rs.fields(" RefProducto")%>&RefArt=<%=rs.fields("RefArticulo") %>&cat=<%=rs.fields("categoria")%>"><img src="/imagen.asp?path=<%=Server.MapPath("/Images/Productos/")& "/" & rs.fields("RefArticulo")%>_1.jpg&height=75" height="75" border="0" align="left"></a>
  11. <br><br>
  12. <a href="/articulo.asp?op=Ver_Articulo&RefPro=<%=rs.fields(" RefProducto")%>&RefArt=<%=rs.fields("RefArticulo") %>&cat=<%=rs.fields("categoria")%>"><%=rs("Nombre" )&" "&rs("color")%></a><br><br><br><font size="1"><blockquote><%=(left(rs("Descripcion"),25 0)) %> ...</blockquote></font>
  13.  
  14. <%
  15. Rs.MoveNext
  16. wend
  17. %>
__________________
Mc_Quake

Para ayudar en lo que se pueda:Zzz:
  #5 (permalink)  
Antiguo 30/03/2009, 05:57
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Sacar registros aleatorios de BD?

Hola

Básicamente lo tienes hecho

Cambia esto

Código asp:
Ver original
  1. <a href="/articulo.asp?op=Ver_Articulo&RefPro=<%=rs.fields(" RefProducto")%>&RefArt=<%=rs.fields("RefArticulo") %>&cat=<%=rs.fields("categoria")%>"><img src="/imagen.asp?path=<%=Server.MapPath("/Images/Productos/")& "/" & rs.fields("RefArticulo")%>_1.jpg&height=75" height="75" border="0" align="left"></a>

por esto otro

Código asp:
Ver original
  1. <a href="/articulo.asp?op=Ver_Articulo&RefPro=<%=rs(0)%>&RefArt=<%=rs(1) %>&cat=<%=rs(3)%>"><img src="/imagen.asp?path=<%=Server.MapPath("/Images/Productos/")& "/" & rs(4)%>_1.jpg&height=75" height="75" border="0" align="left"></a>

Adecualo al orden de los campos de tu bd. Por ejemplo si el campo RefProducto es el primer campo entonces, para imprimirlo rs(0). Y así sucesivamente

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;" />
  #6 (permalink)  
Antiguo 30/03/2009, 07:49
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 24
Antigüedad: 16 años
Puntos: 0
Respuesta: Sacar registros aleatorios de BD?

Cita:
Iniciado por mc_quake Ver Mensaje
tu pides esto:
sacar unos registros aleatorios de una base de datos pero solo consigo sacar uno.

solucion usando la cosulta que ya tines pesta:


Código asp:
Ver original
  1. <%
  2. AbreBaseDatos("Datos")
  3. SQL = "SELECT TOP 10 * FROM ARTICULOS NEWID()"
  4. ' selecconas 10 registros de forma aleatoria de la tabla articulos. el numero 10 lo cambias por la cantidad de registros que quieras optener
  5. AbreRecordSet rs,SQL,ConDatos
  6. intTotalRecords = rs.RecordCount
  7.  
  8. While NOT rs.EOF
  9. %>
  10. <a href="/articulo.asp?op=Ver_Articulo&RefPro=<%=rs.fields(" RefProducto")%>&RefArt=<%=rs.fields("RefArticulo") %>&cat=<%=rs.fields("categoria")%>"><img src="/imagen.asp?path=<%=Server.MapPath("/Images/Productos/")& "/" & rs.fields("RefArticulo")%>_1.jpg&height=75" height="75" border="0" align="left"></a>
  11. <br><br>
  12. <a href="/articulo.asp?op=Ver_Articulo&RefPro=<%=rs.fields(" RefProducto")%>&RefArt=<%=rs.fields("RefArticulo") %>&cat=<%=rs.fields("categoria")%>"><%=rs("Nombre" )&" "&rs("color")%></a><br><br><br><font size="1"><blockquote><%=(left(rs("Descripcion"),25 0)) %> ...</blockquote></font>
  13.  
  14. <%
  15. Rs.MoveNext
  16. wend
  17. %>
Me da el siguiente error y no se a que se debe, creo que esta todo bien

------ error -------
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis en la cláusula FROM.

/Includes/master.asp, línea 45
---- fin error -----

----- codigo -----

Sub AbreRecordset(recordset,consulta,conexion)
'Response.Write(CONSULTA & "<BR><BR>")
Set Recordset=Server.CreateObject("ADODB.Recordset")
Recordset.Open consulta,conexion,adOpenStatic <--------Linea 45
End Sub

--- fin codigo ---

Un saludo y muchísimas gracias por vuestra ayuda
  #7 (permalink)  
Antiguo 30/03/2009, 08:59
Avatar de mc_quake  
Fecha de Ingreso: enero-2006
Ubicación: www.ecocargo.cl
Mensajes: 683
Antigüedad: 18 años, 10 meses
Puntos: 8
Respuesta: Sacar registros aleatorios de BD?

1.- Prueba asi quitando el () al newid
2.- Verifica que tu conexion a la bd este bien
este error casi siempre se debe a que no tienes la cadena de conexion a la BD puesta


Código asp:
Ver original
  1. AbreBaseDatos("Datos")
  2. SQL = "SELECT TOP 10 * FROM ARTICULOS NEWID"
  3. ' selecconas 10 registros de forma aleatoria de la tabla articulos. el numero 10 lo cambias por la cantidad de registros que quieras optener
  4. AbreRecordSet rs,SQL,ConDatos
  5. intTotalRecords = rs.RecordCount
__________________
Mc_Quake

Para ayudar en lo que se pueda:Zzz:
  #8 (permalink)  
Antiguo 30/03/2009, 10:06
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 10 meses
Puntos: 98
Respuesta: Sacar registros aleatorios de BD?

La función NEWID() que bien recomienda McQuake, es de T-SQL por lo tanto solo funciona en SQL Server y generalmente se utiliza el el order by pues genera GUIDS de manera aleatoria.
Creo que deberías tratar lo que te dice Adler.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 31/03/2009, 06:43
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 24
Antigüedad: 16 años
Puntos: 0
Respuesta: Sacar registros aleatorios de BD?

Cita:
Iniciado por u_goldman Ver Mensaje
La función NEWID() que bien recomienda McQuake, es de T-SQL por lo tanto solo funciona en SQL Server y generalmente se utiliza el el order by pues genera GUIDS de manera aleatoria.
Creo que deberías tratar lo que te dice Adler.

Saludos
Entonces newid() no funciona?

Lo que me comenta Adler ya lo he hecho, pero solo me saca un registro aleatoriamente, y lo que yo quiero es que saque varios.

Un saludo y muchísimas gracias.
  #10 (permalink)  
Antiguo 31/03/2009, 07:12
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Sacar registros aleatorios de BD?

Hola

Podrías añadirle un ciclo

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;" />
  #11 (permalink)  
Antiguo 01/04/2009, 23:19
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 8 meses
Puntos: 88
Respuesta: Sacar registros aleatorios de BD?


numeros aleatorios

Código ASP:
Ver original
  1. function alea(max)
  2.     dim rndmax
  3.     dim rndnumber
  4.    
  5.     rndmax = cdbl(max)
  6.     randomize timer
  7.    
  8.     rndnumber = int(rnd * rndmax)
  9.  
  10. alea = rndnumber
  11. end function
donde max, seria la limitante de los numeros aleatorios


Código ASP:
Ver original
  1. <%
  2. AbreBaseDatos("Datos")
  3. SQL = "SELECT * FROM ARTICULOS"
  4. AbreRecordSet rs,SQL,ConDatos
  5.  
  6. max_despliegue = 10
  7. intTotalRecords = rs.RecordCount
  8.  
  9. for I=0 to max_despliegue
  10.     rs.Move alea(intRandomNumber)%>
  11.  
  12. <a href="/articulo.asp?op=Ver_Articulo&RefPro=<%=rs.fields(" RefProducto")%>&RefArt=<%=rs.fields("RefArticulo") %>&cat=<%=rs.fields("categoria")%>"><img src="/imagen.asp?path=<%=Server.MapPath("/Images/Productos/")& "/" & rs.fields("RefArticulo")%>_1.jpg&height=75" height="75" border="0" align="left"></a>
  13. <br><br>
  14. <a href="/articulo.asp?op=Ver_Articulo&RefPro=<%=rs.fields(" RefProducto")%>&RefArt=<%=rs.fields("RefArticulo") %>&cat=<%=rs.fields("categoria")%>"><%=rs("Nombre" )&" "&rs("color")%></a><br><br><br><font size="1"><blockquote><%=(left(rs("Descripcion"),25 0)) %> ...</blockquote></font><%
  15.  
  16. next
  17. 'RECUERDA CERRAR TODO PERFECTAMENTE PARA QUE NO MARQUE ERROR
  18. %>

esto desplegaria un total de 10 aleatorios
que opinan?
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #12 (permalink)  
Antiguo 02/04/2009, 00:57
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 10 meses
Puntos: 98
Respuesta: Sacar registros aleatorios de BD?

Está bien para partir de ahí pero quizás es un poco más complejo que esto pues corres el riesgo de que tus números aleatorios estén repetidos, por ende, los registros...

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #13 (permalink)  
Antiguo 02/04/2009, 06:40
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Sacar registros aleatorios de BD?

Hola

u_goldman tiene razón, es mas complicado que eso.

Encontré esto, para lo que ocupa habría que cambiar

For iArrayLooper = LBound(arrSequencer) To UBound(arrSequencer)

por For iArrayLooper = LBound(arrSequencer) To 9 ' Así muestra 10 registros

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;" />
  #14 (permalink)  
Antiguo 02/04/2009, 12:10
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 10 meses
Puntos: 98
Respuesta: Sacar registros aleatorios de BD?



Código asp:
Ver original
  1. function getRandomNumber()
  2.     Randomize()
  3.     getRandomNumber = int (1000*Rnd)+1
  4.  end function
  5.  
  6. 'Numero de registros que devolveremos del recordset
  7. recNo = 3
  8.  
  9. strSQL = "SELECT TOP " & recNo & " id, campo1, Rnd(" & -1 * (getRandomNumber()) & "*id) FROM tbl1 ORDER BY 3"

La magia sucede cuando obtienes un numero aleatorio y lo vuelves a aleatorizar haciendo un calculo en access que en este caso consiste en obtener un numero aleatorio multiplicado por el id, despues se ordena con un numero N, en este caso el mismo valor usado para devolver los primeros registros y listo
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway

Última edición por u_goldman; 02/04/2009 a las 13:46
  #15 (permalink)  
Antiguo 02/04/2009, 12:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 1
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Sacar registros aleatorios de BD?

beunos dias a todos miren tengo una duda estoy estudian do el sexto semestre de preparatoria tengo una duda comopuedo hacer una conexion de una base de datos de access a una pagina de php gracias por su ayudase despide de ustedes su amigo alajandro2
  #16 (permalink)  
Antiguo 02/04/2009, 12:54
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 10 meses
Puntos: 98
Respuesta: Sacar registros aleatorios de BD?

Cita:
Iniciado por alejandro2 Ver Mensaje
asi no es esta mal
¿?

Cita:
Iniciado por alejandro2 Ver Mensaje
beunos dias a todos miren tengo una duda estoy estudian do el sexto semestre de preparatoria tengo una duda comopuedo hacer una conexion de una base de datos de access a una pagina de php gracias por su ayudase despide de ustedes su amigo alajandro2
Parece que estás un poco perdido, ve al foro de PHP por favor.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #17 (permalink)  
Antiguo 02/04/2009, 13:11
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Sacar registros aleatorios de BD?

Hola

U_Goldman he probado tu magia y se rompe cuando refrescas la página una y otra vez y continua mostrando los mismos registros ¿O quizás los he probado con una tabla con pocos registros (5)?
__________________
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;" />
  #18 (permalink)  
Antiguo 02/04/2009, 13:41
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 10 meses
Puntos: 98
Respuesta: Sacar registros aleatorios de BD?

Mmhhhh, a ver pon tu código...deja además subir mi ejemplo para que lo descarguen.

Edit: el order by tiene que ser 3, hace mucho que tengo ese código así que no recordaba bien lo que hacía y quise según yo hacerlo mas dinámico....ya lo corregí.
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway

Última edición por u_goldman; 02/04/2009 a las 13:46
  #19 (permalink)  
Antiguo 02/04/2009, 13:58
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 10 meses
Puntos: 98
Respuesta: Sacar registros aleatorios de BD?

Acá esta el código, a ver si les funciona
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #20 (permalink)  
Antiguo 03/04/2009, 05:53
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Sacar registros aleatorios de BD?

Hola

U_G, perfecto

No me deba cuenta que el order by era 3 y yo solo seleccionaba un campo mas el aleatorio
__________________
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;" />
  #21 (permalink)  
Antiguo 03/04/2009, 12:09
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 10 meses
Puntos: 98
Respuesta: Sacar registros aleatorios de BD?

Lo del order by fue algo que hice mal yo. Al momento de copipeistear me pareció que podía agregar funcionalidad extra al hacer ese ORDER BY, sin recordar por qué estaba así...es que el viernes estaba cerca, por cierto, salud!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
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 15:28.