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

Problème format de dates

5 réponses
Avatar
Jean-Marc
Salut à tous,

Après avoir fouillé sur les sites habituels sur lesquels je trouve souvent
de l'info (Les sites des mvp), je viens vous poser mon problème.

Il est important de dire que je suis en Access 2000 (Office 2000 pro) sous
XP, parce que Pierre (mvp) a testé ma bdd et cela fonctionne chez lui
(Office XP sous XP).

Le but :
obtenir un état qui fasse le relevé des appels effectués durant une période
donnée.

Les infos :
- une table "contacts" de laquelle sont extraits les noms, prénoms, etc ...
- une table "appels" de laquelle sont extraites les dates et heure d'appel
ainsi que le sujet de l'appel.

Le moyen :
L'ouverture de l'état ouvre un formulaire indépendant dans lequel se
trouvent 2 champs (Date de début et Date de fin). Lorsqu'on appuie sur le
bouton "aperçu", le formulaire se met en invisible, un champs du titre de
l'état stipule la période du relevé et la source de l'état est une la
requête requête sql suivante :
SELECT DISTINCTROW [Contacts].[Prénom], [Contacts].[NomFamille],
[Appels].[DateAppel], [Appels].[Sujet], [Appels].[HeureAppel],
[Contacts].[TélPersonnel] FROM Contacts INNER JOIN Appels ON
[Contacts].[RéfContact]=[Appels].[RéfContact] WHERE
((([Appels].[DateAppel])>=Formulaires![Période de l'état]![Date premier
appel] And ([Appels].[DateAppel])<=Formulaires![Période de l'état]![Date
dernier appel]));

Le problème :
Après l'appui sur le bouton "aperçu", le formulaire est effectivement
invisible mais je reçois 2 messages dans lesquels je dois introduire
respectivement la date de début et la date de fin.
Les messages sont :
Formulaires!Période de l'état![Date premier appel], 1 [Unknown]
avec une fenêtre blanche pour introduire la 1ère date, puis le message
Formulaires!Période de l'état![Date premier appel], 3 [Unknown]
et une autre fenêtre pour la seconde date.

Vous constaterez que dans les 2 cas il écrit PREMIER appel alors que dans le
second message il faut introduite la date de dernier appel.

Les essais :
J'ai essayé de contourner le problème en créant une table dans laquelle le
formulaire stocke les 2 dates de manières à ouvrir l'état sans aller
chercher les infos dans le formulaire. Je précise que PARTOUT (formulaire et
table) les champs avaient la même configuration en matière de date (date
abrégée) et de masque de saisie. Je sais que ce n'est pas très "propre",
mais c'est un essai pour essayer de situer le pbl.
Eh bien ça m'a permis de constater que les mêmes messages reviennent avec le
nom de la table et le champs à la place de "formulaire ...".

Déduction :
Il s'agit bel et bien d'un problème dans les gestion des dates.
Vraisemblablement à un des endroits il ne considère pas les dates comme des
dates mais comme du texte, ou qqch du genre.
Le problème se présente que que soit le format des dates (00/00/0000 ou
00-00-0000). Rien ne change non plus si je change les options régionales en
mode américain, européen ou canadien. Le problème est toujours le même.

Souvenir :
Je me souviens avoir eu ce genre de pbl en Access 97 et je me souvient que
je mettais qqch avant le champs date, style quelquechose([champsDate]).

Question :
Est-ce que qqn a eu ce pbl et l'a résolu ? Si oui, comment ?
Est-ce que qqn se sait par quoi je dois remplacer mon quelquechose() du
paragraphe Souvenir ? Si oui, que dois-je mettre ?

Merci de vos z'avis z'avisés,

JM

PS : Si qq a la même config (Office 2000 sous XP) et est tenté par l'essai
de la bdd, elle est zippée et pèses 352Kb. Donnez moi une adresse et je
l'envois.

5 réponses

Avatar
Eric
Bonsoir J-M,
je suis dans la meme config que toi donc tu peux m'envoyer
ca çà :

Suis ok pour un test
A+


-----Message d'origine-----
Salut à tous,

Après avoir fouillé sur les sites habituels sur lesquels
je trouve souvent

de l'info (Les sites des mvp), je viens vous poser mon
problème.


Il est important de dire que je suis en Access 2000
(Office 2000 pro) sous

XP, parce que Pierre (mvp) a testé ma bdd et cela
fonctionne chez lui

(Office XP sous XP).

Le but :
obtenir un état qui fasse le relevé des appels effectués
durant une période

donnée.

Les infos :
- une table "contacts" de laquelle sont extraits les
noms, prénoms, etc ...

- une table "appels" de laquelle sont extraites les dates
et heure d'appel

ainsi que le sujet de l'appel.

Le moyen :
L'ouverture de l'état ouvre un formulaire indépendant
dans lequel se

trouvent 2 champs (Date de début et Date de fin).
Lorsqu'on appuie sur le

bouton "aperçu", le formulaire se met en invisible, un
champs du titre de

l'état stipule la période du relevé et la source de
l'état est une la

requête requête sql suivante :
SELECT DISTINCTROW [Contacts].[Prénom], [Contacts].
[NomFamille],

[Appels].[DateAppel], [Appels].[Sujet], [Appels].
[HeureAppel],

[Contacts].[TélPersonnel] FROM Contacts INNER JOIN Appels
ON

[Contacts].[RéfContact]=[Appels].[RéfContact] WHERE
((([Appels].[DateAppel])>=Formulaires![Période de l'état]!
[Date premier

appel] And ([Appels].[DateAppel])<=Formulaires![Période
de l'état]![Date

dernier appel]));

Le problème :
Après l'appui sur le bouton "aperçu", le formulaire est
effectivement

invisible mais je reçois 2 messages dans lesquels je dois
introduire

respectivement la date de début et la date de fin.
Les messages sont :
Formulaires!Période de l'état![Date premier appel], 1
[Unknown]

avec une fenêtre blanche pour introduire la 1ère date,
puis le message

Formulaires!Période de l'état![Date premier appel], 3
[Unknown]

et une autre fenêtre pour la seconde date.

Vous constaterez que dans les 2 cas il écrit PREMIER
appel alors que dans le

second message il faut introduite la date de dernier
appel.


Les essais :
J'ai essayé de contourner le problème en créant une table
dans laquelle le

formulaire stocke les 2 dates de manières à ouvrir l'état
sans aller

chercher les infos dans le formulaire. Je précise que
PARTOUT (formulaire et

table) les champs avaient la même configuration en
matière de date (date

abrégée) et de masque de saisie. Je sais que ce n'est pas
très "propre",

mais c'est un essai pour essayer de situer le pbl.
Eh bien ça m'a permis de constater que les mêmes messages
reviennent avec le

nom de la table et le champs à la place
de "formulaire ...".


Déduction :
Il s'agit bel et bien d'un problème dans les gestion des
dates.

Vraisemblablement à un des endroits il ne considère pas
les dates comme des

dates mais comme du texte, ou qqch du genre.
Le problème se présente que que soit le format des dates
(00/00/0000 ou

00-00-0000). Rien ne change non plus si je change les
options régionales en

mode américain, européen ou canadien. Le problème est
toujours le même.


Souvenir :
Je me souviens avoir eu ce genre de pbl en Access 97 et
je me souvient que

je mettais qqch avant le champs date, style quelquechose
([champsDate]).


Question :
Est-ce que qqn a eu ce pbl et l'a résolu ? Si oui,
comment ?

Est-ce que qqn se sait par quoi je dois remplacer mon
quelquechose() du

paragraphe Souvenir ? Si oui, que dois-je mettre ?

Merci de vos z'avis z'avisés,

JM

PS : Si qq a la même config (Office 2000 sous XP) et est
tenté par l'essai

de la bdd, elle est zippée et pèses 352Kb. Donnez moi une
adresse et je

l'envois.


.



Avatar
Pierre CFI [mvp]
bonjour
tiens nous au courant, çà m'interresse bigrement cette affaire

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans le message de news: c1a401c3ecee$eafa9c50$
Bonsoir J-M,
je suis dans la meme config que toi donc tu peux m'envoyer
ca çà :

Suis ok pour un test
A+


-----Message d'origine-----
Salut à tous,

Après avoir fouillé sur les sites habituels sur lesquels
je trouve souvent

de l'info (Les sites des mvp), je viens vous poser mon
problème.


Il est important de dire que je suis en Access 2000
(Office 2000 pro) sous

XP, parce que Pierre (mvp) a testé ma bdd et cela
fonctionne chez lui

(Office XP sous XP).

Le but :
obtenir un état qui fasse le relevé des appels effectués
durant une période

donnée.

Les infos :
- une table "contacts" de laquelle sont extraits les
noms, prénoms, etc ...

- une table "appels" de laquelle sont extraites les dates
et heure d'appel

ainsi que le sujet de l'appel.

Le moyen :
L'ouverture de l'état ouvre un formulaire indépendant
dans lequel se

trouvent 2 champs (Date de début et Date de fin).
Lorsqu'on appuie sur le

bouton "aperçu", le formulaire se met en invisible, un
champs du titre de

l'état stipule la période du relevé et la source de
l'état est une la

requête requête sql suivante :
SELECT DISTINCTROW [Contacts].[Prénom], [Contacts].
[NomFamille],

[Appels].[DateAppel], [Appels].[Sujet], [Appels].
[HeureAppel],

[Contacts].[TélPersonnel] FROM Contacts INNER JOIN Appels
ON

[Contacts].[RéfContact]=[Appels].[RéfContact] WHERE
((([Appels].[DateAppel])>=Formulaires![Période de l'état]!
[Date premier

appel] And ([Appels].[DateAppel])<=Formulaires![Période
de l'état]![Date

dernier appel]));

Le problème :
Après l'appui sur le bouton "aperçu", le formulaire est
effectivement

invisible mais je reçois 2 messages dans lesquels je dois
introduire

respectivement la date de début et la date de fin.
Les messages sont :
Formulaires!Période de l'état![Date premier appel], 1
[Unknown]

avec une fenêtre blanche pour introduire la 1ère date,
puis le message

Formulaires!Période de l'état![Date premier appel], 3
[Unknown]

et une autre fenêtre pour la seconde date.

Vous constaterez que dans les 2 cas il écrit PREMIER
appel alors que dans le

second message il faut introduite la date de dernier
appel.


Les essais :
J'ai essayé de contourner le problème en créant une table
dans laquelle le

formulaire stocke les 2 dates de manières à ouvrir l'état
sans aller

chercher les infos dans le formulaire. Je précise que
PARTOUT (formulaire et

table) les champs avaient la même configuration en
matière de date (date

abrégée) et de masque de saisie. Je sais que ce n'est pas
très "propre",

mais c'est un essai pour essayer de situer le pbl.
Eh bien ça m'a permis de constater que les mêmes messages
reviennent avec le

nom de la table et le champs à la place
de "formulaire ...".


Déduction :
Il s'agit bel et bien d'un problème dans les gestion des
dates.

Vraisemblablement à un des endroits il ne considère pas
les dates comme des

dates mais comme du texte, ou qqch du genre.
Le problème se présente que que soit le format des dates
(00/00/0000 ou

00-00-0000). Rien ne change non plus si je change les
options régionales en

mode américain, européen ou canadien. Le problème est
toujours le même.


Souvenir :
Je me souviens avoir eu ce genre de pbl en Access 97 et
je me souvient que

je mettais qqch avant le champs date, style quelquechose
([champsDate]).


Question :
Est-ce que qqn a eu ce pbl et l'a résolu ? Si oui,
comment ?

Est-ce que qqn se sait par quoi je dois remplacer mon
quelquechose() du

paragraphe Souvenir ? Si oui, que dois-je mettre ?

Merci de vos z'avis z'avisés,

JM

PS : Si qq a la même config (Office 2000 sous XP) et est
tenté par l'essai

de la bdd, elle est zippée et pèses 352Kb. Donnez moi une
adresse et je

l'envois.


.



Avatar
Eric
Bonjour Pierre

Son organisation :
Ouverture d'un état (Statistiques appels hebdo) ayant pour
source une requête paramétrée sur des champs de formulaire
(Période de l'état) non encore ouvert, car il est open
APRES ouverture de l'état. Donc, malgré l'ouverture du
formulaire, Access a besoin antérieurement de connaitre
les paramètres d'ouverture de la requête, source de
données de l'état d'où les 2 msgbox de demande de
paramètres.

La modif : (il y a peut-être mieux à faire)
j'ai mis un critère "bidon" du genre between #01/02/04#
et #04/02/04# sur son champ DateAppel de la requête
d'ouverture de l'état. Dans sa proc d'ouverture d'état,
celui-ci se masque et lance le formulaire. Il saisit les
dates à sa convenance et sur la proc Aperçu_click du form
Période de l'état, j'ai redéfini les paramètres de la req
source de son état avec les champs saisis du formulaire,
puis je montre son état.

Ca donne qq chose du genre :
Private Sub Aperçu_Click()
If IsNull([Date premier appel]) Or IsNull([Date
dernier appel]) Then
MsgBox "Vous devez taper une date de début et une
date de fin."
DoCmd.GoToControl "Date premier appel"
Else
If [Date premier appel] > [Date dernier appel] Then
MsgBox "La date de fin doit être postérieure à
la date de début."
DoCmd.GoToControl "Date premier appel"
Else
Me.Visible = False
End If
End If
' Définition du SQL de l'état et affichage de l'état
' l'état est déjà ouvert et masqué, donc on peut
modifier ses propriétés.
Dim e As Report, SQL As String
Set e = Reports![Statistiques appels hebdo]
SQL = SQL & "SELECT DISTINCTROW [Contacts].[Prénom],
[Contacts].[NomFamille], [Appels].[DateAppel], "
SQL = SQL & "[Appels].[Sujet], [Appels].[HeureAppel],
[Contacts].[TélPersonnel] "
SQL = SQL & "FROM Contacts INNER JOIN Appels ON
[Contacts].[réfContact]=[Appels].[RéfContact] "
SQL = SQL & "WHERE [Appels].[DateAppel] Between #" &
Me![Date premier appel] & "# And #"
SQL = SQL & Me![Date dernier appel] & "#; "
' Affectation du SQL à l'état Statistiques appels hebdo
e.RecordSource = SQL
e.Visible = True
End Sub

Voila

A+
Eric
-----Message d'origine-----
bonjour
tiens nous au courant, çà m'interresse bigrement cette
affaire


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr


Avatar
Pierre CFI [mvp]
le probléme est que j'ai pas de problem pour l'ouvrir , je suis sous xp

mais en fait, il ne faut pas que ce soit l'état qui ouvre le form, mais le form qui ouvre l'état
et le pb est réglé
il n'empéche que je ne comprends pas pourquoi çà marche ici

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans le message de news: c22201c3ed5d$2cfdd540$
Bonjour Pierre

Son organisation :
Ouverture d'un état (Statistiques appels hebdo) ayant pour
source une requête paramétrée sur des champs de formulaire
(Période de l'état) non encore ouvert, car il est open
APRES ouverture de l'état. Donc, malgré l'ouverture du
formulaire, Access a besoin antérieurement de connaitre
les paramètres d'ouverture de la requête, source de
données de l'état d'où les 2 msgbox de demande de
paramètres.

La modif : (il y a peut-être mieux à faire)
j'ai mis un critère "bidon" du genre between #01/02/04#
et #04/02/04# sur son champ DateAppel de la requête
d'ouverture de l'état. Dans sa proc d'ouverture d'état,
celui-ci se masque et lance le formulaire. Il saisit les
dates à sa convenance et sur la proc Aperçu_click du form
Période de l'état, j'ai redéfini les paramètres de la req
source de son état avec les champs saisis du formulaire,
puis je montre son état.

Ca donne qq chose du genre :
Private Sub Aperçu_Click()
If IsNull([Date premier appel]) Or IsNull([Date
dernier appel]) Then
MsgBox "Vous devez taper une date de début et une
date de fin."
DoCmd.GoToControl "Date premier appel"
Else
If [Date premier appel] > [Date dernier appel] Then
MsgBox "La date de fin doit être postérieure à
la date de début."
DoCmd.GoToControl "Date premier appel"
Else
Me.Visible = False
End If
End If
' Définition du SQL de l'état et affichage de l'état
' l'état est déjà ouvert et masqué, donc on peut
modifier ses propriétés.
Dim e As Report, SQL As String
Set e = Reports![Statistiques appels hebdo]
SQL = SQL & "SELECT DISTINCTROW [Contacts].[Prénom],
[Contacts].[NomFamille], [Appels].[DateAppel], "
SQL = SQL & "[Appels].[Sujet], [Appels].[HeureAppel],
[Contacts].[TélPersonnel] "
SQL = SQL & "FROM Contacts INNER JOIN Appels ON
[Contacts].[réfContact]=[Appels].[RéfContact] "
SQL = SQL & "WHERE [Appels].[DateAppel] Between #" &
Me![Date premier appel] & "# And #"
SQL = SQL & Me![Date dernier appel] & "#; "
' Affectation du SQL à l'état Statistiques appels hebdo
e.RecordSource = SQL
e.Visible = True
End Sub

Voila

A+
Eric
-----Message d'origine-----
bonjour
tiens nous au courant, çà m'interresse bigrement cette
affaire


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr


Avatar
Jean-Marc
Merci à tous les 2 pour l'aide précieuse que vous m'avez apportée.
Je comprend les arguments que vous avez avancés tous les 2, mais visiblement
c'est mon but qui n'a pas été compris, ou moi qui n'ai pas été assez clair.
En réalité, il y a différents états de ce type qui devront être créés, et
c'est pour éviter une profusions de formulaires identiques mais uniquement
dédiés à un seul état que je voulais utiliser cette méthode. L'état
s'ouvrant, il ouvre un formulaire unique de définition de dates tout en lui
envoyant des arguments typiques à l'état en cours. Ensuite retour à l'état
pour gestion des données suivant les dates définies dans le form. C'est la
raison pour laquelle j'essaye de mettre le code dans l'état et non dans le
form.
Partant du principe que je ne peux pas définir mon SQL avant l'ouverture du
formulaire, voyez vous un moyen de le définir APRES que le formulaire ne
devienne invisible ?

JM

"Pierre CFI [mvp]" a écrit dans le message de
news:%
le probléme est que j'ai pas de problem pour l'ouvrir , je suis sous xp

mais en fait, il ne faut pas que ce soit l'état qui ouvre le form, mais le
form qui ouvre l'état

et le pb est réglé
il n'empéche que je ne comprends pas pourquoi çà marche ici

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Eric" a écrit dans le message de
news: c22201c3ed5d$2cfdd540$

Bonjour Pierre

Son organisation :
Ouverture d'un état (Statistiques appels hebdo) ayant pour
source une requête paramétrée sur des champs de formulaire
(Période de l'état) non encore ouvert, car il est open
APRES ouverture de l'état. Donc, malgré l'ouverture du
formulaire, Access a besoin antérieurement de connaitre
les paramètres d'ouverture de la requête, source de
données de l'état d'où les 2 msgbox de demande de
paramètres.

La modif : (il y a peut-être mieux à faire)
j'ai mis un critère "bidon" du genre between #01/02/04#
et #04/02/04# sur son champ DateAppel de la requête
d'ouverture de l'état. Dans sa proc d'ouverture d'état,
celui-ci se masque et lance le formulaire. Il saisit les
dates à sa convenance et sur la proc Aperçu_click du form
Période de l'état, j'ai redéfini les paramètres de la req
source de son état avec les champs saisis du formulaire,
puis je montre son état.

Ca donne qq chose du genre :
Private Sub Aperçu_Click()
If IsNull([Date premier appel]) Or IsNull([Date
dernier appel]) Then
MsgBox "Vous devez taper une date de début et une
date de fin."
DoCmd.GoToControl "Date premier appel"
Else
If [Date premier appel] > [Date dernier appel] Then
MsgBox "La date de fin doit être postérieure à
la date de début."
DoCmd.GoToControl "Date premier appel"
Else
Me.Visible = False
End If
End If
' Définition du SQL de l'état et affichage de l'état
' l'état est déjà ouvert et masqué, donc on peut
modifier ses propriétés.
Dim e As Report, SQL As String
Set e = Reports![Statistiques appels hebdo]
SQL = SQL & "SELECT DISTINCTROW [Contacts].[Prénom],
[Contacts].[NomFamille], [Appels].[DateAppel], "
SQL = SQL & "[Appels].[Sujet], [Appels].[HeureAppel],
[Contacts].[TélPersonnel] "
SQL = SQL & "FROM Contacts INNER JOIN Appels ON
[Contacts].[réfContact]=[Appels].[RéfContact] "
SQL = SQL & "WHERE [Appels].[DateAppel] Between #" &
Me![Date premier appel] & "# And #"
SQL = SQL & Me![Date dernier appel] & "#; "
' Affectation du SQL à l'état Statistiques appels hebdo
e.RecordSource = SQL
e.Visible = True
End Sub

Voila

A+
Eric
-----Message d'origine-----
bonjour
tiens nous au courant, çà m'interresse bigrement cette
affaire


--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr