Hasard dans une requête

Comment tirer des nombres aléatoires dans une requête ? La fonction Rnd() semble ne pas fonctionner : elle produit toujours le même nombre.

Solution

En fait, la fonction Rnd() sort bien un nombre aléatoire différent à chaque appel. La nuance est que, dans une requête, cette fonction n’est appelée qu’une seule fois, pour des raisons de performance.

Une astuce consiste à appeler une fonction en lui passant une valeur qui change à chaque fois, par exemple un champ de la requête. Voici par exemple une nouvelle fonction ForceAlea(), à taper dans un module classique :

Exemple

Voici un exemple d’utilisation de cette fonction dans une requête (la requête est basée sur une table tblEssai, contenant le champ Quantité) :

Deux appels successifs de la requête produisent des résultats différents :

   

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *