Access - Aleatorio

 
Vista:
Imágen de perfil de Francesc

Aleatorio

Publicado por Francesc (68 intervenciones) el 30/11/2014 09:02:02
Estoy intentando realitzar una fichas de especies informando de dos en dos y no veo la forma de realizarlo utilizando la potencialidad de access.
Tengo registros con más de 40 campos, però los digamos necesarios para optener la ayuda de Access son Id_Reg, NomEspecie, GrupEspecie.
En un ejemplo sencillo puedo tener:

Id_Reg NomEspecie GrupEspecie

1 Alcón A
2 Gavilan A
3 Buho A
4 Gallina B
5 Faisan B
6 Codorniz B
7 Gaviota C
8 Ganso C
9 Pato C
10 Cisne C

Mediante una funcion aleatòria debería darme un resultado que imagino puede ser distinto cada vez que ejecute però no deben ser del mismo grupo y ahí es donde por mi poco conocimiento de código no se resolverlo:

Un supuesto resultado sería:

Id_Reg NomEspecie GrupEspecie
3 Buho A
7 Gaviota C

4 Gallina B
8 Ganso C

1 Alcon A
5 Faisan B

2 Gavilan A
10 Cisne C

6 Codorniz B
9 Pato C

Gracias por la ayuda que puedan darme, que como siempre me ha resuelto mis faltes de conocimiento de código.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francesc

Aleatorio

Publicado por Francesc (68 intervenciones) el 02/12/2014 21:10:25
buscando por la red encontre el siguiente código que resuelve una parte importante de la consulta que he realizado, però no me resuelve el hecho de no cruzar del mismo grupo. Pego seguidamente el código haber si alguien se le ocurre como conseguir controlar que los cruces sean de GrupoEspecie distinto:


Dim Rs As Recordset, NumReg As Long
LI = 1 ' Límite Inferior
LS = 24 ' Límite Superior
NN = 24 ' Cantidad
ReDim N(NN)
ReDim NNombre(NN)

Hombres = ""
Mujeres = ""
Y = ""
Randomize
Texto15.Visible = True
Combinación.Visible = True
Combinación = Val(Combinación & " ") + 1

CICLO:
NA = Int((LS - LI + 1) * Rnd + LI)
C = C + 1
Cc = C
N(C) = NA
If C > 1 Then
For I = 1 To C - 1
If N(C) = N(I) Then
C = C - 1
GoTo CICLO
End If
Next I
End If
If C = NN Then
Set Rs = CurrentDb.OpenRecordset("Personas", dbOpenDynaset)
Rs.MoveLast
NumReg = Rs.RecordCount
For I = 0 To NumReg - 1
Rs.AbsolutePosition = I
NNombre(N(I + 1)) = Rs("[Nombre]") & Rs("[Sexo]")
Next I
Rs.Close
For I = 1 To 24
If Right(NNombre(I), 1) = "H" Then
Hombres = Hombres & Left(NNombre(I), Len(NNombre(I)) - 1) & vbCrLf
Else
Mujeres = Mujeres & Left(NNombre(I), Len(NNombre(I)) - 1) & vbCrLf
End If
If I < 13 Then Y = Y & "y" & vbCrLf
Next I

Else
GoTo CICLO
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar