Bonjour,
J'aimerais compter le nombre de resultat d'une requete SQL, mais j'ai toujours RecordCount = -1...
Pourtant la requete fonctionne car j'affiche le resultat sur une feuille...
Je n'arrive pas à régler ce problème.
Merci de m'aider.
Bonjour,
J'aimerais compter le nombre de resultat d'une requete SQL, mais j'ai toujours RecordCount = -1...
Pourtant la requete fonctionne car j'affiche le resultat sur une feuille...
Je n'arrive pas à régler ce problème.
Merci de m'aider.
Ok :-)
Merci d'avance !
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
40 Sub RequeteClasseurFerme() Dim Cn As New ADODB.Connection Dim Fichier As String Dim NomFeuille As String, texte_SQL1, texte_SQL2 As String Dim Rst As New ADODB.Recordset 'Définit le classeur fermé servant de base de données Fichier = ThisWorkbook.FullName 'Nom de la feuille dans le classeur fermé NomFeuille = "Feuil1" Set Cn = New ADODB.Connection '--- Connection --- With Cn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=" & Fichier & _ ";Extended Properties=Excel 8.0;" .Open (openstatic) End With '----------------- 'Définit la requête. '/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille. texte_SQL1 = "SELECT * FROM [" & NomFeuille & "$] WHERE Nom = 'Beaulieu'" Set Rst = New ADODB.Recordset Set Rst = Cn.Execute(texte_SQL1) MsgBox Rst.RecordCount 'Ecrit le résultat de la requête dans la cellule A2 Range("D6").CopyFromRecordset Rst '--- Fermeture connexion --- Cn.Close Set Cn = Nothing End Sub
A noter que le souci est à la ligne en gras, j'éssaye d'afficher le RecordCount.
Donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox Rst.RecordCount
Hmm.. Je crois qu'il faut que tu fasses d'abord un moveLast et ensuite un moveFirst de ton recordset pour initialiser ton recordCount![]()
Oui je sais c'est ce qui ce dit sur le net...
Sauf que quand je le fait j'ai une erreur et notement sur le MoveLast...
Le message dit :
"L'ensemble des lignes ne prend pas en charge les récupérations arrière."
Cela ressemble assez à un mauvais choix de curseur.
Où se situe exactement le classeur dont tu parles ici :
?la feuille dans le classeur fermé
Je ne comprend pas ta question...
Et je fais ces manipualtion le classeur ouvert, il y à marqué des truques car pour le moment j'ai fait un copié collé du lien que l'ont ma conseillé un peut plus haut...
Sinon, cette feuille ce trouve dans mon classeur... et le chemin du classeur est :
Et ma requete sans le count fonctionne bien car j'affiche les resultat de la requete en D6...
Code : Sélectionner tout - Visualiser dans une fenêtre à part ThisWorkbook.FullName
Bonsoir
remplace cette ligne de code
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set Rst = Cn.Execute(texte_SQL1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2'créer l 'objet Recordset et récupérer les enregistrements rst.Open texte_SQL1 , cn, adOpenStatic
Salut, Abed_H
Content de voir qu'on commence à s'intéresser au choix du curseur.
C'est à mon avis le 1er pas ...
Salut à toi ucfoutu
et merci pour votre......!
Bonne nuit.
Ok ça fonctionne, mais que signifie "Position du curseur"??
Et quelle est la diférrence entre :
Merci !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Rst.Open texte_SQL1, Cn, adOpenStatic Et Set Rst = Cn.Execute(texte_SQL1)
Bonne nuit !
De quoi parles-tu ?
AddOpenStatic définit un mode de curseur qui fait que ce dernier concerne une copie statique du jeu d'enregistrements.
Ceci te permet de jouer plus proprement avec les mouvements du curseur. Avec quelques inconvnients, mais pas dans ton cas de figure puisque tu établis un recordset à chaque fois et qu'il est fait sur la base des données d'une feuille.
Partager