|
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 !
CONVERTISSEUR 1.1.2001 -> 01.01.2001
Information sur la source
Description
Bon, c un peu nul comme code, mais ca m'a servi dans mon appli. J'ai une texbox de type date, qui pas défaut recoit la date du jour. Pb : lorsque la date est genre 05.08.2004 -> ca marque 5.8.2004 Si l'on modifie la textbox, ex, on remplace '5' par '5', ca devient automatiquement : 05.08.2004 par contre, si on y touche pas, ca reste 5.8.2004. Donc, pour mes recherches dans ma base de données, ca m'embetait.
Source
- 'évènement qui va appeler la conversion:
- '********************************
- Private Sub Bouton_OK_Click()
- Text_Date = Conversion_Date(Text_Date)
- End Sub
-
-
- '***************************************************************************************
- ' Convertit 1.1.2001 -> 01.01.2001
- '***************************************************************************************
-
- Function Conversion_Date(La_Date As String) As String
- Dim Jour, Mois As String
- If Len(La_Date) <> 10 Then
- 'l'expression de la date n'a pas le bon format
- 'teste le jour:
- Jour = Left(La_Date, InStr(1, La_Date, "."))
- If Len(Jour) <> 3 Then
- 'le jour n'est pas correct:
- Jour = "0" & Jour
- Jour = Left(Jour, 2)
- Mois = Right(La_Date, 7)
- If Left(Mois, 1) = "." Then
- 'le mois n'est pas correct:
- Mois = Right(Mois, 6)
- Mois = "0" & Mois
- End If
- La_Date = Jour & "." & Mois
- End If
- End If
- Conversion_Date = La_Date
- End Function
-
-
- ***********************************************************************
- 2ème fonction de conversion :
- ***********************************************************************
- Dans un module, par exemple :
-
- Public infoDC As String
- Const LOCALE_USER_DEFAULT = &H400
- Const LOCALE_SSHORTDATE = &H1F
- Const LOCALE_SLONGDATE = &H20
- Const LOCALE_STIMEFORMAT = &H1003
- Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
-
- '***************************************************************************************
- ' Renvoit la date du jour
- ' avec le séparateur correct "/" ou "."
- '***************************************************************************************
- Public Function La_Date() As String
- Dim Buffer As String, Ret As Long, infoDL As String, infoT As String
- Buffer = String$(256, 0)
- Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, Buffer, Len(Buffer))
- infoDC = Left$(Buffer, Ret - 1)
- Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, Buffer, Len(Buffer))
- infoDL = Left$(Buffer, Ret - 1)
- Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, Buffer, Len(Buffer))
- infoT = Left$(Buffer, Ret - 1)
- 'MsgBox "Date courte : " & infoDC & vbLf & vbLf & "Date longue : " & infoDL & vbLf & vbLf & "Heure : " & infoT
- La_Date = Format$(Date, infoDC)
- End Function
-
- '***************************************************************************************
- ' Convertion de date selon le séparateur régional :
- '***************************************************************************************
-
- Function Conversion_Date(Date_a_convertir As String) As String
- Dim Jour, Mois, Annee As String
- Dim separateur_regional As String
- If infoDC = "" Then Call La_Date
- separateur_regional = Left(infoDC, 3)
- separateur_regional = Right(separateur_regional, 1)
- 'separateur_regional vaut alors "." ou "/" selon le système d'exploitation
- Jour = Left(Date_a_convertir, 2)
- Mois = Left(Date_a_convertir, 5)
- Mois = Right(Mois, 2)
- Annee = Right(Date_a_convertir, 4)
- Date_a_convertir = Jour & separateur_regional & Mois & separateur_regional & Annee
- Conversion_Date = Date_a_convertir
- End Function
-
'évènement qui va appeler la conversion:
'********************************
Private Sub Bouton_OK_Click()
Text_Date = Conversion_Date(Text_Date)
End Sub
'***************************************************************************************
' Convertit 1.1.2001 -> 01.01.2001
'***************************************************************************************
Function Conversion_Date(La_Date As String) As String
Dim Jour, Mois As String
If Len(La_Date) <> 10 Then
'l'expression de la date n'a pas le bon format
'teste le jour:
Jour = Left(La_Date, InStr(1, La_Date, "."))
If Len(Jour) <> 3 Then
'le jour n'est pas correct:
Jour = "0" & Jour
Jour = Left(Jour, 2)
Mois = Right(La_Date, 7)
If Left(Mois, 1) = "." Then
'le mois n'est pas correct:
Mois = Right(Mois, 6)
Mois = "0" & Mois
End If
La_Date = Jour & "." & Mois
End If
End If
Conversion_Date = La_Date
End Function
***********************************************************************
2ème fonction de conversion :
***********************************************************************
Dans un module, par exemple :
Public infoDC As String
Const LOCALE_USER_DEFAULT = &H400
Const LOCALE_SSHORTDATE = &H1F
Const LOCALE_SLONGDATE = &H20
Const LOCALE_STIMEFORMAT = &H1003
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
'***************************************************************************************
' Renvoit la date du jour
' avec le séparateur correct "/" ou "."
'***************************************************************************************
Public Function La_Date() As String
Dim Buffer As String, Ret As Long, infoDL As String, infoT As String
Buffer = String$(256, 0)
Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, Buffer, Len(Buffer))
infoDC = Left$(Buffer, Ret - 1)
Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, Buffer, Len(Buffer))
infoDL = Left$(Buffer, Ret - 1)
Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, Buffer, Len(Buffer))
infoT = Left$(Buffer, Ret - 1)
'MsgBox "Date courte : " & infoDC & vbLf & vbLf & "Date longue : " & infoDL & vbLf & vbLf & "Heure : " & infoT
La_Date = Format$(Date, infoDC)
End Function
'***************************************************************************************
' Convertion de date selon le séparateur régional :
'***************************************************************************************
Function Conversion_Date(Date_a_convertir As String) As String
Dim Jour, Mois, Annee As String
Dim separateur_regional As String
If infoDC = "" Then Call La_Date
separateur_regional = Left(infoDC, 3)
separateur_regional = Right(separateur_regional, 1)
'separateur_regional vaut alors "." ou "/" selon le système d'exploitation
Jour = Left(Date_a_convertir, 2)
Mois = Left(Date_a_convertir, 5)
Mois = Right(Mois, 2)
Annee = Right(Date_a_convertir, 4)
Date_a_convertir = Jour & separateur_regional & Mois & separateur_regional & Annee
Conversion_Date = Date_a_convertir
End Function
Conclusion
C plus facile d'imposer un format quand on enregistre la date... ... que de rechercher tous les formats de date possible quand on fait une recherches SQL...
Historique
- 25 août 2004 20:06:54 :
- 25/08/2004 : Explication de cette 2 eme fonction :
J'ai eu un problème lors du passage d'un système d'exploitation allemand à un francais. Une date contenu dans ma base de données était au format dd.mm.yyyy et ma requete plantait a cause de ca. J'ai bien essayé la fonction format, mais ca ne marchait pas. La date restait inchangée meme apres la commande Format !
La fonction La_Date renvoit la date du jour au bon format, et elle contient la variable infoDC. Cette variable est de la forme dd.mm.yyyy si c'est un système allemand par exemple, et dd/mm/yyyy si c'est un système francais.
1°)Un premier appel a la fonction la_date va remplir cette variable infoDC.
2°)Ensuite un appel a la fonction conversion_date va extraire le séparateur régional, puis remettre la date au bon format.
Je sais que c'est exactement ce que fait la fonction "format" mais dans mon cas, ca n'a pas marché, donc....
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
|