Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment forcer des paramètres régionaux

4 réponses
Avatar
pierre.rivet
Bonjour à tous,

Je voudrais forcer dans un de mes logiciels l'affichage des paramètres de
date de la façon suivante:

jj/MM/aaaa

Cette façon d'afficher est courante en France, et ne pose aucun problème.
Par contre, en Belgique, c'est moins courant, et cela déclenche des messages
d'erreur du type:

Erreur d'exécution '-2147217913 (80040e07)': Erreur de syntaxe dans
l'expression 'OrdrePatient=1 and Date<#6//6//08#'.

alors qu'un dtp me donne une date sous la forme 06/06/2008

En son temps, François PICALAUSA m'avait indiqué des API pour forcer
l'affichage des nombres décimaux avec un point à 10.5 (par exemple) au lieu
de 10,5

Y a-t-il une API équivalente pour la date ?

Merci à l'avance de votre prochaine réponse,

Pierre

4 réponses

Avatar
jean-marc
"pierre.rivet" wrote in message
news:4848f417$0$866$
Bonjour à tous,



hello,

Je voudrais forcer dans un de mes logiciels l'affichage des paramètres de
date de la façon suivante:

jj/MM/aaaa

Cette façon d'afficher est courante en France, et ne pose aucun problème.
Par contre, en Belgique, c'est moins courant,



Pas à ma connaissance (j'écris depuis Bruxelles...)

et cela déclenche des messages
d'erreur du type:

Erreur d'exécution '-2147217913 (80040e07)': Erreur de syntaxe dans
l'expression 'OrdrePatient=1 and Date<#6//6//08#'.



C'est parce que tu as doublé les "/", sinon tu n'aurais pas l'erreur.

Il faudrait que ta requête soit:

'OrdrePatient=1 and Date<#6/6/08#'

et n'aurais pas de messages d'erreur. Mais voir la suite ...

alors qu'un dtp me donne une date sous la forme 06/06/2008



Correct.

En son temps, François PICALAUSA m'avait indiqué des API pour forcer
l'affichage des nombres décimaux avec un point à 10.5 (par exemple) au
lieu
de 10,5

Y a-t-il une API équivalente pour la date ?



Bien sur, même si ici il n'y a pas besoin d'API.

On peut utiliser l'instruction Format$() pour les affichages:

Par exemple:
debug.print format$("1/1/2008", "dd/mm/yyyy") affiche:
01/01/2008

Voir l'aide de format$ pour plus de détails.

Pour la manipulation des dates en SQL, voir la FAQ:

http://faq.vb.free.fr/index.php?question0

Pour des infos générales sur les Local Settings:
http://faq.vb.free.fr/index.php?question0


Merci à l'avance de votre prochaine réponse,



Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
pierre.rivet
Merci Jean Marc de ta réponse rapide, et encore efficace,

Je ne savais pas que tu écrivais de Bruxelles, une fois.....:-))

(je plaisante sur la question, car je suis "chti"...mais exilé sur les bords
du Bassin d'Arcachon...)

Si j'ai le message d'erreur, c'est parce que en réalité ma date dans
l'expression SQL est définie par une fonction:

Public Function DatesFormat(ByVal Dates As String) As String
DatesFormat = "#" & Mid(Dates, 4, 2) & "/" & Left(Dates, 2) & "/" &
Right(Dates, 2) & "#"
End Function

avec Dates étant un texte de la forme jj/mm/aaaa ....

Je vais chiader la question. Ta réponse semble correspondre à ce que
j'attends.

A bientôt, et encore merci,

Pierre

"jean-marc" a écrit dans le message de news:
48491076$0$2858$
"pierre.rivet" wrote in message
news:4848f417$0$866$
Bonjour à tous,



hello,

Je voudrais forcer dans un de mes logiciels l'affichage des paramètres de
date de la façon suivante:

jj/MM/aaaa

Cette façon d'afficher est courante en France, et ne pose aucun problème.
Par contre, en Belgique, c'est moins courant,



Pas à ma connaissance (j'écris depuis Bruxelles...)

et cela déclenche des messages
d'erreur du type:

Erreur d'exécution '-2147217913 (80040e07)': Erreur de syntaxe dans
l'expression 'OrdrePatient=1 and Date<#6//6//08#'.



C'est parce que tu as doublé les "/", sinon tu n'aurais pas l'erreur.

Il faudrait que ta requête soit:

'OrdrePatient=1 and Date<#6/6/08#'

et n'aurais pas de messages d'erreur. Mais voir la suite ...

alors qu'un dtp me donne une date sous la forme 06/06/2008



Correct.

En son temps, François PICALAUSA m'avait indiqué des API pour forcer
l'affichage des nombres décimaux avec un point à 10.5 (par exemple) au
lieu
de 10,5

Y a-t-il une API équivalente pour la date ?



Bien sur, même si ici il n'y a pas besoin d'API.

On peut utiliser l'instruction Format$() pour les affichages:

Par exemple:
debug.print format$("1/1/2008", "dd/mm/yyyy") affiche:
01/01/2008

Voir l'aide de format$ pour plus de détails.

Pour la manipulation des dates en SQL, voir la FAQ:

http://faq.vb.free.fr/index.php?question0

Pour des infos générales sur les Local Settings:
http://faq.vb.free.fr/index.php?question0


Merci à l'avance de votre prochaine réponse,



Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;







Avatar
Jean-marc
pierre.rivet wrote:
Merci Jean Marc de ta réponse rapide, et encore efficace,

Je ne savais pas que tu écrivais de Bruxelles, une fois.....:-))

(je plaisante sur la question, car je suis "chti"...mais exilé sur
les bords du Bassin d'Arcachon...)



Moi je suis un Breton exilé Outre-Quiévrain :-)


Si j'ai le message d'erreur, c'est parce que en réalité ma date dans
l'expression SQL est définie par une fonction:

Public Function DatesFormat(ByVal Dates As String) As String
DatesFormat = "#" & Mid(Dates, 4, 2) & "/" & Left(Dates, 2) & "/" &
Right(Dates, 2) & "#"
End Function

avec Dates étant un texte de la forme jj/mm/aaaa ....

Je vais chiader la question. Ta réponse semble correspondre à ce que
j'attends.



Dans ton cas, je pense que la fonction CDate() devrait être le plus commode
et le plus tranquille.


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
touriste
> En son temps, François PICALAUSA m'avait indiqué des API pour forcer
l'affichage des nombres décimaux avec un point à 10.5 (par exemple) au lieu
de 10,5

Y a-t-il une API équivalente pour la date ?




Bonjour,

C'est la même sauf que le paramètre passé est pas le même, valeur LCType
et LpLCData.
(les dates j'ai jamais testé)

Private Declare Function SetLocaleInfo& Lib "kernel32" Alias
"SetLocaleInfoA" (ByVal locale As Long, ByVal LCType As Long, ByVal
lpLCData As String)