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.
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)