Problème format date dans une requête access
environnement : office 2007
DAO
Bonjour,
Je viens à vous concernant un problème de format dans une requête access sous VBA.
Mon problème concerne le format d'une date. Lorsque j'effectue la requête avec
des dates en dur comme ceci #11/11/2008#, ma requête fonctionne parfaitement.
Lorsque je passe en date une variable, préalablement définie par l'utilisateur dans un useform
au format européen.
Ensuite, je change le format string en date puis j'utilise la fonction :
format(date,"mm/dd/aaaa") pour passer en format de date américain.
Ceci fait, je peux réaliser ma requête.
Ci-dessous, je vous met la sub responsable de la requête en vous montrant entre commentaire
l'ancienne version qui marche très bien.
J'ai testé les variables debut, debut2 et fin avec msgbox et la sortie est bien du type :
mm/dd/aaaa ( par exemple 05/25/2008)
Code:
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
|
Public Sub requete_cours(mabdd, debut, debut2, fin, resultat)
Dim rgeneral As String
'MsgBox debut : 11/11/2008
'MsgBox debut2 : 11/12/2008
'MsgBox fin : 11/11/2009
rgeneral =
"SELECT Nom, Cours.CodeISIN, Cours.Cours_Cloture, [CoursMoyen].Moyenne
FROM (SELECT Cac40.Nom, Cac40.Code_ISIN AS CodeISIN, Cours_Cloture
FROM CAC40 INNER JOIN COTATIONS ON CAC40.Code_ISIN=Cotations.Code_ISIN
WHERE (Date='""#" & debut & "#""') ORDER BY Cac40.Code_ISIN) AS COURS INNER JOIN (SELECT Code_ISIN, AVG(Cours_Cloture) AS Moyenne
FROM Cotations
WHERE (Date BETWEEN '""#" & debut2 & "#""' AND '""#" & fin & "#""' )
GROUP BY COTATIONS.CODE_ISIN ORDER BY COTATIONS.CODE_ISIN) AS CoursMoyen ON Cours.CodeISIN=[CoursMoyen].Code_ISIN
ORDER BY Cours.CodeISIN;"
'Ancienne version de la requête
'rgeneral = "SELECT Nom, Cours.CodeISIN, Cours.Cours_Cloture, [CoursMoyen].Moyenne FROM (SELECT Cac40.Nom, Cac40.Code_ISIN AS CodeISIN, Cours_Cloture FROM CAC40 INNER JOIN COTATIONS ON CAC40.Code_ISIN=Cotations.Code_ISIN
'WHERE (Date=#7/10/2007#) ORDER BY Cac40.Code_ISIN) AS COURS INNER JOIN (SELECT Code_ISIN, AVG(Cours_Cloture) AS Moyenne FROM Cotations
'WHERE (Date BETWEEN #7/11/2007# AND #7/10/2008# )
'GROUP BY COTATIONS.CODE_ISIN ORDER BY COTATIONS.CODE_ISIN) AS CoursMoyen ON Cours.CodeISIN=[CoursMoyen].Code_ISIN
'ORDER BY Cours.CodeISIN;"
'"#" & debut & "#"'
Set vcours = mabdd.CreateQueryDef("", rgeneral)
Set resultat = vcours.OpenRecordset
End Sub |
L'erreur ne vient pas du fait que les dates n'existant pas dans la base.
L'erreur est sur les 3 variables debut, debut2 et fin.
Mon objet resultat n'enregistre rien avec cette requête.
Je vous remercie d'avoir lu cette longue description !!! Et espère avoir une solution à ce problème.