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

Macros et VBA Excel Discussion :

[VBA EXCEL / ACCESS] : Resultat d'une requete


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Par défaut [VBA EXCEL / ACCESS] : Resultat d'une requete
    Bonjour,

    Voila je voudrai savoir comment recuperer le resultat d'une requête, je m'explique :

    Je veux recuperer le nombre d'enregistrement présent dans une table donc j'utilise la requete "SELECT COUNT (*) FROM ...."

    J'aimerai savoir juste comment appeler le resultat de cette requete car j'aimerai éviter de faire un MoveNext et d'ajouter "1" au compteur pour savoir combien je possède d'enregistrements.

    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 29
    Par défaut
    La fonction .RecordCount te renvoies directement le nombre d'enregistrements de ton recordset.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Dim recst as Recordset
    ...
    recst.MoveLast
    MsgBox recst.RecordCount
    recst.Close

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Par défaut
    Merci mais ca ne fonctionne pas...
    apparament il n'aime pas trop le movelast il m'affiche un msg d'erreur qui dit : "l'ensemble de ligne ne prend pas en charge les recupérations arrieres"

    j'affiche mon code pour plus de comprehesion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim Rec_Recap_Mois As New ADODB.Recordset
    Dim Rec_Compte_Ijs As New ADODB.Recordset
    Dim Requete_Recap_Mois, Requete_Compte_Ijs As String
    Dim Mois, Nb_Ijs As Integer
    Mois = InputBox("Entrez le mois en chiffre (ex : février = 02)")
    Requete_Recap_Mois = "SELECT * FROM IJS WHERE IJS.Mois_Ij=" & Mois
    Requete_Compte_Ijs = "SELECT * FROM IJS Where IJS.Mois_Ij=" & Mois
    Module1.ConnexionBdd
    Rec_Recap_Mois.Open Requete_Recap_Mois, Module1.BdAccess
    Rec_Compte_Ijs.Open Requete_Compte_Ijs, Module1.BdAccess
    Rec_Compte_Ijs.MoveLast
    Nb_Ijs = Rec_Compte_Ijs.RecordCount
    Rec_Compte_Ijs.Close

  4. #4
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 29
    Par défaut
    T'as essayé sans le movelast.
    En fait,le recordcount te renvoie directement le nombre d'enregistrements. Le il faut refaire un Movefirst avant.

    Donc Solution 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .MoveLast
    .MoveFirst 
    .RecordCount
    Solution 2 :

    .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RecordCount ' Sa devrait fonctionner directement.Sans Movelast & Movefirst

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Par défaut
    Ben en fait ce qu'il se passe sans le movelast il me renvoi la valeut -1 alors qu'il devrai me trouver 2 enregistrements...

  6. #6
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Hello!
    Je ne comprend pas...
    Si tu envoies la requête "... COUNT(*)...", ton recordset ne contient qu'une ligne: celle qui contient le nombre de ligne de ta table.
    Donc pas besoin de faire des Move.
    MonRst(0) te donne directement le nombre que tu cherches, non?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Par défaut
    Yes Ca Marche Megaxel
    Merci Beaucoup!!!

  8. #8
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Coooool !
    Et en plus, au niveau "transfert de données, gavage du réseau", c'est quand même mieux de rapatrier juste le nombre de lignes, plutôt que de ramener toute ta table et ses 874 251 lignes, puis de compter.
    Non?

  9. #9
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Par défaut
    Bonjour

    je cherche aussi la solution à ce problème

    j'utilise vba sous excel pour me connecter à Oracle.

    voici mon code (mon objet connection appartient déjà à ma classe):

    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
    'Déclaration des variables
    Dim cmd As ADODB.Command
    Dim rst As ADODB.Recordset
     
    'Instanciation des variables
    Set cmd = New ADODB.Command
    Set rst = New ADODB.Recordset
     
    'Préparation de l'objet Command
    cmd.CommandText = "SELECT * FROM MA_TABLE"
    cmd.ActiveConnection = mobjCon 'attribut de classe
     
    'Exécution de la requête
    Set rst = cmd.Execute
     
    rst.MoveLast 'renvoi l'erreur "L'ensemble des lignes ne prend pas en charge les récupérations arrière"
     
    rst.RecordCount 'renvoi toujours -1
    Visiblement le problème viendrait du parametrage du recordset.
    certains recordset n'acceptent pas cette méthode
    d'ou ma question comment avoir le bon recordset?

    merci d'avance

  10. #10
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 4
    Par défaut
    visiblement avec ce code le movelast ne pose plus problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    rst.CursorType = adOpenDynamic
    rst.LockType = adLockOptimistic
    rst.ActiveConnection = mobjCon
    rst.Source = "SELECT * FROM P_SUB"
    rst.Open
    cependant le recordCount renvoi toujours -1


    pour que cela fonctionne remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst.CursorType = adOpenStatic
    j'espere que cela pourra aider certains...

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

Discussions similaires

  1. VBA, SQL, Access: Creer/Enregistrer une Requete
    Par Lameth dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/02/2011, 20h07
  2. [VBA-E]Ecrire et lancer une requete sur Access
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/03/2006, 14h32
  3. insérer resultat d'une requete dans un champs access
    Par valaidnew dans le forum Access
    Réponses: 2
    Dernier message: 02/03/2006, 14h47
  4. VBA recupération d'un resultat d'une requete
    Par chetflo dans le forum Access
    Réponses: 1
    Dernier message: 08/12/2005, 11h50
  5. [VB6] [Excel] Résultat d'une requete ds une feuille
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/01/2003, 17h52

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