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 :

compter le nombre d'enregistrements selectionner dans une requete sql


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut compter le nombre d'enregistrements selectionner dans une requete sql
    Bonjour,
    tous est dans l'intitulé
    je vous donne mon code qui ne fonctionne pas éhé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim rst As DAO.Recordset
        Dim db As DAO.Database
        Dim num As Integer    
    Set db = CurrentDb()
        ChaineSQL = "SELECT Argon.time, Argon.value FROM Argon WHERE (((Argon.time) Between [Formulaires]![IHM]![DebutAR] And [Formulaires]![IHM]![FinAR]))ORDER BY Argon.time;"
        Set rst = db.OpenRecordset(ChaineSQL)
                num = rst.RecordCount
    deuxième solution qui ne marche pas non plus ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    num = DCount("[time]", "Argon", "SELECT Argon.time, Argon.value FROM Argon WHERE (((Argon.time) Between [Formulaires]![IHM]![DebutAR] And [Formulaires]![IHM]![FinAR]));")
    Merci de vos réponses

  2. #2
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Salut,

    Essaies ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ChaineSQL = "SELECT Count Argon.time AS CompteDeTime FROM Argon WHERE (((Argon.time) Between [Formulaires]![IHM]![DebutAR] And [Formulaires]![IHM]![FinAR]));"
                num = rst!CompteDeTime
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    alors j'ai adapté ta solution à la tienne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim ChaineSQL As String
        Dim rst As DAO.Recordset
        Dim db As DAO.Database
        Dim num As Integer
        
        Set db = CurrentDb()
        
         ChaineSQL = "SELECT Count(Argon.time) AS CompteDetime FROM Argon WHERE (((Argon.time) Between [Formulaires]![IHM]![DebutAR] And [Formulaires]![IHM]![FinAR]));"
     ==>          Set rst = db.OpenRecordset(ChaineSQL, dbOpenDynaset)
                num = rst!CompteDetime
    mais à la flèche rouge une erreur (trop peu de paramètres : attendu 2) :S
    Merci de ton aide

  4. #4
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Supprimes le dbOpenDynaset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim ChaineSQL As String
        Dim rst As DAO.Recordset
        Dim db As DAO.Database
        Dim num As Integer
     
        Set db = CurrentDb()
     
         ChaineSQL = "SELECT Count(Argon.time) AS CompteDetime FROM Argon WHERE (((Argon.time) Between [Formulaires]![IHM]![DebutAR] And [Formulaires]![IHM]![FinAR]));"
     ==>          Set rst = db.OpenRecordset(ChaineSQL)
                num = rst!CompteDetime
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    Malheureusement cela ne focntionne toujours pas pourtant cela paraît simple ...
    Merci de ton aide

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    salut,
    peux tu nous expliciter le ca ne fonctionne pas stp ?
    tu as une erreur relevee ? le resultat n'est pas celui attendu ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Dans le menu Outils/Références , la référence à Microsoft DAO est bien cochée?
    Et de plus elle est bien juste après visual basic et Microsoft access library ?
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    l'erreur arrive sur la flèche rouge encore une fois en utilisant le debogueur à point d'arrêt.
    (trop peu d'arguments 2 attendu)...
    oui j'ai coché microsoft DAO 3.6 object library et oui elle est juste après
    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
    Private Sub VisuAR_Click()
    On Error GoTo Err_VisuAR_Click
     
        Dim stDocName As String
        Dim ChaineSQL As String
        Dim rst As DAO.Recordset
        Dim db As DAO.Database
        Dim num As Integer
     
        Set db = CurrentDb()
     
         ChaineSQL = "SELECT Count(Argon.time) AS CompteDetime FROM Argon WHERE (((Argon.time) Between [Formulaires]![IHM]![DebutAR] And [Formulaires]![IHM]![FinAR]));"
               Set rst = db.OpenRecordset(ChaineSQL)
                num = rst!CompteDetime
                MsgBox num
    Exit_VisuAR_Click:
        Exit Sub
     
    Err_VisuAR_Click:
        MsgBox Err.Description
        Resume Exit_VisuAR_Click
     
    End Sub

  9. #9
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    ok,
    deja lorsqu'on utilise les syntaxes sous VBA, les Formulaires deviennent FOrms
    essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChaineSQL="SELECT Count(Argon.time) AS CompteDetime FROM Argon WHERE (((Argon.time) Between [Forms]![IHM]![DebutAR] And [Forms]![IHM]![FinAR]));"
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    merci mais toujours la même erreur je cherche je cherche mais sans résultats ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Dim stDocName As String
        Dim ChaineSQL As String
        Dim rst As DAO.Recordset
        Dim db As DAO.Database
        Dim num As Integer
     
        Set db = CurrentDb()
     
     
         ChaineSQL = "SELECT Count(Argon.time) AS CompteDetime FROM Argon WHERE (((Argon.time) Between [Forms]![IHM]![DebutAR] And [Forms]![IHM]![FinAR]));"
               Set rst = db.OpenRecordset(ChaineSQL)
                num = rst!CompteDetime
                MsgBox num

  11. #11
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    je viens de tester cette syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    critere = "Time between #" & [Forms]![IHM]![DebutAR] & "# And  #" & [Forms]![IHM]![FinAR] & "#"
    num = DCount("time", "Argon", critere)
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  12. #12
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    ok, on sort les deux bornes de la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChaineSQL = "SELECT Count(Argon.time) AS CompteDetime FROM Argon WHERE (((Argon.time) Between " & Forms![IHM]![DebutAR] & " And " & Forms![IHM]![FinAR] & "));"
    et dis nous le contenu de la chaine avant de l'executer stp
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  13. #13
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    la chaîne est 02/02/2010 9:17:57 et 02/02/2010 9:19:01
    et encore une fois une erreur (erreur de syntaxe (opérateur absent) dans l'expression((Argon.time) Between 02/02/2010 9:17:57 And 02/02/2010 9:19:01)

    merci de votre aide

  14. #14
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    As tu essayé la syntaxe avec le Dcount?

    Autrement pour l'autre version, je pense qu'il manque des #
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChaineSQL = "SELECT Count(Argon.time) AS CompteDetime FROM Argon WHERE (((Argon.time) Between #" & Forms![IHM]![DebutAR] & "# And #" & Forms![IHM]![FinAR] & "#));"
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  15. #15
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    bon ben on y arrive, tu fais un encadrement sur un champs date !

    les valeurs pour ces champs sont encadrees par des #

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ChaineSQL = "SELECT Count(Argon.time) AS CompteDetime FROM Argon WHERE (((Argon.time) Between #" & Forms![IHM]![DebutAR] & "# And #" & Forms![IHM]![FinAR] & "#));"
    reste maintenant a s'assurer que le format est bien du type MM/dd/yyyy hh:mm:ss
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  16. #16
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    oui la syntaxe avec Dcount affiche 0 pour num !
    et l'autre syntaxe affiche 0 pour num!
    c'est un début ça affiche une valeur ...

    EDIT: oui le format dans la table argon est au format date ...

  17. #17
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Tu as des valeurs dans la plage saisie dans ton formulaire.... ?
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  18. #18
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    oui une plage est selectionnée ...
    Fichiers attachés Fichiers attachés

  19. #19
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Je viens de tester ta base, ça marche si tu prends comme 1ere valeur 01/02/2010 et comme seconde 02/02/2010.
    donc apparemment le problème est que ça ne prend pas en compte les heures minutes secondes....

    à approfondir.....
    Ils ne savaient pas que c'était impossible, alors il le réalisèrent (Mark Twain)

  20. #20
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 27
    Points : 12
    Points
    12
    Par défaut
    incroyable, j'aurais penser à tous mais pas à essayer ce test...
    merci beaucoup
    maintenant j'ai plus qu'à résoudre ce probléme d'heure et de minute ...
    peut être en concaténant la date et l'heure et en gardant que la date ?!

Discussions similaires

  1. Réponses: 10
    Dernier message: 20/09/2019, 22h36
  2. Nombre d'enregistrements maximum dans une table sql server
    Par maxime_01 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/05/2009, 16h49
  3. [MySQL] compter le nombre d'un mot dans une table sql
    Par Akramweb dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 18/04/2008, 16h20
  4. nombre d'enregistrements limite dans une table sql
    Par lilou229 dans le forum Outils
    Réponses: 3
    Dernier message: 30/01/2007, 15h21
  5. Compter le nombre d'enregistrement supprimer dans une jsp
    Par DarkWark dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/05/2006, 11h36

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