Bonjour,
Normal que cela ne fonctionne ps ton code contient des erreurs.
Il faut bien distinguer ce que tu fait.
Tu veux extraire des données comprises entre 2 dates.
Alors il faut d'abord contrôler s'il existe bien des données entre ces 2 dates avec
SQL = "SELECT COUNT(*) FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour"
rs=con.execute(SQL)
Il va te repondre combien d'enregistrement il a trouvé, s'il n'y en a pas, tu sors de la boucle
if rs.fields(0).value=0 then exit sub 'tu sors
Dans le cas contraire, tu peux effectuer réellement la recherche et afficher les données :
SQL = "SELECT * FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour"
rs=con.execute(SQL)
Do
...
loop ...
Ne confond surtout pas l'instruction SQL:
1° SELECT COUNT(*)....... : te mets dans le rs (recodset) le nombre d’enregistrements trouvés correspondant a la requete
2° SELECT *....... : te mets dans le recordset tout les champs trouvés correspondant a la requete
c'est vraiment différent !
L'erreur que tu as "Aucun texte de commande...." c'est parceque tu n'as pas remplis correctement la variable SQL (commande)
Si on résume :
1° tu ouvre ta base :
con = New ADODB.Connection
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sBaseDeDonnees & ";" & "Persist Security Info=False"
con.Open()
2° Tu controle d'abord que ta requete contient des données (afin d'eviter des erreurs), par exemple :
SQL="SELECT COUNT(*) FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour
3°tu envoie la commande que tu as créé et tu mets le résultat dans un recordset
rs=con.execute(SQL)
4°Si le recordset te répond autre chose que 0, c'est que tu peux récupérer des données (ce n'est plus COUNT(*) mais * seulement)
If rs.fields(0).value=0 then exit sub
SQL="SELECT * FROM Donnees WHERE Jour >#" & ConvDateDebut & "# AND Jour <#" & ConvDateFin & "# ORDER BY Jour
5°tu envoie de noveau la commande que tu as créé et tu mets le résultat dans un recordset
rs=con.execute(SQL)
6° tu affiche les données (Do.....LOOP....)
Voilà, si vraiment tu n'y arrive pas, je te ferai une archive en exemple
@++
Bon courage