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

VBA Access Discussion :

Comment affichage direct d'un recordset SQL


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 116
    Points : 52
    Points
    52
    Par défaut Comment affichage direct d'un recordset SQL
    Bonjour,

    Une question classique: comment afficher un recordset à l'état brut, directement ?

    Précisions:
    - "à l'état brut", je veux dire: comme une table
    - "directement", je veux dire: sans passer par l'intermédiaire d'une table (cfr. infra)
    - le recordset est rempli par une requête SQL qui se trouve dans le code VBA:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    MyQuery = "Select * From MyTable;"
    Set MyRecset = OpenRecordset(MyQuery)
    Et là, je veux afficher le résultat comme dans une simple table.

    Est-ce possible ? Comment faire ?


    Bien sûr, il y a un autre moyen pour afficher le résultat comme dans une simple table, MAIS il faut passer par l'intermédiaire d'une table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    '1. créer et remplir une table avec le résultat de la requête:
    MyQuery = "Select * Into MyTempTable From MyTable;"
    DoCmd.RunSQL (MyQuery)
     
    '2. afficher la table = afficher le résultat de la requête
    DoCmd.OpenTable MyTempTable, acViewNormal, acReadOnly

    Alors y a-t-il un moyen pour éviter de créer cette table qui ne sert qu'à afficher le résultat de la requête ?

    D'avance, merci.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour,

    C'est la commande openquery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenQuery Myquery
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 116
    Points : 52
    Points
    52
    Par défaut
    Le query n'est pas un query Access, c'est du SQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyQuery = "Select * From MyTable;"

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Oui c'est pareil ou alors j'ai pas compris la question
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    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 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    Alors y a-t-il un moyen pour éviter de créer cette table qui ne sert qu'à afficher le résultat de la requête ?
    RunSql est utilisable uniquement avec des requêtes action, comme tu as pu le remarquer
    OpenQuery nécessite, en effet, que la requête soit enregistrée (collection Querydefs)
    donc une solution toute simple n'existe pas sauf à passer par un sous-formulaire ou créer une table ou une requête.
    Pour la table, tu sais comment faire, pour la requête voici la méthode:
    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
    Sub CreeRequeteTempo()
        Dim strNomRequete As String, strSQL As String
     
     On Error GoTo GestErr
        strNomRequete = "rq_Affichematable"
        strSQL = "SELECT * FROM matable;"
     
        With CurrentDb
            .QueryDefs.Delete strNomRequete
            .CreateQueryDef strNomRequete, strSQL
        End With
    	' on affiche la requête et on la supprime dans la foulée 
        DoCmd.OpenQuery strNomRequete
        CurrentDb.QueryDefs.Delete strNomRequete
     
    ' Rafraichir la fenêtre base de données
    RefreshDatabaseWindow
     
    GestErr:
    If err <> 0 Then
        Select Case err
        Case 3265    ' élément non trouvé dans la collection car requête non trouvée
            Resume Next
        Case Else
            MsgBox err.Number & "-" & err.DESCRIPTION
        End Select
    End If
    End Sub
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 116
    Points : 52
    Points
    52
    Par défaut
    En résumé:

    • pour afficher le résultat d'une requête de sélection, il faut un querydef

    • c'est valable avec ou sans totaux ou autres regroupements (Group by)

    • quand la requête (de départ) est en SQL, il faut soit la mettre dans un querydef et exécuter ce querydef (voir le post de tee_grandbois), soit l'exécuter et mettre le résultat dans une table puis afficher la table

    • note: pour les requêtes crosstab (Transform ... en SQL), Access ne permet pas de querydef avec des paramètres, et donc là il faut passer par du SQL et utiliser l'une des deux techniques du point précédent

    • afficher un recordset (qui p.ex. aurait reçu le résultat de l'exécution de la requête SQL) n'est pas possible, semble-t-il


    Merci à tous pour vos contributions.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 585
    Points : 1 074
    Points
    1 074
    Par défaut
    Bonjour,

    Je viens après la bataille, mais peut-être un autre piste :

    https://arkham46.developpez.com/arti...s/msdatashape/

    ONTAYG

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/02/2006, 23h24
  2. Réponses: 5
    Dernier message: 18/11/2005, 22h11
  3. Réponses: 7
    Dernier message: 14/10/2005, 20h00
  4. Comment afficher une colonne text de SQL-server?
    Par oravelon dans le forum ASP
    Réponses: 2
    Dernier message: 18/08/2005, 09h11
  5. Comment relié un DBChart à une requête SQL
    Par bigfoot dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/12/2004, 10h20

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