IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Requete SQL aleatoire


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Par défaut Requete SQL aleatoire
    Bonjour,

    J'ai déjà trouvé un problème similaire au mien sur le forum, mais il est mit résolu et la réponse ne me convient pas, c'est pour cette raison que je post.

    Alors mon problème est le suivant :

    Je lance une requête depuis VB.net vers Access qui est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqltxt = "SELECT * FROM TOuv ORDER BY RND(IDRec)"
    Je voudrais obtenir un résultat aléatoire mais rien n'y fait, j'obtient toujours le même. De ce que j'ai pu lire, RND() ne fonctionnerait que sur access. Pourtant que je le mette ou pas influence le résultat, mais j'obtiens toujours ce même résultat.

    Auriez vous une idée ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    A premiere vue sous SQL Server

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT TOP 1 * FROM table
    ORDER BY NEWID()

    pour Access ca devrait marcher mais si j'ai bien lu le IDRec doit etre un champ auto incrémanté

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Par défaut
    C'est bien NewID() sur sqlserver et c'est Rnd() sur access

    donc si je met pour 1,2,3,4,5,6,7

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqltxt = "SELECT * FROM TOuv
    j'aurai comme résultat : 1,2,3,4,5,6,7


    Si je fait la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqltxt = "SELECT * FROM TOuv ORDER BY RND(IDRec)"
    J'aurais par exemple 2,5,1,3,4,7,6
    Mais j'aurais beau relancer mon programme, j'aurais toujours ce même résultat.



    J'ai essayé aussi en ajoutant

    Il me sort toujours le même numéro.

    EDIT
    J'ai oublie de répondre à ca :

    Oui, en effet, IDRec est un champ auto-incrémenté

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    tu as combien de record dans ta table?

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur C#
    Inscrit en
    Avril 2011
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur C#
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 348
    Par défaut
    J'ai 27 records. Ce sont en fait 27 noms d'ouvriers pour lesquels j'essaye d'attribuer une tâche de maintenant aléatoire. Ils sont classés par groupe et doivent être ensemble pour certaines de ces tâches.

    J'essaye de récupérer un ordre aléatoire de cette requête pour que les ouvriers ne fassent pas toujours le même travail.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Perso je sais pas très bien comment marche le Order by avec le rand.
    A premiere vue quand c'est un chiffre c'est le numéro de colonne du select donc je vois pas comment ca peut donner un truc "très aléatoire"

    Perso je générai un nombre aléatoire en VB.Net et je selectionerai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "sqltxt=Select Top 1 * From TOuv Where ID>= " & myRandValue
    et si tu as besoin de plusieurs ouvriers

    tu fais un select * from TOuv

    Tu les stocks dans une List<Ouvrier>
    tu fais un RandValue =Rand(ListOuvrier.Count)
    ouv1 = ListOuvrier[RandValue]
    ListOuvrier.RemoveAt(RandValue)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. requete sql aleatoire avec rnd()
    Par houbi2b dans le forum VB.NET
    Réponses: 6
    Dernier message: 05/04/2011, 10h25
  2. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 16h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo