Google Groupes n'accepte plus les nouveaux posts ni abonnements Usenet. Les contenus de l'historique resteront visibles.

VB Modif date paramètres régionaux

4 vues
Accéder directement au premier message non lu

BM

non lue,
17 juin 2002, 09:09:0517/06/2002
à
Bonjour,

J'aimerais au démarrage de mon application développée sous
Access changer en visual basic les paramètres régionaux de
date :
- test des paramètres régionaux : si format date de type
jj/MM/aaaa alors passsage à jj/MM/aa + message de
changement de configuration.

Où positionner le code ?
Est-il possible de réaliser sans redémarrer l'application ?

Quelqu'un connait-il une solution ?

Merci

BM

3stone

non lue,
17 juin 2002, 10:05:1317/06/2002
à
Salut,

Je pense qu'il n'y a pas de raison valable pour faire cela...
les paramètres régionaux appartiennent au PC et
non à l'appli Access.

Dans Access, on peut gerer parfaitement les
dates quelques soit leur format.

la mise en forme voulue se fait très simplement

avec un : Format(LaDate,"jj/mm/aa")


--
A+
Pierre (3stone)
--------------------------------


BM <b.mo...@wanadoo.fr> a écrit dans le message :
db7201c21600$287bac80$2ae2...@hosting.microsoft.com...

andre

non lue,
17 juin 2002, 14:21:1117/06/2002
à
Salut
Pour recuperer le format date crees un nouveau module:
et colles :
Option Compare Database
Option Explicit

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

Private Declare Function GetUserDefaultLCID%
Lib "kernel32" ()


Const LOCALE_SSHORTDATE = &H1F ' format date court

Public Function FormatDateCourt() As String

Dim Symbol As String
Dim iRet1 As Long
Dim iRet2 As Long
Dim lpLCDataVar As String
Dim Pos As Integer
Dim Locale As Long

Locale = GetUserDefaultLCID()
iRet1 = GetLocaleInfo(Locale, LOCALE_SSHORTDATE,
lpLCDataVar, 0)
Symbol = String$(iRet1, 0)
iRet2 = GetLocaleInfo(Locale, LOCALE_SSHORTDATE,
Symbol, iRet1)
Pos = InStr(Symbol, Chr$(0))
If Pos > 0 Then
Symbol = Left$(Symbol, Pos - 1)
FormatDateCourt = Symbol
End If
End Function

Pour la changer ca doit etre SetlocaleINfoA il faut que je
fasse l'essai

@+
andre
>-----Message d'origine-----

>.
>

andre

non lue,
17 juin 2002, 14:39:1617/06/2002
à
re salut pour changer colles ce qui suit dant nouveau
module

Option Compare Database
Option Explicit


Private Declare Function SetLocaleInfo
Lib "kernel32" Alias _
"SetLocaleInfoA" (ByVal Locale As Long, ByVal
LCType As _
Long, ByVal lpLCData As String) As Boolean
Private Declare Function PostMessage Lib "user32"
Alias _
"PostMessageA" (ByVal hwnd As Long, ByVal wMsg
As Long, _
ByVal wParam As Long, ByVal lParam As Long) As
Long
Private Declare Function GetSystemDefaultLCID
Lib "kernel32" _
() As Long

Const LOCALE_SSHORTDATE = &H1F ' date format
Private Const WM_SETTINGCHANGE = &H1A
'same as the old WM_WININICHANGE
Private Const HWND_BROADCAST = &HFFFF&

Function ChangerFormatDateCourt(formatDate As String)
Dim dwLCID As Long
dwLCID = GetSystemDefaultLCID()
If SetLocaleInfo(dwLCID, LOCALE_SSHORTDATE,
formatDate) _
= False Then
MsgBox "Failed"
Exit Function
End If
PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0
End Function

Pour changer tu tapes en VB
Call ChangerFormatDateCourt("dd-MM-yy") 'ou "dd-MM-yyyy"

@+
andre
Ps: Fais attention au retour de ligne a cause de la copie
>-----Message d'origine-----

>.
>

Michel Walsh

non lue,
18 juin 2002, 06:55:3218/06/2002
à
Salut,


On ne fait pas cela! On doit respecter les choix de l'utilisateur, sinon, il va te la faire bouffer
ton application qui lui crée des erreurs, par la suite, puisqu'il se pense encore dans SON choix de
format, en dehors de ton application. La platteforme s'appelle Windows, pas Unix, et la culture y
veut qu'on respecte les choix de l'utilisateur. Imagine même que ton application tourne encore et
l'utilisateur change d'application, avec le Task manager, ou simplement sur Ctrl_Tab... il se passe
quoi si entre temps il a rechangé pour SON paramétrage lorsqu'il revient à ton application?

Force un format, comme 3stone le suggère, ou utilise quelque chose comme ce qui suit:

=======
Declare Function VariantChangeTypeEx _
Lib "oleaut32.dll" _
(ByRef pvargDest As Variant, _
ByRef pvarSrc As Variant, _
ByVal lcid As Long, _
ByVal wFlags As Integer, _
ByVal vt As VbVarType) As Long

Public Function InUSplease(Whatever As Variant) As String
Dim tmp As Variant
VariantChangeTypeEx tmp, Whatever, 1033, 0, vbString
InUSplease = tmp
End Function
=======

qui formate dans un paramètre "local", ici 1033 pour US, sans modifier le paramétrage du PC de
quelque façon que ce soit. Ainsi, 7/2 se formattera en "3.5" au lieu de "3,5" et ce, quelque
soit le paramétrage du PC.

S'il faut absolument modifier le paramétrage du PC, demander à l'utlisateur de le faire, ne pas le
lui faire sans CLAIREMENT l'avertir et, si possible, le remettre dans son état initial lors de la
fermeture (mais si l'application se termine "anormalement", ... ça foire, il va s'en dire).


Espérant être utile,
Vanderghast, Access MVP


"BM" <b.mo...@wanadoo.fr> wrote in message
news:db7201c21600$287bac80$2ae2...@hosting.microsoft.com...

0 nouveau message