Tengo una BD con +5000 registros y quiero obtener listados parciales de datos pero con registros elegidos al azar de entre el total. Es decir, necesito una consulta que me pida el nº de registros a seleccionar y que los coja del total al azar... CARCAR ====== La idea consiste en añadir un nuevo campo, de tipo "Si/No" a la tabla y crear un procedimiento que actualice dicho campo en el número de registros que se le indique, luego puedes utilizar ese campo en la consulta. El siguiente procedimiento hace exactamente lo que te he explicado más arriba. Sub SeleccionarAzar(Num As Long) Dim RsIn As Recordset Dim NumReg As Long Dim Nrr As Long Dim X As Long CurrentDb.Execute "UPDATE Tabla SET Seleccionado = False" Randomize Set RsIn = CurrentDb.OpenRecordset("Tabla", dbOpenDynaset) RsIn.MoveLast NumReg = RsIn.RecordCount If Num > NumReg / 1.2 Then MsgBox "Demasiados registros a seleccionar." RsIn.Close Exit Sub End If RsIn.MoveFirst For X = 1 To Num Nrr = Int((NumReg * Rnd) + 1) RsIn.AbsolutePosition = Nrr Do While RsIn!Seleccionado = True Nrr = Int((NumReg * Rnd) + 1) RsIn.AbsolutePosition = Nrr Loop RsIn.Edit RsIn!Seleccionado = True RsIn.Update Next X RsIn.Close MsgBox "Fin" End Sub Al procedimiento se le llama pasándole como parámetro el número de registros a seleccionar. Hacemos uso de las funciones Randomize y Rnd para obtener un número al azar que se encuentre dentro del rango de registros de la tabla. Además también usamos la propiedad AbsolutePosition que permite acceder a un registro por su posición en la tabla, independientemente de claves... Existe dentro del procedimiento un bucle para asegurar que accedemos a registros que no han sido seleccionados anteriormente.