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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !!!