Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/02/2009, 22:36
[Fer]_[123]
 
Fecha de Ingreso: noviembre-2003
Ubicación: Pvcia. de Bs. A.s
Mensajes: 20
Antigüedad: 21 años, 5 meses
Puntos: 0
Recuperar registros al azar con BD

Hola de nuevo yo! hace 3 dias que lucho con esto y no hay caso, voy a apelar a sus conocimientos que son mas que los mios sin duda...estoy haciendo un sistemita de ofertas en el costado de la pagina de un amigo que no deben repetirse o sea tengo 3 recuadritos que cada uno muestra imagen y texto de la oferta distinto del otro, les muestro lo que hice para elprimero:

<%
set rs = CreateObject("ADODB.Recordset")
set rs5 = CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("productos.mdb"))

Dim id_var
minimo = 1
' cantidad total de la tabla
maximo = "select count(id) as cant_total from Productos "

rs.Open maximo, conn
maximo1 = rs("cant_total")
encontro = 0

'Genero un nro. aleatorio para no cablearlo y que muestre diferentes productos cada vez que hago F5.
Randomize
id_var = Int(((maximo1-minimo+1) * Rnd) + minimo)

do while encontro = 0
'busco el ID del producto = al nro. que me genero el random.
sqltxt="SELECT id as id_aux FROM Productos Where id = "&id_var&" "
rs5.Open sqltxt,conn
id = rs5("id_aux")

'Este es una marca que me dice si es oferta(Si) o no es oferta(No).
'Me fijo lo que tiene de acuerdo al ID encontrado arriba.
flag = "select flag_oferta as flag from productos where id = "&id&" "
rs5.Open flag, conn
flag_of = rs5("flag")

'Si no es oferta le digo que me genere otro nro. y que lea el siguiente.
if flag_of ="No" then
Randomize
id_var = Int(((maximo1-minimo+1) * Rnd) + minimo)
Rs5.movenext
else
'de lo contrario quiere decir que es oferta y deberia mostrarme el producto.
rs.close
rs.CursorType = adOpenKeyset
variable=Request("tabla")

sqltxt="SELECT * FROM Productos Where id = "&id&" and flag_oferta = 'Si' "
rs.Open sqltxt,conn
' Leo las ofertas y Luego recupero mas abajo los registros con rs.
end if


loop

**El problema es que me tira el siguiente error

ADODB.Recordset error '800a0e79'

La operación no está permitida si el objeto está abierto.

/ofertas/principal.asp, línea 484
>es esta linea 484: rs5.Open flag, conn

Se que no deberia ser muy dificil pero es medio enroscado o me enrosque yo, puede traer la marca en S o en N . El otro tema importante es que si se borra un registro de la tabla osea desaparece el ID al mostrar muestra el recuadro vacio, :( ;(

Si alguien vio alguna vez algo parecido bienvenido será !

Saludos y gracias d e antemano.