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 :

[VBA] Comment afficher le résultat d'une requête SQL dans une msgbox ?


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut [VBA] Comment afficher le résultat d'une requête SQL dans une msgbox ?
    Bonjour,

    J'aimerais voir dans une MsgBox si ma requête SQL renvoie qqch, il faut que j'utilise quoi ?

    Merci

  2. #2
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Points : 122
    Points
    122
    Par défaut
    Si c'est juste pour savoir si elle renvoie quelque chose, tu peux par exemple écrire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dim db as DAO.Database
    dim rs as DAO.Recordset
    dim sql as String
     
    set db = CurrentDb
    sql = "SELECT * FROM ..."
    set rs = db.OpenRecordset(sql)
     
    MsgBox "Ma requête comporte " & rs.RecordCount & " enregistrement(s)"
    Ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    dim db as DAO.Database
    dim rs as DAO.Recordset
    dim sql as String
     
    set db = CurrentDb
    sql = "SELECT * FROM ..."
    set rs = db.OpenRecordset(sql)
     
    while not rs.EOF
       ' Traitement à faire sur chaque enregistrement
       rs.MoveNext
    wend

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    Lol t'as devancé mes pensées j'étais justement sur les recordset et je trouvais pas l'opérateur qu'il me fallait (RecordCount)

    Nickel merci

  4. #4
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Points : 122
    Points
    122
    Par défaut
    Pense au bouton résolu en bas de la page.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    2 questions :

    - ta 2e méthode permet de lire les enregistrements 1 par 1 ?

    - j'ai déjà défini le recordset dans une "Public Sub" et pour tant VB Editor n'a pas l'air de le reconnaitre pourtant vu que j'ai mi "public" ça devrait non ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    lol tkt pas mais avec l'infrmatique j'attend d'être bien sûr pour clicquer sur "résolu"

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par dalmasma
    - j'ai déjà défini le recordset dans une "Public Sub" et pour tant VB Editor n'a pas l'air de le reconnaitre pourtant vu que j'ai mi "public" ça devrait non ?
    Heu

    Le fait de déclarer ton recordset dans une public Sub ne donnera rien, il faut que tu le déclare en Public dans l'Entête d'un module de la maniére suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public rst as DAO.Recordset
    Car je suis sûr que tu as écrit Dim à la place de Public dans ta sub, n'est-ce-pas ? et que ton code qui suit est dans une autre partie de ton appli.

    Starec

  8. #8
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 230
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par dalmasma
    - j'ai déjà défini le recordset dans une "Public Sub" et pour tant VB Editor n'a pas l'air de le reconnaitre pourtant vu que j'ai mi "public" ça devrait non ?
    Si tu veux dire que tu as déclaré et affecté le recordset dans une procédure, alors ce ne marchera pas. Il faut que tu déclare ton recordset à l'extérieur de toute fonction ou procédure, en haut de ta page.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option Compare Database
    Option Explicit
     
    Dim g_rs DAO.Recordset
    Maintenant, le recordset g_rs est accessible dans toutes les procédures de la page. Tu peux le définir et l'utiliser là où tu veux.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    C'est tout à fait ça (erreur classique apparemment )

    J'ai tapé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox rsPFT.RecordCount
    et le débugger se lance et affiche : erreur 424 : Objet Requis

    Il faut peut-être que je passe en public tout ce qui sert à définir mon recordset (en particulier la requete) non?

    Merci

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

    Met nous le code, avec les déclarations comprises.

    Starec

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    Re,

    voici le moment du code :s :
    (il n'y a pas de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Compare Database
    Option Explicit
    )

    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
    36
    37
    38
    39
    Public Sub Update_All_Same_Proj_Fam_Type()
    Dim IDETemp As Integer
    Dim SQL As String
    Dim SQLallUpd As String
    Public rsPFT As DAO.Recordset
    Dim db As DAO.Database
    Set db = CurrentDb
     
    SQL = " SELECT  [Equipments].[IDEquipment] FROM Equipments"
    SQL = SQL & " WHERE [Equipments].[IDFamily] IN (SELECT [Equipments].[IDFamily] FROM Equipments "
    SQL = SQL & " WHERE [Equipments]![IDEquipment] = "
    SQL = SQL & cmb_IDEq & ") And [Equipments].[IDType] IN (SELECT [Equipments].[IDType] FROM Equipments "
    SQL = SQL & " WHERE [Equipments]![IDEquipment] = "
    SQL = SQL & cmb_IDEq & ") And [Equipments]![IDEquipment] <> "
    SQL = SQL & cmb_IDEq & ";"
     
     
    SQLallUpd = "INSERT INTO EquipmentCharacteristics ( IDCharacteristic , IDEquipment ,CharacValue ) VALUES(0,0,0)"
     
    Set rsPFT = db.OpenRecordset(SQL, dbOpenDynaset)
     
    'If rsPFT.RecordCount = 0 Then
     '           MsgBox "No similar equipment"
    'Else
     ' DoCmd.RunSQL SQLallUpd
    'End If
     
     
     
    'Dim IDETemp As Integer
    'Dim SQL As String
    'FOR EACH IDETemp IN ListIDE (SELECT [Equipments].[IDEquipment] FROM Equipments WHERE [Equipments].[IDFamily] IN (SELECT [Equipments].[IDFamily] FROM Equipments WHERE [Equipments].[IDEquipment] = "
    'SQL = SQL & cmb_IDEq & " AND [Equipments].[IDType] IN (SELECT [Equipments].[IDType] FROM Equipments WHERE [Equipments].[IDEquipment] = "
    'SQL = SQL & cmb_IDEq & ";"
     
    'SQL = "INSERT INTO EquipmentCharacteristics ( IDCharacteristic , IDEquipment , CharacValue ) "
    'SQL = SQL & "VALUES (" & cmb_IDcharacteristic & ", NULL," & txt_value & " )"
    DoCmd.RunSQL SQL
    End Sub
    et ça c'est la MsgBox qui doit apparaitre une fois que j'ai sélectionné l'équipement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub cmb_IDEq_Change()
    AllKindDisp ' ça ça affiche juste une requete dans une liste
    Me.chk_allKind.Enabled = True ' ça on s'en fout aussi
    MsgBox rsPFT.RecordCount ' c'est là :D
    End Sub
    Voilà Merci

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    C'est quoi les déclarations ?

  13. #13
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par dalmasma
    C'est quoi les déclarations ?
    Bonjour dalmasma,

    Voila une bonne quinzaine de jour que tu es sur ce forum.
    Tu postes près de 10 messages par jour.

    Ne crois-tu pas qu'il serait temps, au vu de la question basique que tu poses ci-dessus, de te mettre à étudier le langage que tu utilises?

    Il y a, sur le site developpez.com, des tas de tutoriels et FAQs que tu pourrais consulter.
    Je te conseille vivement de faire un tour dans tout ce qui est VBA et même VB(6) car les bases du langage sont identiques.

    On ne peut pas, en permanence, te servir d'aide en ligne ni même de professeurs particuliers.

    Commence par étudier avant de chercher à programmer, sinon tu vas poster à chaque question que tu te poses (ce que je pense que tu fais).
    Le problème, c'est que tu risques de lasser ceux qui te répondent et ils pourraient ne plus être là le jour où tu seras devant des difficultés plus importantes que celles que tu rencontres maintenant.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    Mais ça je sais le faire maintenant ça date du 17 ce sujet !!

    Et j'ai pas le temps d'étudier, je suis en stage on m'a dit de reprendre le travail de quelqu'un alors qu'en arrivant je connaissais ni Access ni VBA mais mon stage fini demain tu n'auras pas longtemps à me supporter.
    Et encore j'ai étudié le java cette année alors je pige le VBA mais il y a des nuances de syntaxe et des manières de faire que je n'ai pas. Mais je n'ai pas le choix on m'a forcé à faire ça pendant 5 semaines alors désolé mais avec le nombre de choses qu'on me demande de faire j'ai pas le temps d'étudier trop longuement, j'ai déjà mi une semaine à me familiariser avec Access alors bon...

    Et le vocabulaire je ne l'ai pas: procédure, déclarations etc... c'est nouveau.

    Si tu me parles d'objets, de variable d'instances, de méthodes de sous-classes héritées je comprends. Mais là je sais peut-être ce que c'est mais je ne connais pas le nom c'est tout...

    J'ai quand même répondu à certains post ne me concernant pas pour en aider d'autres, et mes questions peuvent aider d'autres gens (surtout les invités non membres)

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/05/2015, 10h19
  2. Réponses: 1
    Dernier message: 12/12/2011, 10h07
  3. erreur dans une requête sql dans une fonction php
    Par frboyer dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2009, 13h37
  4. Réponses: 5
    Dernier message: 26/02/2008, 12h45

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