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écupération des données issues d'une requête


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 69
    Points : 35
    Points
    35
    Par défaut Récupération des données issues d'une requête
    Bonjour à tous

    Je souhaite récupérer les valeurs du résultat d'une requête R2 qui est elle même basée sur une requête R1
    Si j'utilise la fonction Dlookup je récupére la valeur du champ C1 (170101) du premier enregistrement, pas de probléme !
    par contre je n'arrive pas à récupérer la valeur du même champ C1 pour le deuxiéme (180500), le troisiéme (185200) etc... enregistrement

    Exemple de résultat :

    champC1
    170101
    180500
    185200

    Je souhaite récupérer individuellement les valeurs 170101, 180500 et 185200

    Je n'ai pas trouvé dans les forums ou tutos ( requêtes, DAO, ADO etc...) d'infos pouvant résoudre mon probléme

    Merci par avance pour toute idée pouvant m'aider

    Cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Utilises un recordset.
    Tu trouveras des exemples entre autre dans ce tuto :
    http://jdgayot.developpez.com/tutori...ultats-labels/

    En voici le principe:
    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
    32
    33
    34
    35
     
    Private Sub RecupEnregistrements()
        Dim oDb As DAO.Database
        Dim oRst As DAO.Recordset
        Dim StrSql As String
     
    On Error GoTo Erreur
     
        StrSql = " select R2.ChampC1 from R2 "
     
        Set oDb = CurrentDb
        Set oRst = oDb.OpenRecordset(StrSql, dbOpenSnapshot)
     
        If oRst.EOF Then
            MsgBox "Pas d'enregistrements"
            GoTo fin:
        End If
     
        While Not oRst.EOF  'boucle sur tous les enregistrements
            MsgBox "Résultat: " & Nz(oRst.Fields(0))  
            ' code à effectuer
            oRst.MoveNext
        Wend
     
     
    Fin:  'ferme les connexions
        If Not oRst Is Nothing Then oRst.Close
        If Not oDb Is Nothing Then oDb.Close
        Set oDb = Nothing
        Set oRst = Nothing
    Exit Sub
     
    Erreur:
        MsgBox "Erreur " & Err.Number & "  " & Err.Description
        Resume Fin
    Dernière modification par Invité ; 25/04/2014 à 07h30.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 69
    Points : 35
    Points
    35
    Par défaut
    Bonjour

    Merci pour l'aide

    J'avais essayé ce type de code auparavant mais j'ai toujours eu un message d'erreur 3061 "Trop peu de paramétres.3 attendu"
    j'ai essayé ton code mais j'ai le même message d'erreur.

    Est ce que cela vient du fait que ma requête R2 est issue d'une autre requête R1 dont la sélection se fait à partir de 3 valeurs données par le formulaire ?

    extrait du code :

    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
    'Paramétres de sélection de la requête "RConsoModele"
        Me.DDebut = VarDateDebut
        Me.DFin = VarDateFin
        Me.Equipement = VarEquipement
        
        'Recherche des modéles sur une période, ouverture de la requête "RConsoModele"
        DoCmd.OpenQuery "RConsoModele"
        
        'Recherche du nombre de modéles identiques sur une période, ouverture de la requête "RRConsoModele"
        'Requête regroupement basée sur la requête "RConsoModele"
        DoCmd.OpenQuery "RRConsoModele"
        
        Enreg = DCount("[Article]", "RRConsoModele")
        
        If Enreg > 0 Then
        
            Set LaTableModele = CurrentDb
            Set RstModele = LaTableModele.OpenRecordset("RRConsoModele", dbOpenSnapshot)  'message d'erreur sur cette ligne    
            While Not RstModele.EOF
                Me.Modele = Nz(RstModele.Fields(0), "")
                MsgBox Me.Modele
                RstModele.MoveNext
            Wend
        
            RstModele.Close
            LaTableModele.Close
        
            Set LaTableModele = Nothing
            Set RstModele = Nothing
        
        End If
    Merci pour tes conseils

    Cordialement

  4. #4
    Membre expérimenté Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 903
    Points : 1 364
    Points
    1 364
    Par défaut
    Bonjour,
    Remplaces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set RstModele = LaTableModele.OpenRecordset("RRConsoModele", dbOpenSnapshot) 'message d'erreur sur cette ligne
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set RstModele = LaTableModele.OpenRecordset("SELECT * FROM RRConsoModele", dbOpenDynaset) 'message d'erreur sur cette ligne
    Cordialement,
    Le sabre est une arme. Le kendo est un art de tuer. Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 69
    Points : 35
    Points
    35
    Par défaut
    Bonjour

    J'ai essayé mais j'ai toujours le même message d'erreur 3061

    J'ai modifié la requête de base "RConsoModele" en enlevant les deux critéres de date (entre DDebut et DFin) et ne laissant qu'un critére
    j'ai toujours le message d'erreur 3061 mais au lieu d'avoir "trop peu de paramétres 3 attendu" j'ai "trop peu de paramétres 1 attendu"
    donc cela confirme ce que je pensais.
    Arrivé à la ligne "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set RstModele = LaTableModele.OpenRecordset("RRConsoModele", dbOpenSnapshot)
    " le systéme attend les 3 critéres de sélection alors que la requête est bien ouverte.

    J'ai supprimé le "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenQuery "RConsoModele
    " et j'ai écrit l'équivalent en Sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    StrSQL = "SELECT TConsoGaz.DateSaisie, TConsoGaz.Equipement, TConsoGaz.ConsoMJj, TConsoGaz.Article FROM TConsoGaz WHERE (((TConsoGaz.Equipement)= '" & Me.Equipement & "'));"
     
     DoCmd.RunSQL (StrSQL)
    et là j'ai un message d'erreur 2342 "une action ExecuterSQL nécessite un argument consistant en une instruction SQL"


    Ce Sql est allégé car j'ai enlevé :
    les deux dates qui va falloir mettre en format US
    et ce critére : AND ((TConsoGaz.Article)<>"isempty") car il met la ligne en défaut "attente instruction"


    On va y arriver !!

    En tout cas merci pour ton aide

    Cordialement

  6. #6
    Invité
    Invité(e)
    Par défaut
    J'ai l'impression que tu te mélanges les pinceaux;
    Le ne sert à rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set RstModele = LaTableModele.OpenRecordset("SELECT TConsoGaz.DateSaisie, TConsoGaz.Equipement, TConsoGaz.ConsoMJj, TConsoGaz.Article FROM TConsoGaz WHERE (TConsoGaz.Equipement)= '" & Me.Equipement & "';", dbOpenSnapshot)
    Par contre à quoi correspond le Me.Equipement?
    Dernière modification par Invité ; 25/04/2014 à 17h58.

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Voici un exemple :
    La table s’appelle LaTable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Compare Database
    Option Explicit
     
     
    Public Sub Recup()
      Dim rst As Recordset
      Set rst = CurrentDb.OpenRecordset("LaTable")
      Do Until rst.EOF
        Debug.Print rst("champC1")
        rst.MoveNext
      Loop
      rst.Close
      Set rst = Nothing
    End Sub
    Pour tester, tu ouvres la fenêtre d’exécution (<CTRL+G> et tu saisis ceci :



    N.B. Tu dois ajouter Microsoft DAO x.x.Object Library

    L’exemple est ici http://claudeleloup.developpez.com/F...eAlaMenthe.mdb


    P.-S. Ce qui s'appelle "LaTable" dans mon exemple correspond à "requête R2" chez toi.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 69
    Points : 35
    Points
    35
    Par défaut
    Bonjour

    Effectivement en cherchant dans les forums j'ai appris le Docmd.RunSql ne sert à rien, j'ai fait un set RstModele mais j'ai eu le même message d'erreur 3061.
    J'ai trouvé une autre solution (peut être moins élégante) qui consiste à mettre le résultat de la requête dans une liste non visible et je prends la valeur du premier champ de chaque ligne, cela fonctionne correctement.

    Par contre cette solution ne me permet pas de distinguer les différentes périodes de fabrication pour un même modéle. Le résultat de la requête me donne le nombre total de jours de fabrication (par exemple 21 jours et non pas 10 jours puis 11 jours ).

    Chaque chose en son temps !

    Le Me.Equipement correspond au nom de la machine de fabrication

    Je vais essayer le code de Claude

    Merci à tous pour votre aide

    Cordialement

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 69
    Points : 35
    Points
    35
    Par défaut
    Bonjour

    J'ai essayé le code mais j'ai toujours l'erreur 3061

    En mettant les résultats de la requête dans une liste, rendue invisible dans le formulaire, cela fonctionne
    Pour ceux que cela intéresse je récupére le résultat de la requête en faisant :

    Me.Resultat = Me.Liste.Column(0, I)

    0 = N° de colonne
    I = N° de ligne

    Merci à tous pour votre aide

    Cordialement

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/03/2015, 16h51
  2. [PHP 5.3] Récupérer des données issues d'une requête http GET
    Par Pierrea4564 dans le forum Langage
    Réponses: 2
    Dernier message: 24/09/2013, 08h15
  3. Récupération des données retournées par une requête
    Par fou-jea dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 06/09/2012, 16h28
  4. [FPDF] Mettre des données issues d'une requête dans l'entête
    Par zoom61 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 30/03/2007, 10h10
  5. [MySQL] Remplir un array() avec des données issues d'une bdd
    Par fichtre! dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/12/2006, 17h03

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