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 :

Résultat d'un champ d'une requête dans une variable


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 32
    Points : 28
    Points
    28
    Par défaut Résultat d'un champ d'une requête dans une variable
    Bonsoir !

    Alors j'ai un nouveau petit problème. Je pense savoir quelle en est la cause mais je ne sais pas le solutionner...
    - J'ai une table "Membre" qui contient des mails et mots de passe, entre autres.
    - J'ai un formulaire d'identification où l'utilisateur tape son mail et son mot de passe.
    - Lorsque l'utilisateur clique sur le bouton "S'identifier", une macro exécute une requête qui renvoie l'enregistrement correspondant aux mail et mot de passe saisi dans le formulaire.
    - Grâce à mes nouvelles connaissances en Access (), je compte (avec la fonction CpteDom) le nombre d'enregistrements renvoyés par la requête
    - Si le nombre est égal à zéro, l'utilisateur a saisi un mauvais mail ou mot de passe, et là j'affiche une boîte d'erreur
    - Sinon, et c'est là que ça bloque, je souhaiterais récupérer le Num Membre renvoyé par la requête d'au dessus pour le mettre dans une variable temporaire (dans ma macro avec DéfinirVarTemp) : je fais tout bêtement un :
    DéfinirVarTemp :
    - Nom : NumMembreConnecté
    - Expression : [MembreExiste]![Num Membre] (MembreExiste est ma requête)

    Et là j'obtiens une erreur : "L'objet ne contient pas d'objet Automation "MembreExiste""

    Je pense que ça vient du fait que ma requête pourrait renvoyer plusieurs enregistrement (vu que ni le mail ni le mot de passe ne sont clé primaire) et que du coup Access ne sait pas "affecter" la variable...

    Est-ce que vous avez une solution à ce problème ? Peut-être une méthode plus propre ? Je précise que je voudrais, si possible, me passer de code VBA !

    Merci à vous !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je te propose une autre approche plus simple.

    Il faudrait utiliser la fonction de domaine DLookup (toutes les explications sont là : Les fonctions de domaine dans Access.

    Cette fonction te renvoie la valeur nulle si elle ne trouve pas de correspondance, sinon elle te renvoie une valeur (celle que tu souhaites en premier paramètre).

    Ensuite tu peux stocker dans ta variable.

    Je te propose que tu testes cela, et que si tu as des soucis tu reviennes avec le code que tu as fait pour que les membres du forum puissent t'aider à le déboguer.

    Il y a d'autres solutions, mais personnellement je passe toujours par DLookup pour ce genre de cas, car bien que cette instructions soit plus lentes sur de grosses tables, cela est insignifiant pour des tables de Login et de Mots de passes, qui ne sont en général pas énormes.

    Il y a également un exemple dans la FAQ Access qui passe par une autre type de procédure qui est DAO : Formulaire Login/mot de passe

    Philippe

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    Merci beaucoup, ça fonctionne !
    Je mets le code si ça peut aider quelqu'un :
    J'ai donc :
    - Une table Membre (#Num Membre, Mail, Mot de passe, ...)
    - Un formulaire Menu avec un champ Mail, un champ MotDePasse et un bouton
    - Un macro associée au bouton qui fait :

    Condition : RechDom("[Num Membre]";"Membre";"Mail = Formulaires!Menu!Mail AND [Mot de passe] = Formulaires!Menu!MotDePasse") Est Null
    - Si condition vraie : Boîte de dialogue avec erreur (mauvais mail ou mot de passe)
    - Sinon DéfinirVarTemp = RechDom("[Num Membre]";"Membre";"Mail = Formulaires!Menu!Mail AND [Mot de passe] = Formulaires!Menu!MotDePasse")


    A noter que j'ai essayé de mettre directement l'expression RechDom dans la VarTemp et tester ensuite si la variable est Null mais dans ce cas, ma macro plante lorsque RechDom renvoie Null...

    Voilà, merci beaucoup pour cette réponse rapide !

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

Discussions similaires

  1. Ajouter une colonne dans une table via une requête
    Par Alien_psy dans le forum Requêtes et SQL.
    Réponses: 25
    Dernier message: 23/02/2013, 05h24
  2. Réutiliser des données d'une requête dans une requête
    Par mims1664 dans le forum Requêtes
    Réponses: 12
    Dernier message: 06/02/2009, 14h12
  3. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  4. Réponses: 2
    Dernier message: 02/06/2006, 11h26
  5. Réponses: 4
    Dernier message: 01/12/2005, 14h36

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