|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
FORMAT DE DATE SYSTEM ET PORTABILITÉ
Information sur la source
Description
Ce bout de code a été écrit afin gérer les dates (insertion et lecture dans la base de données) quelque soit les paramètres régionnaux du système (en supposant que l'utilisateur saisie une date dans le format de son pays, message d'erreur si ce n'est pas le cas). J'ai eu à écrire ce code à cause de la non portabilité d'un programme utilisé dans des pays étrangers dû au format des dates. Une des fonctions disponible dans ce code permet donc de récupérer le format du système afin d'informer l'utilisateur sur comment renseigner les dates en vue d'une insertion. Cette fonction retourne une chaîne type 'dd/mm/yyyy' (d pour jour, m pour mois, y pour année) qui sera affichée dans un label. Pour tester ce code, modifier les paramètres régionnaux de votre système (sous XP, dans Panneau de configuration > Options régionnales et linguistiques)) et relancer le formulaire à chaque modifications Ce code n'a été testé que sous XP !
Source
- Option Compare Database
- Option Explicit
-
- 'Déclaration des APIs
- Private Declare Function GetLocaleInfo Lib "kernel32.dll" Alias "GetLocaleInfoA" ( _
- ByVal locale As Long, _
- ByVal lctype As Long, _
- ByVal lplcdata As String, _
- ByVal cchdata As Long _
- ) As Long
- Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
-
- 'Constante passée à la fonction GetLocaleInfo afin qu'elle renvoie le format de la date courte
- ' Pour plus d'infos et avoir la liste des constantes http://support.microsoft.com/kb/177146/fr
- Const Format_Date_Courte = &H1F
-
- Private Sub Form_Load()
- 'On initialise le label avec le format de la date courte renvoyé par le systeme
- format_date.Caption = ReturnFormat(Format_Date_Courte) 'retour du format de la date courte
- End Sub
-
- Private Sub Inserer_Click()
- Dim request As String
- 'On empêche tout message d'alerte en cas d'insertion dans la base de données
- DoCmd.SetWarnings False
-
- 'On test si la date à insérer est bien une date
- If Not IsDate(date_test.Value) Then
- 'Message d'erreur si ce n'est pas le cas
- MsgBox "erreur!", vbCritical
- Else
- 'Sinon, on insère la date dans la table concernée
-
- 'Copnstruction de la requête
- request = "INSERT INTO test (date_test) VALUES (#" & Format$(date_test.Value, "MM\/DD\/YYYY") & "#);"
- 'Exécution de la requête
- DoCmd.RunSQL request
- End If
- End Sub
-
-
- Private Sub Chercher_Click()
- 'Fonction qui compte le nombre de date recherchée dans la base de donnée
- Dim request As String
- Dim rst As DAO.Recordset
-
-
- 'On test si la date à insérer est bien une date
- If Not IsDate(date_recherche.Value) Then
- 'Message d'erreur si ce n'est pas le cas
- MsgBox "erreur!", vbCritical
- Else
- 'Sinon, on recherche la date dans la table
-
- 'Construction de la requête
- request = "SELECT Count(1) AS Nb " & _
- "FROM test " & _
- "WHERE test.date_test=#" & Format$(date_recherche.Value, "MM\/DD\/YYYY") & "#;"
-
- Set rst = CurrentDb.OpenRecordset(request, dbOpenDynaset, dbReadOnly)
-
- 'Affichage du résultat
- MsgBox "Nb de """ & CDate(date_recherche.Value) & """ : " & rst("Nb")
- End If
- End Sub
-
- Private Function ReturnFormat(type_retour As String) As String
- 'Création du format de la date system
- Dim locale As Long, lctype As Long, lplcdata As String, cchdata As Long, nretval As Long, dwLCID As Long
-
- 'Préparation des paramètres de la fonction GetLocaleInfo
- locale = GetUserDefaultLCID()
- lplcdata = Space(255)
- cchdata = Len(lplcdata)
- nretval = 0
-
- 'On récupère le format de la date dans le tableau lplcdata
- nretval = GetLocaleInfo(locale, type_retour, lplcdata, cchdata)
-
- 'Dans le cas ou la valeur de retour est 0 => on renvoie vide ""
- If nretval = 0 Then
- ReturnFormat = ""
- Else
- 'Sinon on renvoie le format de la date
- ReturnFormat = LCase(lplcdata)
- End If
- End Function
-
Option Compare Database
Option Explicit
'Déclaration des APIs
Private Declare Function GetLocaleInfo Lib "kernel32.dll" Alias "GetLocaleInfoA" ( _
ByVal locale As Long, _
ByVal lctype As Long, _
ByVal lplcdata As String, _
ByVal cchdata As Long _
) As Long
Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
'Constante passée à la fonction GetLocaleInfo afin qu'elle renvoie le format de la date courte
' Pour plus d'infos et avoir la liste des constantes http://support.microsoft.com/kb/177146/fr
Const Format_Date_Courte = &H1F
Private Sub Form_Load()
'On initialise le label avec le format de la date courte renvoyé par le systeme
format_date.Caption = ReturnFormat(Format_Date_Courte) 'retour du format de la date courte
End Sub
Private Sub Inserer_Click()
Dim request As String
'On empêche tout message d'alerte en cas d'insertion dans la base de données
DoCmd.SetWarnings False
'On test si la date à insérer est bien une date
If Not IsDate(date_test.Value) Then
'Message d'erreur si ce n'est pas le cas
MsgBox "erreur!", vbCritical
Else
'Sinon, on insère la date dans la table concernée
'Copnstruction de la requête
request = "INSERT INTO test (date_test) VALUES (#" & Format$(date_test.Value, "MM\/DD\/YYYY") & "#);"
'Exécution de la requête
DoCmd.RunSQL request
End If
End Sub
Private Sub Chercher_Click()
'Fonction qui compte le nombre de date recherchée dans la base de donnée
Dim request As String
Dim rst As DAO.Recordset
'On test si la date à insérer est bien une date
If Not IsDate(date_recherche.Value) Then
'Message d'erreur si ce n'est pas le cas
MsgBox "erreur!", vbCritical
Else
'Sinon, on recherche la date dans la table
'Construction de la requête
request = "SELECT Count(1) AS Nb " & _
"FROM test " & _
"WHERE test.date_test=#" & Format$(date_recherche.Value, "MM\/DD\/YYYY") & "#;"
Set rst = CurrentDb.OpenRecordset(request, dbOpenDynaset, dbReadOnly)
'Affichage du résultat
MsgBox "Nb de """ & CDate(date_recherche.Value) & """ : " & rst("Nb")
End If
End Sub
Private Function ReturnFormat(type_retour As String) As String
'Création du format de la date system
Dim locale As Long, lctype As Long, lplcdata As String, cchdata As Long, nretval As Long, dwLCID As Long
'Préparation des paramètres de la fonction GetLocaleInfo
locale = GetUserDefaultLCID()
lplcdata = Space(255)
cchdata = Len(lplcdata)
nretval = 0
'On récupère le format de la date dans le tableau lplcdata
nretval = GetLocaleInfo(locale, type_retour, lplcdata, cchdata)
'Dans le cas ou la valeur de retour est 0 => on renvoie vide ""
If nretval = 0 Then
ReturnFormat = ""
Else
'Sinon on renvoie le format de la date
ReturnFormat = LCase(lplcdata)
End If
End Function
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Historique
- 02 juillet 2007 11:07:00 :
- Modifications des requètes d'insertion/lecture
- 02 juillet 2007 15:55:41 :
- Suite aux remarques, la fonction générant le format de la date courte du système à été abandonnée et remplacée par l'API GetLocaleInfo(...)
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Casse tete ! [ par zzam ]
Bonjour a tous...Je vous soummet un problème de config de date auquel je suis confronté et que je n'arrive pas à résoudre :Mes paramètres régionaux so
conversion date format US en date Français [ par lachenee ]
Salut à tous,j'ai besoin d'aide.Je développe un logiciel de gestion de comptes bancaires sous excel en utilisant les formulaires de VBA .Lorsque je re
Conversion de date [ par nico ]
Je souhaite convertir une date au format ss/aaaa en format jj/mm/aaaa.Exemple : la date 35/0000 correspond au 28/08/2000Merci d'avance
Format Date [ par Altic ]
Comment modifier le format date, car quand j'utilise isdate, que je met le jj/mm/aaaa et mm/jj/aaaa pour lui c'est pareil.Exemple:31/12/2000 et 12/31/
Format de date... comment le modifier??? [ par noisy ]
J'ai besoin d'utiliser la date du jour pour nomemr des fichier à sauvegarder, or, on ne peut pas le faire grâce à la date système (jj/mm/aa)J'aimerais
pb urgent !! la date vb --> access [ par gobouz ]
voila g un pb ki me fai reellemen chier depui longtemps!!dans mon application vb5 je veu faire des requetes ki interroge une base de donnees access 97
Insertion d'une date dans une table [ par pierre751 ]
BonjourMon pb est le suivant : Dans 1 formulaire Access Je récupère la valeur d'une zone de texte qui est une date (jj/mm/aa) lorsque j'essaye d'inser
ACCESS + VB DAO + Format Date [ par steph ]
Mon pb est le suivant J'ai ma base de données sous ACCESS Il y a une table TOTO qui contient une colonne au format Date Je communique vers cette bdd
Date inversée [ par hervé ]
voilà, j'ai un nouveau problème.je dois saisir dans une boite de dialogue plusieurs valeurs, dont une date.Mais dans certains cas le "collage" de cett
format date du panneau de configuration [ par funtay ]
Je voudrais savoir quel fonctions utilisées pour pouvoir changer le format date du panneau de configuration
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|