antoine_ferard
Messages postés222Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention18 février 2011
-
19 sept. 2007 à 10:24
antoine_ferard
Messages postés222Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention18 février 2011
-
19 sept. 2007 à 11:00
Je développe une appli en VB6 avec une base Acces.
J'ai besoin de récupérer via une requête SQL, la somme des achats sur 1 an.
La table ACHATS a une valeur [DACHAT] pour la date de l'achat et [MACHAT] pour le montant de l'achat.
Dans VB6, je créé une variable "Rqte" qui prend pour valeur la requête à exécuter. J'exécute cette requête de la manière suivante :
Set Rst1 = New ADODB.Recordset
Rst1.Open Rqte, BaseConnect, adOpenStatic, adLockReadOnly
Mon problème est que la valeur [DACHAT] est au format texte (impossible de le changer), et donc je dois la convertir dans la requête pour pouvoir tester que cette date est située dans la dernière année. Je fais comme suit :
"select sum(machat) from achats where cdate(replace(dachat, ".", "/")) >= (date - 365)"
Il resort une erreur au niveau du "replace".
Désolé si c'est pas très clair mais si qqun à une solution ça serait cool. Merci
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 sept. 2007 à 10:44
salut,
tu confonds la VB et l'SQL....
les fonctions VB sont executées avant la requête.
avant (énoncé) tu la mettais en dur dans la chaîne donc elle ne risquait pas d'être interprétée
ensuite (correction) tu sépares le code (ok) mais avec un nom de champs qui n'existe pas ENCORE puisque la requête n'est pas executée, donc forcément le champs est pris comme une variable qui n'existe pas non plus
tu ne pourras pas faire de test de chaîne proprement à cause des points
le seul moyen ici est de ne pas faire de WHERE, et de filtrer ensuite tes résultats, puisque là tu pourras tester la date et modifier comme tu veux
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 19 sept. 2007 à 10:45
Salut,
je pense que tu dois, soit changer le type de données (text vers numeric) soit utiliser un recordset pour recupérer les donnée que tu souhaites manuellement pour effectuer ensuite ton traitement.
Vous n’avez pas trouvé la réponse que vous recherchez ?