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

Requêtes et SQL. Discussion :

une requête mise à jour


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 3
    Points
    3
    Par défaut une requête mise à jour
    Bonjour ! J'essaye désespérément de faire une requête mise à jour (soit en mode requête soit en VBA) qui à partir d'une fonction "générer nombre aléatoire" va me remplir une table qui contient déjà des colonnes remplies, dont la colonne que je veux remplacer est en clé primaire avec liens à d'autres tables. J'ai constaté que le problème est que si j'essaye sur une colonne non clé primaire, j'obtiens toujours le même nombre dans toutes les lignes. D'où ma question : comment faire pour appliquer ma fonction de génération de nombre aléatoire pour le champs à modifier dans chaque ligne ?

    Mille merci pour toute l'aide et les réponses que vous pourrez m'apporter ! Je mets ci-dessous les lignes de code...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE ELEVES SET ELEVES.NoEleve = GenerePass('Nombre_aleatoire');"
    ' ici je demande de faire une MàJ du champ NoEleve de ma table ELEVES


    La fonction NoEleveParDefaut est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function GenerePass(Nombre_aleatoire As Variant) As String
    Dim i As Integer
    Dim pass As String
    pass = ""
     
    Randomize
     
    For i = 1 To 8
       pass = pass & Left(10 * Rnd, 1)
       Next i
       GenerePass = UCase(pass)
     
    End Function

  2. #2
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Ton paramètre Nombre_aleatoire ne sert à rien et l'appel correspondant dans ta requete SQL n'a pas de sens...

    Vires ton paramètre et ca ira mieux!

  3. #3
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 855
    Points : 14 966
    Points
    14 966
    Par défaut
    Bonsoir devito,
    Citation Envoyé par devito
    D'où ma question : comment faire pour appliquer ma fonction de génération de nombre aléatoire pour le champs à modifier dans chaque ligne ?
    Le code tel que tu l'as écris est correct et génère bien un nombre aléatoire de 8 chiffres. Je n'ai pas tout compris de l'utilisation que tu souhaites en faire, mais même avec un nombre aussi grand, il subsiste une petite chance de générer 2 fois le même nombre pour un élève ! (1 sur 99 millions, c'est moins que de gagner le gros lot du loto tout de même). Est-ce que la propriété Nouvelles valeurs dans numéroauto qui peut être Incrément ou Aléatoire, peut résoudre ton problème ? L'inconvenient c'est que les nombres générés se situent dans une fourchette de valeurs qui va de -2 147 483 648 à 2147 483 647 : le résultat n'est pas très beau dans les fichiers car tu as des n° à 1 chiffre qui cotoient ceux à 9, le signe négatif en plus, si j'ose dire

    Mais si vraiment tu veux utiliser ta fonction, sache que 'Nombre_aleatoire' avec les ' ' est une constante donc le code ne sera appelé qu'une fois pour tout ton jeu d'enregistrements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE ELEVES SET ELEVES.NoEleve = GenerePass('Nombre_aleatoire');"
    Pour forcer Access à te renvoyer un nombre différent, il faut que tu passes un champ de ta table en paramètre comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE ELEVES SET ELEVES.NoEleve = GenerePass([NoEleve]);"

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/11/2009, 18h56
  2. [AC-2003] Message d'erreur sur une requête mise à jour
    Par souketou dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/06/2009, 10h33
  3. Aide sur une requête mise à jour
    Par nomade333 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 07/05/2008, 14h44
  4. Exécuter une requête mise à jour à l'ouverture
    Par picatchou dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/09/2006, 14h53
  5. Réponses: 4
    Dernier message: 01/12/2005, 15h36

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