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.
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