Comparaison de date avec MySQL

Résolu
dth0 Messages postés 8 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 28 septembre 2010 - 17 sept. 2010 à 09:52
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 20 sept. 2010 à 16:20
Bonjour à tous,

Voilà mon soucis:

J'utilise un outil de gestion de parc, et il faudrait que je puisse exploiter sa bdd pour en tirer des statistiques. Ces stats concerneraient à chaque fois une période donnée, c'est pourquoi j'ai sur ma feuille excel 2 champs de texte permettant de saisir la date de début et la date de fin de la période.

Simplement je n'arrive pas à récupérer la valeur de ce champ de texte dans vba, et à la comparer à celles de ma bdd ('aaaa-mm-jj'). J'ai essayé avec les attributs .Value, .Text, essayer CDate pour convertir la chaine en date etc, mais m'y connaissant assez peu en vba je préfère poser la question avant de perdre encore plus temps :)

Merci d'avance

12 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
17 sept. 2010 à 15:59
je ne connais pas la syntaxe que tu utilises, néanmoins cela semble fonctionner.

faire, donc :

"SELECT ..
FROM ..
WHERE (glpi_tracking_0.date>={ts '" & Format$(Date1.Value, "YYYY-MM-DD \0\0\:\0\0\:\0\0") & "'} And glpi_tracking_0.date<{ts '" & Format$(Date2.Value, "YYYY-MM-DD \0\0\:\0\0\:\0\0") & "'})
GROUP BY .."



Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
dth0 Messages postés 8 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 28 septembre 2010
20 sept. 2010 à 16:04
Au final ta requête fonctionne en rajoutant ActiveSheet devant le nom des objets (ActiveSheet.date1.Value). Tout ça pour ça..
3
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 6
17 sept. 2010 à 10:31
Bonjour,

Déjà il faut faire attention que le format soit identique entre la base de données et ton champ texte.

Ensuite il faudrait voir ta requête mais pour séletionner entre 2 dates, tu peux utiliser Between et les dates en requête sql doivent être encadrées par des #

Si tu effectues une recherche sur le site tu devrais trouver la syntaxe exacte..


L'expérience, c'est une connerie par jour, mais jamais la même..
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
17 sept. 2010 à 10:39
Déjà il faut faire attention que le format soit identique entre la base de données et ton champ texte.


Je vote contre

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dth0 Messages postés 8 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 28 septembre 2010
17 sept. 2010 à 11:12
Merci pour ta réponse rapide!

Voici la requête telle qu'elle est générée par Microsoft Query:

"SELECT ..
FROM ..
WHERE (glpi_tracking_0.date>={ts '2010-08-01 00:00:00'} And glpi_tracking_0.date<{ts '2010-09-01 00:00:00'})
GROUP BY .."

L'idée c'est de remplacer les dates en orange par une variable qu'on va chercher dans un champ de texte de la feuille excel. Si je met en dur '2010-05-01' par exemple, ça fonctionne, par contre si je saisis cette même date dans mon champ de texte (date1) et que je met date1.Value ou .Text ça ne va pas. J'ai vraiment essayé pas mal de trucs. Il y a surement qquechose à modifier ds la façon de faire référence à un objet de la feuille dans la requête mais je ne trouve pas. Ou peut être au niveau du format de date, ms ça m'étonne car ça fonctionne lorsque j'inscris la même date directement ds le code.

Je cherche toujours avant de poster, ms là j'en ai juste marre de rester bloqué tant de temps sur un truc si bidon! :/
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
17 sept. 2010 à 11:19
"SELECT ..
FROM ..
WHERE glpi_tracking_0.date BETWEEN #" & Format$(MaVariable, "YYYY-MM-DD") & # AND #" & Format$(MaBorneMax, "YYYY-MM-DD") & "# GROUP BY .."

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
dth0 Messages postés 8 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 28 septembre 2010
17 sept. 2010 à 12:29
WHERE glpi_tracking_0.date BETWEEN #" & Format$(date1.Value, "YYYY-MM-DD") & # AND #" & Format$(date2.Value, "YYYY-MM-DD") & "#

Ca me renvoie une erreur de syntaxe, j'ai creusé un peu Format mais je ne vois tjs pas. Vs voyez le souci? Je fais peut être mal référence à mes champs de texte..? Ils contiennent respectivement 2010-05-01 et 2010-05-31.

Merci en tout cas
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
17 sept. 2010 à 13:57
glpi_tracking_0.date est bien un champs typé date ?


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
dth0 Messages postés 8 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 28 septembre 2010
17 sept. 2010 à 14:12
datetime pour être exact
0
dth0 Messages postés 8 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 28 septembre 2010
17 sept. 2010 à 16:49
Merci pour ton aide,

Je pense qu'on est pas loin du but ms il me fait encore une erreur de compil:

Attendu : séparateur de liste ou )

Peut être une histoire de & ou de simple quote/double quote?

Je cherche dans mon coin dis moi quoi si tu as une idée :)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
17 sept. 2010 à 16:54
Je ne peux répondre a ta place, c'est une erreur que TU as introduite :
? "SELECT .. FROM .. WHERE (glpi_tracking_0.date>={ts '" & Format$(now, "YYYY-MM-DD \0\0\:\0\0\:\0\0") & "'} And glpi_tracking_0.date<{ts '" & Format$(now, "YYYY-MM-DD \0\0\:\0\0\:\0\0") & "'}) GROUP BY .."


me donne bien
? "SELECT .. FROM .. WHERE (glpi_tracking_0.date>={ts '" & Format$(now, "YYYY-MM-DD \0\0\:\0\0\:\0\0") & "'} And glpi_tracking_0.date<{ts '" & Format$(now, "YYYY-MM-DD \0\0\:\0\0\:\0\0") & "'}) GROUP BY .."
SELECT .. FROM .. WHERE (glpi_tracking_0.date>={ts '2010-09-17 00:00:00'} And glpi_tracking_0.date<{ts '2010-09-17 00:00:00'}) GROUP BY ..




Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
20 sept. 2010 à 16:20
ok ok

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0