IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Problème format date dans une requête access


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 11
    Points
    11
    Par défaut 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 : 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 !!! Et espère avoir une solution à ce problème.

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Salut,

    ca serait pas plutot en anglais les années:
    format(Tadate,"mm/dd/yyyy")

    sinon regarde dans la faq date format us

    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    1/ Date est un mot réservé => écrire [Date] quand c'est le nom d'un champ (change le nom du champ si tu peux, ça t'éviteras des soucis).
    2/ Essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE ([Date]= #" & format(debut, "MM/DD/YYYY") & "# ...)
    (en supposant que debut est défini comme Date)
    [Access] Les bases du débogage => ici

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur Électromécanicien
    Inscrit en
    Mars 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur Électromécanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 60
    Points : 59
    Points
    59
    Par défaut
    Bonjour,


    Essaie Buildcriteia dont voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    dim MaVariableDeTypeDate as date
    ....
     
    strSQLsrce = "Select ValNote From " & strSource & " Where " & BuildCriteria("MonChampDeTypeDate", dbDate, MaVariableDeTypeDate)
     
    strSource == la source, Table ou requête existante
    ValNote == champ de strSource

Discussions similaires

  1. [AC-2003] Problème de date dans une requête
    Par lololebricoleur dans le forum Access
    Réponses: 3
    Dernier message: 31/05/2012, 16h49
  2. [AC-2003] Problème de date dans une requête
    Par lololebricoleur dans le forum VBA Access
    Réponses: 1
    Dernier message: 31/05/2012, 16h48
  3. Changement format date dans une table access
    Par benPSA dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 15/01/2010, 15h48
  4. comment forcer le format date dans une requête
    Par chauvex99 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/07/2007, 09h49
  5. problème valeur date dans une requête
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 03/06/2007, 19h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo