Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/06/2011, 18h57   #1
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
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 :
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 :
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
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 06h02   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

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

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Bonjour,

Ta fonction :

Code :
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 :
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/
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/06/2011, 19h28   #3
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
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
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 21h30   #4
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

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

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 040
Points : 11 040
Bonsoir,

Citation:
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 ?
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h59.


 
 
 
 
Partenaires

Hébergement Web