cs_ksper92
Messages postés5Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention16 septembre 2005
-
15 sept. 2005 à 16:47
P__ROMEO
Messages postés294Date d'inscriptionvendredi 25 février 2005StatutMembreDernière intervention 9 mars 2006
-
15 sept. 2005 à 17:19
Bonjour,
J'essaie depuis un moment de simuler un tirage au sort sur les enregistrements de ma DB.
Pour ce faire, j'utilise le champ Numero de la table.
Je veux donc que lors d'un clic sur un bouton, un numero d'enregistrement soit choisi parmi ceux contenus dans la DB.
Voilà le code que j'utilise pour cela :
Dim aleatoire As Integer
Dim Conn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim maTable As String
maTable = "Clients"
With Conn
.Provider = "Microsoft.JET.OLEDB.4.0"
.Open "C:\clients.mdb"
End With
SQL = "SELECT * From Clients "
Set rst = New ADODB.Recordset
rst.ActiveConnection = Conn
rst.CursorType = adOpenKeyset
rst.LockType = adLockOptimistic
rst.Source = SQL
rst.Open
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 15 sept. 2005 à 17:04
Voila ce que tu fait ...
1- Tu ouvres ton recordset rst : Très bien
2- tu initialises le générateur de nombres pseudo-aléatoire par randomize : Très bien
3- tu tires un nombre pseudo-aléatoire entre 1 et la valeur contenu dans le champ "Numero" de l'enregistrement courant de rst : Pas bien !!!
En effet, le 1er enregistrement que te retourne ta requete est toujours le même, donc son champ numero est toujorus le même : Ne serait-ce pas zéro ?? Auquel cas, ton rnd te renvoi un nombre aléatoire compris entre 0 et ... 0 ... soit entre 0 et 0 !!!!!!
Au lieu de "rst.Fields("Numero").Value", il faudrait que tu mettes le plus grand numero possible dans la table !!
cs_ksper92
Messages postés5Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention16 septembre 2005 15 sept. 2005 à 17:08
Le problème est que justement, je ne peux définir le nombre d'enregistrement maximum de la table car elle est en perpetuelle augmentation.
Je veux donc que le chiffre soit compris entre 1 et le plus grand nombre de la table actuellement.
C'est sur ce plus grand nombre actuel que je bute.
Je ne sais pas comment le sortir pour l'utiliser dans la fonction.
P__ROMEO
Messages postés294Date d'inscriptionvendredi 25 février 2005StatutMembreDernière intervention 9 mars 20061 15 sept. 2005 à 17:14
<TD id=HB_Focus_Element vAlign=top width="100%" background="" height=250 body UNSELECTAB<>mais, si le numéro est une s'incrémente parapor aux enregistrements (tuples), pourquoi ne pas a chaque fois compter le nombre de tuple, et se sera le numéro le plus grand.
Vous n’avez pas trouvé la réponse que vous recherchez ?
jpleroisse
Messages postés1788Date d'inscriptionmardi 7 novembre 2000StatutMembreDernière intervention11 mars 200627 15 sept. 2005 à 17:15
Bonjour,
Je viens d'essayer ton code avec la BD Biblio.mdb qui se trouve dans vb98 et celà fonctionne. Essaie et compare avec ton code.
Private Sub Command1_Click()
Dim aleatoire As Integer
Dim Conn As New ADODB.Connection
Dim rst As New ADODB.Recordset
'Dim maTable As String
Dim SQL As String
'maTable = "Clients"
'A quoi sert maTable??
With Conn
.Provider = "Microsoft.JET.OLEDB.3.51"
.Open "C:\Program Files\Microsoft Visual Studio\vb98\Biblio.mdb"
End With
SQL = "SELECT * From [Title Author] "
Set rst = New ADODB.Recordset
rst.ActiveConnection = Conn
rst.CursorType = adOpenKeyset
rst.LockType = adLockOptimistic
rst.Source = SQL
rst.Open