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

Access Discussion :

Requête sql sur requête sql en vba [AC-2003]


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Requête sql sur requête sql en vba
    Bonjour à tous,

    Afin d'intégrer des calculs dans une table de ma base de données, j'ai besoin de manipuler en VBA le resultat d'une requête paramétrée. J'aimerais pouvoir combiner cette requête avec une autre et la parcourir façon "Recordset".

    J'ai une table où se trouve ma population : "Personnes".
    J'ai un paramètre : "psIdentifiantContrat". (auquel j'ai attribué dans ce bout de code un numéro arbitraire).

    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
    Dim db As Database
    Dim mirs1 As Recordset
    Dim mirs2 As Recordset
    Dim sql1 As String
    Dim sql2 As String
     
    Set db = CurrentDb
     
    psIdentifiantContrat = "100000P0990000"
     
    sql1 = "SELECT Personnes.[Identifiant contrat] " _
    & "FROM Personnes GROUP BY Personnes.[Identifiant contrat] HAVING (Personnes.[Identifiant contrat]=""" & psIdentifiantContrat & """);"
     
    Set mirs1 = db.OpenRecordset(sql1, dbOpenDynaset)
     
    sql2 = "SELECT mirs1.[Identifiant contrat], Personnes.Nom, Personnes.Prénom" _
    & " FROM mirs1 INNER JOIN Personnes ON mirs1.[Identifiant contrat] = Personnes.[Identifiant contrat]" _
    & " GROUP BY mirs1.[Identifiant contrat], Personnes.Nom, Personnes.Prénom;"
     
    Set mirs2 = db.OpenRecordset(sql2, dbOpenDynaset)
    La première requête passe bien mais pas la deuxième. Je reçois un message d'erreur '3078' comme quoi ma requête "mirs1" n'est pas définie...

    Si vous voyez où ça cloche ou s'il y a un moyen plus élégant, faites moi signe!

    Merci et bonne journée.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 349
    Points : 23 813
    Points
    23 813
    Par défaut
    Enregistre ta requête paramétrée (mirs1) dans la base en mettant comme critère [psIdentifiantContrat].

    Enregistre ta seconde requête dans la base.

    Puis ouvre ta seconde requête (mirs2) en lui passant le paramêtre.

    Ton code devrait être proche de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dim db as dao.database:set db=currentdb
    dim q as dao.querydef
    set q=db.querydefs("mirs2")
    q.parameters("psIdentifiantContrat")=psIdentifiantContrat
    Set mirs2 = q.OpenRecordset()
    .
    .
    .
    set q=nothing
    db.close:set db=nothing
    cela devrait marcher.

    Il seputr que tu sois obliger de déclarer tes paramêtres dans les deux requêtes (en design de requête, menu requêt, paramètres).

    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Un grand merci.

    Une chaude larme (de joie) s'est écoulée le long de ma joue au moment où tout a fonctionné. Ca débloque une situation dont je n'arrivais pas à me défaire depuis longtemps.

    Le déclic fut la commande "Paramètres" que tu m'as donné dans le mode création de la requête, j'ignorais son existence jusqu'à lors...

    Vraiment merci.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 349
    Points : 23 813
    Points
    23 813
    Par défaut
    J'ai moi-même découvert les paramêtres et leurs usages sur le tard :o). Cela ne fait pas parti des éléments qu'on voit courrament dans Access.

    A+

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

Discussions similaires

  1. [SQL 2008] Requête : Cumul sur 12 mois glissants
    Par mad_martigan dans le forum Développement
    Réponses: 4
    Dernier message: 23/12/2010, 17h35
  2. Requête d'ajout en sql sur access
    Par Malley dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/11/2009, 12h30
  3. Transaction sur Requêtes Entities et Requêtes SQL pures
    Par Arnard dans le forum Accès aux données
    Réponses: 1
    Dernier message: 20/04/2009, 13h38
  4. Requête paramètrer sur table SQL Server 2000
    Par Andry dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/06/2007, 11h24
  5. Pb Requête Corrélées sur MS SQL-SERVER2000
    Par Pongo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/09/2005, 16h08

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