{Access} randomize! !

Résolu
Bonjour,

voila je vous explique ce que je souheterais faire

j ai une table avec un champ "prenom"

j'ai fais un formulaire avec autant de champ que de "prenom" j aimerais pouvoir aleatoirement mettre un prenom dans chaque champ mais je ne vois pas par ou commencer je suppose qu 'il faut uitliser la fonction randomize mais j en suis pas du tt sur

merci a vous
Configuration: Windows XP
Firefox 3.0.13

16 réponses

  • Votes
  • Date
  • Date décroissante
  1. oui cela est possible mais je pe fire en sorte que non as tu une idee
    1. En supposant que dans ta table (Table1) tu as 2 champs (id et prenom)

      la requete suivante va te donner le prenom d'une personne aléatoirement.

      SELECT TOP 1 prenom FROM Table1 order by Rnd((-1000*id)*Time());

      Cordialement
      1. salut je vien d essayé mais j obtien tjs le meme prenom et mon but est de remplir 7 champs avec mes 7 prenom different et aleatoirement
        merci a toi
        1. Oups désolé ...

          fait cette requête :

          SELECT TOP 1 prenom FROM Table1 ORDER BY Rnd((-1000*id)*rnd());

          TOP 1 : Prend le premier résultat de la requête
          ORDER BY : Range les requêtes
          Rnd(-1000*id) : nombre aléatoire, -1000 je ne sais pas, et id le numéro de ton incrémentation (J'ai repris un code que j'ai modifier)
          et le dernier rnd, il prend un nombre aléatoire, toute a l'heure je t'ai donné le temps, mais des que tu génères la requête pour tous c'était le même temps, pour cela que j'ai changé par rnd()

          Cordialement.
          1. ok merci bcp

            Serais tu m aider pour generer un code qui met un prenom sur le champ1 puis un <> champ2.....

            merci bcp
            1. Bon j'ai une solution, mais a t'expliquer ça va être dur :/

              en passe moi ton mail, je t'envoi la base, et tu regarde se que j'ai fais :)

              Cordialement
              1. Bon ... Je vais te faire un tuto ^^

                Tu vas dans requête et tu fais cette requête :

                SELECT prenom
                FROM Table1
                ORDER BY Rnd((1*id)*rnd());


                Sur un formulaire, tu mets 7 Zones de texte (ex de nom : C1,C2,C3,C4,C5,C6,C7)
                Ensuite tu mets 1 Zone de liste (ex de nom : rslt) que tu mettras en cacher (Visible non).
                Dans le contenu, tu vas chercher ta requête.

                A l'ouverture de ton formulaire tu mets le code suivant, qui va remplir tes champs.

                C1 = rslt.Column(0, 0)
                C2 = rslt.Column(0, 1)
                C3 = rslt.Column(0, 2)
                C4 = rslt.Column(0, 3)
                C5 = rslt.Column(0, 4)
                C6 = rslt.Column(0, 5)
                C7 = rslt.Column(0, 6)


                Tu peux faire un bouton qui peut refaire la requêtre, en mettant sur l'évenement clique :

                rslt.Requery
                C1 = rslt.Column(0, 0)
                C2 = rslt.Column(0, 1)
                C3 = rslt.Column(0, 2)
                C4 = rslt.Column(0, 3)
                C5 = rslt.Column(0, 4)
                C6 = rslt.Column(0, 5)
                C7 = rslt.Column(0, 6)


                J'espère que tu as bien compris :)

                Cordialement.
                1. bonjour

                  voila je vien d essayé mais aucun resultat l requete fonctionne la zone e liste aussi mais rien ne s inscrit s mes champs
                  1. c bon g reussi !!!!!!

                    maintenant j essai un truc c de dire que sur mise a jour si le prenom na pas changé lors je recommence

                    g essyé ca
                    If Me.prenom1 = me.prenom1 Then
                    .......
                    End If

                    mais sans reussite

                    g essayé avec un msgbox mis il se met a chaque fois!!!!

                    merci
                    1. Salut, voilà ce que tu peux faire :)

                      rslt.Requery
                      test = 0
                      Do While test = 0
                          If C1 <> rslt.Column(0, 0) And C2 <> rslt.Column(0, 1) And C3 <> rslt.Column(0, 2) And C4 <> rslt.Column(0, 3) And C5 <> rslt.Column(0, 4) And C6 <> rslt.Column(0, 5) And C7 <> rslt.Column(0, 6) Then
                              C1 = rslt.Column(0, 0)
                              C2 = rslt.Column(0, 1)
                              C3 = rslt.Column(0, 2)
                              C4 = rslt.Column(0, 3)
                              C5 = rslt.Column(0, 4)
                              C6 = rslt.Column(0, 5)
                              C7 = rslt.Column(0, 6)
                              test = 1
                          Else
                              rslt.Requery
                          End If
                      Loop


                      Cordialement.