Fonction ateatoire

melleweb Messages postés 9 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 28 juin 2007 - 28 juil. 2006 à 10:47
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 28 juil. 2006 à 12:08
salut,j'ai un petit probleme avec une fonction aléatoire qui permet d'extraire des différents enregistrements(le nombre est déterminé par l'utilisaleur) d'une façon aléatoires et les mettre dans une msflexgrid,j'ai procédé avec ce code:

For i = 0 To b - 1
Randomize
a = Int((n * Rnd) + 1)
"""""avec n c'est Rscal.Recordcount"""""""
RsCal.Move (a)
MSFlexGrid1.AddItem RsCal(0) & vbTab & RsCal(1) & vbTab & RsCal(2) & vbTab & RsCal(3) & _
                           vbTab & RsCal(4) & vbTab & RsCal(5) & vbTab & RsCal(6)


Next i
End If

 le probleme c'est au cour de la lecture boucle,il m'affiche un message
d'ereur, qui dir(BOF ou EOF est egal a true ,ou l'enregistrement actuel a été suprimé .....)
sachant que la valeur de "a" vari just dans l'intervale des valeurs existantes
merci d'avance pour votre aide.
 

1 réponse

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
28 juil. 2006 à 12:08
Salut,

Premièrement, le Randomize doit être écrit une seule fois, donc à
l'extérieur de la boucle ou encore au Form_Load. C'est un appel pour
démarrer le "générateur" de nombres aléatoires.


Pour l'erreur, j'imagine que le numéro généré par Rnd() détermine un
Index qui est inexistant dans ta table. Si tu as 10 enregistrements et
que Rnd() te retourne 11, ça va te donner un enregistrement inexistant.


Il faut donc vérifier que l'enregistrement existe avant de l'inscrire dans ta MsFlexGrid.


Et je pense que tu devrais enlever le  + 1

a = Int(n * Rnd)

MPi
0
Rejoignez-nous