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 :

Effectuer une opération sur le résultat d'une requête


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Points : 79
    Points
    79
    Par défaut Effectuer une opération sur le résultat d'une requête
    Bonjour,

    Est-il possible d'effectuer une opération sur le résultat d'une requête ?
    Dans un formulaire j'utilise "DoCmd.OpenQuery" pour comparer les informations de deux tables avec une structure et champs identiques. J'aimerais pouvoir exécuter une opération A s'il a un résultat positif et sinon une opération B. J'utilise un IF...Else... End If pour ce travail. Mon problème est que je ne sais pas comme extraire un résultat quelconque de ma requête avec lequel pourrait baser le choix du If. Les seuls résultats possibles de ma requête est un résultat (match) ou Null (unmatch).

    Merci

    egg3774

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Quand j'ai un cas comme cela voilà ce que je fais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    dim db as dao.database:set db=currentdb
    dim r as dao.recordset:set db.openrecordset("NomDeTaRequete")
    dim estTrouve as boolean
     
    if r.recordcount=0 then
         estTrouve=false
      else
         estTrouve=true
    end if
     
    r.close:set r=nothing
    db.close:set db=nothing
     
    if estTrouve then
        'Faire ce qu'il faut
      else
        'Faire autre chose
    end if

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Quand j'ai un cas comme cela voilà ce que je fais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    dim db as dao.database:set db=currentdb
    dim r as dao.recordset:set db.openrecordset("NomDeTaRequete")
    dim estTrouve as boolean
     
    if r.recordcount=0 then
         estTrouve=false
      else
         estTrouve=true
    end if
     
    r.close:set r=nothing
    db.close:set db=nothing
     
    if estTrouve then
        'Faire ce qu'il faut
      else
        'Faire autre chose
    end if
    Un gros merci.

    Mais je reçois un message de "Compile error: Expected:=" au niveau de la deuxième ligne "dim r as dao.recordset:set db.openrecordset(qry_user)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Points : 79
    Points
    79
    Par défaut
    je crois que j'ai trouver la source de l'erreur. Il manquait ceci:

    Avant:
    dim r as dao.recordset:set db.openrecordset("NomDeTaRequete")

    Après:
    dim r as dao.recordset:set r = db.openrecordset("NomDeTaRequete")

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Merci à egg3774 pour la correction.

    A+

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Points : 79
    Points
    79
    Par défaut
    Wow ... merci à marot_r ton le code. Ca fonctionne à merveille !

    egg3774

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 167
    Points : 79
    Points
    79
    Par défaut
    Voici le code que j'ai un peu adapté à mes besoins. Le code fonctionne pas tous à fait comme je le voudrais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub OK_Click()
    On Error GoTo Err_OK_Click
     
    Dim estTrouve As Boolean
    Dim db As DAO.Database
    Dim r As DAO.Recordset
    Set db = CurrentDb
    Set r = db.OpenRecordset("qry_user") 'Ceci est une requête
     
    If r.RecordCount <> 0 Then
             estTrouve = True    
      Else
             estTrouve = False    
    End If
     
    r.Close: Set r = Nothing
    db.Close: Set db = Nothing
     
    If estTrouve Then
            MsgBox ("Welcome / Bienvenue"), vbOKOnly
            DoCmd.Close  
      Else
            MsgBox ("Username or password not valide / Nom d'utilisateur ou mot de passe invalide"), vbOKOnly       
    End If
     
    Exit_OK_Click:
        Exit Sub
    Err_OK_Click:
        MsgBox Err.Description
        Resume Exit_OK_Click   
    End Sub
    Voici la structure de ma base de données sur laquelle j'effectue mon travail.
    2 formulaires construits à partir de 2 tables (Frm_A et tbl_B...).
    La table_A recoit les informations recueillies par le formulaire_A soit le nom de l'utilisateur et le mot de passe.
    La table_A recoit les information par le formulaire_B sur les utilisateurs autorisés à travailler sur la base de données.
    Une requête (qry_user) a été créée pour vérifier si les informations recueilli dans la table_A par le formulaire_A correspond à un utilisateur dans la table_B.
    Au départ, la table_A est vide (Cette table est nécessaire pour conserver les nom d'utilisateur et mot de passe du dernier utilisateur s'il le désir).
    Sur le formulaire_A, j'exécute le code ci-haut à l'aide d'un bouton OK. Et voila ou je rencontre un léger problème. Quand j'exécute le code (bouton OK) pour la première fois, la requête "qry_user" n'a pas encore été exécuté et le résultat n'est pas bon même si les informations entrés dans le formulaire_A est valide. Ici c'est claire que la requête ne contient aucun enregistrement puisqu'elle n'a pas encore été exécuté.

    Ma question est, comment puis-je exécuter la requête avant d'effectuer les tests des If..Else..End If ?

    merci,

    egg3774

Discussions similaires

  1. [AC-2003] Résultat d'une opération dans un champ d'une table
    Par nomade333 dans le forum VBA Access
    Réponses: 1
    Dernier message: 06/02/2012, 09h16
  2. [VxiR2] Faire une requete sur les résultats d'une première requete
    Par amy0o0 dans le forum Deski
    Réponses: 2
    Dernier message: 01/02/2011, 21h39
  3. Réponses: 2
    Dernier message: 07/06/2010, 14h19
  4. Réponses: 2
    Dernier message: 14/05/2007, 08h32
  5. effectuer une opération sur chaque ligne d'un select
    Par Mindiell dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 20/12/2006, 12h23

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