[VBA] Compter les lignes d'une requête SQL
Résolu/Fermé
eXqO
Messages postés
49
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
26 septembre 2009
-
2 juil. 2009 à 09:31
parpins - 17 juil. 2009 à 11:30
parpins - 17 juil. 2009 à 11:30
A voir également:
- [VBA] Compter les lignes d'une requête SQL
- Excel compter cellule couleur sans vba - Guide
- Excel trier par ordre alphabétique en gardant les lignes - Guide
- Filtre excel ne prend pas en compte toutes les lignes ✓ - Forum Excel
- Aller à la ligne dans une cellule excel - Guide
- Afficher toutes les lignes masquées excel ✓ - Forum Excel
5 réponses
Essayez ceci :
Dim i As Integer
Dim maCmd As New SqlCommand("VOTRE_REQUETE_ICI", Conn)
Conn.Open()
Dim monRead As SqlDataReader = maCmd.ExecuteReader() 'execution de la requete
While monRead.Read()
i = i + 1
End While
Conn.Close() 'fermeture de la connexion a la base
Et voila , maintenant i contient le nombre des lignes de votre requête ...
Dim i As Integer
Dim maCmd As New SqlCommand("VOTRE_REQUETE_ICI", Conn)
Conn.Open()
Dim monRead As SqlDataReader = maCmd.ExecuteReader() 'execution de la requete
While monRead.Read()
i = i + 1
End While
Conn.Close() 'fermeture de la connexion a la base
Et voila , maintenant i contient le nombre des lignes de votre requête ...
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):
'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
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):
'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
eXqO
Messages postés
49
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
26 septembre 2009
2
2 juil. 2009 à 10:38
2 juil. 2009 à 10:38
Up !
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
2 juil. 2009 à 11:19
2 juil. 2009 à 11:19
Bonjour,
J'aurai plutôt fait un rst.MoveLast avant le RecordCount et ensuite le MoveFirst.
D'autre part, il faut remplacer le "+" de ta requête par "&". Le signe "+" est l'opérateur de l'addition et non de la concaténation. Il peut être mal interprété dans la requête.
;o)
J'aurai plutôt fait un rst.MoveLast avant le RecordCount et ensuite le MoveFirst.
D'autre part, il faut remplacer le "+" de ta requête par "&". Le signe "+" est l'opérateur de l'addition et non de la concaténation. Il peut être mal interprété dans la requête.
;o)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eXqO
Messages postés
49
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
26 septembre 2009
2
2 juil. 2009 à 11:42
2 juil. 2009 à 11:42
J'ai essayé ta technique avec le MoveLast auparavant mais j me suis pas attardé dessus car il me renvoie un message d'erreur : "L'ensemble des lignes ne prend pas en charge les récupérations arrière"...