Requête SQL dans code VB6 : fonction "replace"

Résolu
antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 - 19 sept. 2007 à 10:24
antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 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

7 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
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
3
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 6
19 sept. 2007 à 10:32
Salut,

Dans les requetes SQL les dates doivent être encadrées de #
Et regarde peut-être du côté de la fonction format..
0
antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 3
19 sept. 2007 à 10:37
j'ai mis celà, désormais le problème est que la variable dachat n'existe pas. pouvez-vous m'aider.

...WHERE cdate('" & Replace(dachat, ".", "/") & "')>=cdate('18/09/2004')
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
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.
0

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

Posez votre question
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 6
19 sept. 2007 à 10:46
Dachat est un champ de ta table tu peux y accéder avec Rst1.fields("DACHAT')
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
19 sept. 2007 à 10:48
tu as une raison particuliere qui te pousse a choisir le format text pour ce champ.
0
antoine_ferard Messages postés 222 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 18 février 2011 3
19 sept. 2007 à 11:00
oui, je suis obligé de garder un format text pour le champ dachat, je vais finalement retenir la solution de PCPT... merci quand-même... peace
0
Rejoignez-nous