Registros aleatorios diferentes

Tengo una tabla con varios registros. Necesito coger en un recordset (rs1) un registro al azar. Despues en otro (rs2) otro registro al azar, pero diferente al que tiene rs1. Lo mismo con rs3 y rs4. Registros aleatorios que sean diferentes.
¿Como lo hago?
Gracias.

1 Respuesta

Respuesta
1
Por ahi esta solucion te sirve
Set RS = Server.CreateObject ("ADODB.RecordSet")
RS.Open "SELECT * FROM Tabla", oConn, 1
LimiteInf = 0
LimiteSup = RS.RecordCount - 1
RS.Close
Set RS1 = Server.CreateObject ("ADODB.RecordSet")
Set RS2 = Server.CreateObject ("ADODB.RecordSet")
Set RS3 = Server.CreateObject ("ADODB.RecordSet")
Set RS4 = Server.CreateObject ("ADODB.RecordSet")
'suponiendo que en la Tabla hay un campo id
NumAleatorio=Int((LimiteSup - LimiteInf + 1)*Rnd() + LimiteInf)
RS1.Open "SELECT * FROM Tabla WHERE id="&NumAleatorio, oConn, 1
NumAleatorio=Int((LimiteSup - LimiteInf + 1)*Rnd() + LimiteInf)
RS2.Open "SELECT * FROM Tabla WHERE id="&NumAleatorio, oConn, 1
NumAleatorio=Int((LimiteSup - LimiteInf + 1)*Rnd() + LimiteInf)
RS3.Open "SELECT * FROM Tabla WHERE id="&NumAleatorio, oConn, 1
NumAleatorio=Int((LimiteSup - LimiteInf + 1)*Rnd() + LimiteInf)
RS4.Open "SELECT * FROM Tabla WHERE id="&NumAleatorio, oConn, 1
Pero puede ocurrir que de la casualidad de que NumAleatorio sea igual que otro NumAleatorio, ocuerriendo asi que coja el mismo registro en diferente recordset. Lo que yo intentaba saber es si existe alguna manera de coger registros aleatorios diferentes sin añadir campos a la bdd.
En ese caso creo que se podria hacer asi
De todas formas esta solucion es medio tonta...
Siempre podes usar una funcion (creada por vos) para sacar el numero aleatorio y usar un vector para ir almacenando y comparando los numeros aleatorios obtenidos.
Set RS = Server.CreateObject ("ADODB.RecordSet")
RS.Open "SELECT * FROM Tabla", oConn, 1
LimiteInf = 0
LimiteSup = RS.RecordCount - 1
RS.Close
Set RS1 = Server.CreateObject ("ADODB.RecordSet")
Set RS2 = Server.CreateObject ("ADODB.RecordSet")
Set RS3 = Server.CreateObject ("ADODB.RecordSet")
Set RS4 = Server.CreateObject ("ADODB.RecordSet")
'suponiendo que en la Tabla hay un campo id
NumAleatorio=Int((LimiteSup - LimiteInf + 1)*Rnd() + LimiteInf)
RS1.Open "SELECT * FROM Tabla WHERE id="&NumAleatorio, oConn, 1
Primero=NumAleatorio
NumAleatorio=Int((LimiteSup - LimiteInf + 1)*Rnd() + LimiteInf)
While NumAleatorio=Primero Then
NumAleatorio=Int((LimiteSup - LimiteInf + 1)*Rnd() + LimiteInf)
WEnd
RS2.Open "SELECT * FROM Tabla WHERE id="&NumAleatorio, oConn, 1
Segundo=NumAleatorio
NumAleatorio=Int((LimiteSup - LimiteInf + 1)*Rnd() + LimiteInf)
While (NumAleatorio=Primero) OR (NumAleatorio=Segundo) Then
NumAleatorio=Int((LimiteSup - LimiteInf + 1)*Rnd() + LimiteInf)
WEnd
RS3.Open "SELECT * FROM Tabla WHERE id="&NumAleatorio, oConn, 1
Tercero=NumAleatorio
NumAleatorio=Int((LimiteSup - LimiteInf + 1)*Rnd() + LimiteInf)
While (NumAleatorio=Primero) OR (NumAleatorio=Segundo) OR (NumAleatorio=Tercero) Then
NumAleatorio=Int((LimiteSup - LimiteInf + 1)*Rnd() + LimiteInf)
WEnd
RS4.Open "SELECT * FROM Tabla WHERE id="&NumAleatorio, oConn, 1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas