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 :

Probleme de date avec une liste deroulante: [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Par défaut Probleme de date avec une liste deroulante:
    Bonjour le monde,

    J’ai un probleme a vous poser. j’ai un formulaire qui contient une liste deroulante.
    A partir de cette derniere, l’utilisateur peut choisir une date. Les dates sont en format dd/mm/yyy; par exemple 31/03/2011.

    La valeur de la date choisie est ensuite passee a la variable QuarterFY1 (declaree egalement comme Date) dans l’evenement AFTERUPDATE de ma liste deroulante.
    Jusque la , tout se passe bien.

    Maintenant si j’inserre la dite valeur dans dans le champ Period_Selected de la table SelectedPeriodList (pour ce faire, j’utilise la methode Execute de l’objet Connection en ADO), la valeur “perd” son format et devient 00:07:24.

    Question1: svp aidez moi a inserrer directement la date choisie (a partir de la liste deroulante) dans une table c’est a dire sans passer VBA.

    Question 2 : dans le cas je serai oblige de passer VBA pour realiser cette operation, dites moi svp ce que je dois faire pour que la date chosie s’affiche correctement dans ma table (ie comme 31/03/2011)

    Je rappele que le champ de la table qui acueille les dates choisies (a partir de la liste deroulante) est de type Date egalement.

    Merci d’avance .



    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
    Sub InsertValue(xDate As Date)
    'cette procedure inserre des valeurs dans le champ Period_Selected
    de la table SelectedPeriodList.
     'xDate est l'argument de ma fonction.
    'cette fonction est appelee au niveau de l'evenement AFTERUPDATE de la liste deroulante.
     
        Dim Cn As ADODB.Connection
        Dim rs As ADODB.Recordset
        Set Cn = Application.CurrentProject.Connection
        Set rs = CreateObject("adodb.recordset")
        Dim CmdStr As String
     
     
        CmdStr = "INSERT INTO SelectedPeriodList (Period_Selected)"
        CmdStr = CmdStr & "VALUES (" & xDate & ")"
     
     
        Cn.Execute CmdStr
     
     
    End Sub

    Le code de ma liste deroulante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Combo1_AfterUpdate()
     
    'notez que QuarterFY1 a ete declaree comme PUBLIC et est de type Date.
    'la date choisie a partir de la liste deroulante passe sa valeur a la variable QuarterFY1.
     
        QuarterFY1 = Me.Combo1.Value
        MsgBox QuarterFY1  'retourne bien la date dans le bon format ie 31/03/2011
     
    'Inserer la valeur de la variable QuarterFY1 dans le champ Period_Selected de la table SelectedPeriodList.
        Call InsertValue(QuarterFY1)
     
    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour,

    Ta fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub InsertValue(xDate As Date)
    Dim CmdStr As String
    CmdStr = "INSERT INTO SelectedPeriodList (Period_Selected) select #" _
                 & Format(xDate, "mm/dd/yyyy") & "# AS Expr1;"
    DoCmd.RunSQL (CmdStr)
    End Sub
    et pour éviter les avertissements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub InsertValue(xDate As Date)
    Dim CmdStr As String
    CmdStr = "INSERT INTO SelectedPeriodList (Period_Selected) select #" _
                 & Format(xDate, "mm/dd/yyyy") & "# AS Expr1;"
    DoCmd.SetWarnings False
    DoCmd.RunSQL (CmdStr)
    DoCmd.SetWarnings True
    End Sub

    Si le sujet te passionne :

    Les Fonctions Date/Heure
    http://mhubiche.developpez.com/vba/f...ions/datetime/

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Par défaut
    Grand merci Claude,
    Merci pour ta reponse, ca m’a beaucoup aide.
    Je ne savais pas que l ‘on pouvait utiliser SELECT de cette facon la. Je pense que je comprends un peu plus comment construire les chaines de caracteres en SQL.

    Par contre, quand j’ai remplace DoCmd.RunSQL par Connection.Execute, j’ai egalement obtenu les resulats escomptes.

    Premiere question:
    Quelle est alors la difference entre les 2 approches c’est a dire DoCmd.RunSQL et Connection.Execute?

    Deuxieme question:
    J’ai declaree la variable QuarterFY1 comme PUBLIQUE pour que je puisse acceder a sa valeur partout dans mon project. Mais quand je mets dans un autre modle cela me renvoie 00:00:00 au lieu de 31/03/2011.
    Je ne comprends plus rien. Donc ma question est de savoir comment modifier mon code pour que la variable QuarterFY1 et sa valeur soient accessibles partout dans mon projet.

    Encore une fois merci

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonsoir,

    Premiere question:
    Quelle est alors la différence entre les 2 approches c’est-à-dire DoCmd.RunSQL et Connection.Execute?
    Je l'ignore.
    Ma machine (Access2000), ne reconnait pas cette instruction. En tout cas, je n'ai pas trouvé la référence qui me permettait d'y accéder.

    Deuxième question:

    0:00:00 est la valeur initiale.
    Pour moi, de deux choses l'une :
    ou bien, tu n'as pas encore attribué de valeur dans cette session ;
    ou bien, tu as quelque part vidé son contenu (QuarterFY1 = empty).

    Ou encore, une faute de frappe.
    As-tu "Option Explicit" dans tes modules ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [HTML] probleme avec une liste deroulante et un menu contextuel
    Par Akramweb dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 21/06/2008, 23h17
  2. Comment filtrer avec une liste déroulante
    Par nicou50 dans le forum Access
    Réponses: 16
    Dernier message: 02/09/2006, 03h04
  3. Pb avec une liste deroulante
    Par Tite-Nini dans le forum Access
    Réponses: 1
    Dernier message: 07/07/2006, 09h56
  4. ajax,rafraichissement avec une liste deroulante
    Par klimero dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/04/2006, 10h41
  5. [MySQL] Problème avec une liste déroulante
    Par leloup84 dans le forum SQL Procédural
    Réponses: 19
    Dernier message: 24/01/2006, 13h57

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