
11/02/2009, 22:36
|
| | 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. |