Access fonction aléatoire

Fermé
Sil - 30 oct. 2010 à 22:23
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 - 7 nov. 2010 à 20:02
Bonjour,

Je me demandais s'il était possible d'afficher sous access une chaîne de caractère de façon aléatoire (les chaînes de caractères étant préalablement enregistrées dans la BDD) ? Si oui quelle fonction ? et comment l'utilisée???
merci d'avance pour votre aide ^^

Sil


30 réponses

blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024 3 317
Modifié par blux le 31/10/2010 à 11:23
Salut,

tu veux les afficher où ?

Si elles sont dans une table, la fonction rnd peut te permettre d'extraire la ligne correspondante...

A+ Blux
 "Les cons, ça ose tout. 
C'est même à ça qu'on les reconnait"
1
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 oct. 2010 à 17:16
Bonjour

J'ai deja u ce probleme je l'ai reglé comme ceci.

Tout mes mot etait dans une table exemple mot qui a un champ Mot et un champ id qui est numero auto

J'ai creer une requete qui s'appel alea:

Select top1 mot from mot order by Rnd(Now()*id);

Dans mon code vba

dim rs as recordset
dim db as database

set db = curentdb
set rs = db.openrecordset("alea")
whith rs
aleatoire = !mot
msgbox(mot)
end with
rs.close
db.close

A toi de voir pour adapter ce code a ton souci
1
bonjour!!
merci pour ta réponse!
pour répondre à ta question j'aimerais bien qu'une fenêtre s'ouvre et affiche un mot aléatoirement et peut-être mettre un bouton "suivant" pour afficher un nouveau mot... je sais pas si tu vois ce que je veux dire???

merci pour ton aide!!

Sil
0
bonjour,
merci pour ta réponse!!!
c'est juste pour avoir quelque précision concernant ton message moiced59, "top1" correspond à quoi? et quand je veux exécuter la requête il m'indique une erreur... mais j'ai aussi un problème quand j'ai voulu exécuter le code VBA, on m'a demandé le nom de la macro (que j'ai appelé alea) et ensuite ce morceau de code est apparu: Sub alea() End Sub.
Je suis un peu (beaucoup même!!) perdu
merci pour votre aide
sil
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 oct. 2010 à 18:40
Bonjour

Top 1 signifie je recupere le 1 ere enregistrement

Donne moi les nom exact de ton travail et je te fais ta requete

Qd tu execute la requete tu obtiens bien 1 seul resultat?
0
Re!

alors ma table s'appelle "mots", et j'ai deux champs: "num" et "nom"
Par contre quand j'exécute la requête j'ai une erreur par rapport à la dernière ligne: il me dit qu'il y a une erreur de compilation.

merci pour ton aide
sil
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 oct. 2010 à 18:56
Essai cette requete


SELECT top 1 Nom
FROM Mots
ORDER BY Rnd(Now()*num);
0
J'ai toujours cette erreur de compilation:
"Erreur de compilation. dans l'expression Rnd(now()*num);"
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 oct. 2010 à 19:10
Tu fais comment tu fais la requete et tu fais executer ou tu passe par du VBA?
0
blux Messages postés 26531 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 décembre 2024 3 317
Modifié par blux le 31/10/2010 à 19:35
now() renvoie une date et heure, donc la multiplier par une valeur, je ne sais pas si cela a un sens...
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
Modifié par moiced59 le 31/10/2010 à 19:36
tu n'a pas bien lu
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 oct. 2010 à 19:40
Bien sur que si c la facon d obtenir un nbre variable qui sert a trier aleatoirement
0
bonjour!!

Voici la requête que j'utilise...
SELECT TOP 1 nom
FROM mots
ORDER BY Rnd(Now()*num);

et ensuite je fais exécuter ...

merci pour votre aide^^
Sil
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
1 nov. 2010 à 14:30
Elle fonctionne tres bien chez moi

Supprime le top 1 voir
0
même en supprimant le top 1 ça ne fonctionne toujours pas....
est ce que ça change quelque chose si c'est access 2007? ça a une incidence? peut-être que le problème vient de là?

encore merci de ton aide^^
sil
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
1 nov. 2010 à 18:27
J suis sous 2007

J'ai creer la base sous 2003 et cela fonctionnait deja

tu peux m'envoyé ta base?
via cijoint.fr

Merci
0
ma base était enregistrée en 2007... et je voulais te l'envoyer dans une version 2002-2003, et avant de te la renvoyer j'ai tester avec cette version et ça fonctionne... donc en fait c'est un problème de version... parce que là avec la version 2002-2003 j'ai bien un mot qui s'affiche !!!

tu veux toujours que je t'envoies ma base? et si oui quelle version?
merci de ton aide
Sil
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
1 nov. 2010 à 19:00
Je viens de recreer une base en 2007

avec une table mots et g tester la requete cela fonctionne donc je veux bien ta base 2007 pour voir le probleme
0
Je pense que mon erreur venait de ma mauvaise utilisation du code vba (celui que tu m'avais passé dans un de tes premiers posts) et en supprimant ce que j'avais fait en vba ben la requête fonctionne... est ce que c'est normal qu'elle m'affiche toujours le même mot à chaque fois que je la lance? et comment faire pour intégrer du code VBA... puisque apparemment j'ai des difficultés à le faire...

merci ^^
Sil
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
1 nov. 2010 à 20:03
Non c pas normal le mot doit changer environ toute les 2 secondes

Execute le plein de fois de suite voir
voici un code qui fonctionne j'ai creer un bouton et cliquer plusieurs fois g un mot different a chaque fois

Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Dim mess As String
Set rs = db.OpenRecordset("aleatoir")
With rs
mess = !nom
MsgBox (mess)
End With
rs.Close
db.Close
0
bonjour,
désolé j'ai du m'absenter un moment...
bon de mon côté j'ai un peu avancé... je ne sais pas si mon projet était bien expliqué... je sais pas si j'avais bien expliqué je voulais que la fenêtre s'affiche dans access... mais comme je n'ai pas trouvé comment faire (si ça se trouve on ne peut pas le faire!!) donc j'ai téléchargé une version express de VB... j'ai réussi ma connexion entre ma base access (2007) et vb mais la connexion ne fait plus comme avant... alors maintenant je suis un peu perdu... je ne sais pas comment écrire que je voudrais à l'enregistrement suivant... parce que le code juste au dessus ne fonctionne pas... beaucoup de chose ont changé depuis VB6... :s j'aurais pas du laisser tomber... mais j'y reviens lentement mais surement^^
encore merci pour votre aide
Sil
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
6 nov. 2010 à 10:32
Bonjour

Le code VBA que je t mis fonctionne tres bien
0
bonjour^^

ok ben s'il fonctionne bien chez toi, je vais persister^^ mdr ^^
merci pour ton aide^^

Sil
0