OVH Cloud OVH Cloud

Transformer champ texte en date

33 réponses
Avatar
Patexocet
Bonjour,


J'ai dans une requ=EAte un champ "Ann=E9e" au format texte qui contient
"2008", un autre champ texte "Mois" qui contient le nom des pois
"mars" par exemple, il n'y a pas de champ "Jour" car la date cr=E9=E9e
sera toujours le premier du mois.

Je veux cr=E9er dans cette requ=EAte un champ MaDate: qui cr=E9=E9e la date
sous la forme 01/03/2008

J'essaye avec Madate: S=E9rieDate ( "01"; [Mois]; [Ann=E9e]) mais sans
succ=E8s.

Merci

10 réponses

1 2 3 4
Avatar
Patexocet
Ca fonctionne mais avec les problémes de mon mail précédent c.a.d. qu e
les enregistrements retournés ne sont pas exacts. Le test avec -1 est
presque bon, il faudrait juste qu'il ne retourne pas 12/2008.

---------------------------------------
Avec 1:

Entre AjDate("m";1;CDate .............................................

Pour une périodicité fin novembre (donc 11) pour 2008, la requête me
retourne les enregistrements des mois suivants:
2/2008 - 3/2008 - 4/2008 - 5/2008 - 6/2008 - 7/2008 - 8/2008 - 9/2008
- 10/2008 - 11/2008 - 12/2008 (pour que ce soit OK elle devrait me
retourner 12/2007 et 01/2008 en plus et 12/2008 en moins)
----------------------------------------
Avec -1

Entre AjDate("m";-1;CDate ............................................

Pour une périodicité fin novembre (donc 11) pour 2008, la requête me
retourne les enregistrements des mois suivants:
12/2007 - 1/2008 - 2/2008 - 3/2008 - 4/2008 - 5/2008 - 6/2008 - 7/2008
- 8/2008 - 9/2008 - 10/2008 - 11/2008 - 12/2008 (pour que ce soit OK
elle devrait me retourner 12/2008 en moins)
--------------------------------------------
Avatar
Michel__D
Re,

Tu a bien remplacer le "/" par un " " ?

CDate("1 " & etc ...

au lieu de

CDate("1/" & etc ...



"Patexocet" a écrit dans le message de
news:
Ca fonctionne mais avec les problémes de mon mail précédent c.a.d. que
les enregistrements retournés ne sont pas exacts. Le test avec -1 est
presque bon, il faudrait juste qu'il ne retourne pas 12/2008.

---------------------------------------
Avec 1:

Entre AjDate("m";1;CDate .............................................

Pour une périodicité fin novembre (donc 11) pour 2008, la requête me
retourne les enregistrements des mois suivants:
2/2008 - 3/2008 - 4/2008 - 5/2008 - 6/2008 - 7/2008 - 8/2008 - 9/2008
- 10/2008 - 11/2008 - 12/2008 (pour que ce soit OK elle devrait me
retourner 12/2007 et 01/2008 en plus et 12/2008 en moins)
----------------------------------------
Avec -1

Entre AjDate("m";-1;CDate ............................................

Pour une périodicité fin novembre (donc 11) pour 2008, la requête me
retourne les enregistrements des mois suivants:
12/2007 - 1/2008 - 2/2008 - 3/2008 - 4/2008 - 5/2008 - 6/2008 - 7/2008
- 8/2008 - 9/2008 - 10/2008 - 11/2008 - 12/2008 (pour que ce soit OK
elle devrait me retourner 12/2008 en moins)
--------------------------------------------
Avatar
Patexocet
Petite remarque: si j'inscris & "/ " & deux fois à la place de & " "
& deux fois, pas de problème, mais ça change rien
si j'inscris CDate("1/" là par contre ça ne
fonctionne plus.

Donc je ne mets plus de / et je pense vraiment qu'on est pas loin de
la solution.

AVEC la requête:

Entre AjDate("m";1;CDate("1" & [Forms]![LeFormulaire]![LeControleMois]
& " " & [Forms]![LeFormulaire]![LeControleAnnee]-1)) Et CDate("1 " &
[Forms]![LeFormulaire]![LeControleMois] & " " & [Forms]![LeFormulaire]!
[LeControleAnnee])

ET 11 comme contrôle mois et 2008 comme contrôle année, la requête
retourne les enregistrements de "février 2007 à janvier 2008" au lieu
de "décembre 2007 à novembre 2008":

1/01/2008
1/12/2007
1/11/2007
1/10/2007
1/09/2007
1/08/2007
1/07/2007
1/06/2007
1/05/2007
1/04/2007
1/03/2007
1/02/2007

Alors qu'il faudrait que ça retourne les enregistrements de:

1/11/2008
1/10/2008
1/09/2008
1/08/2008
1/07/2008
1/06/2008
1/05/2008
1/04/2008
1/03/2008
1/02/2008
1/01/2008
1/12/2007
Avatar
Michel__D
Re,

Tu a bien remplacer le "/" par un " " ?

CDate("1 " & etc ...

au lieu de

CDate("1/" & etc ...

PS:Je vais perdre patience, vérifie tu as oublié un " " (espace)
et non ce n'est pas pareil car :

"1 " & "2" = "1 2"

Alors que

"1" & "2" = "12"


"Patexocet" a écrit dans le message de
news:
Petite remarque: si j'inscris & "/ " & deux fois à la place de & " "
& deux fois, pas de problème, mais ça change rien
si j'inscris CDate("1/" là par contre ça ne
fonctionne plus.

Donc je ne mets plus de / et je pense vraiment qu'on est pas loin de
la solution.

AVEC la requête:

Entre AjDate("m";1;CDate("1" & [Forms]![LeFormulaire]![LeControleMois]
& " " & [Forms]![LeFormulaire]![LeControleAnnee]-1)) Et CDate("1 " &
[Forms]![LeFormulaire]![LeControleMois] & " " & [Forms]![LeFormulaire]!
[LeControleAnnee])

ET 11 comme contrôle mois et 2008 comme contrôle année, la requête
retourne les enregistrements de "février 2007 à janvier 2008" au lieu
de "décembre 2007 à novembre 2008":

1/01/2008
1/12/2007
1/11/2007
1/10/2007
1/09/2007
1/08/2007
1/07/2007
1/06/2007
1/05/2007
1/04/2007
1/03/2007
1/02/2007

Alors qu'il faudrait que ça retourne les enregistrements de:

1/11/2008
1/10/2008
1/09/2008
1/08/2008
1/07/2008
1/06/2008
1/05/2008
1/04/2008
1/03/2008
1/02/2008
1/01/2008
1/12/2007
Avatar
Patexocet
Tout à fait j'ai bien remplacé le "/" par un " " ?
CDate("1 " & etc ...
au lieu de
CDate("1/" & etc ...

Bref j'ai laissé comme à l'origine.

Je viens de changer le mois 11 par 5 histoire de voir et dans ce cas
ça me retourne les enregistrements de février 2008 à décembre 2008 (11
enregistrements) au lieu de juin 2007 à mai 2008 (12 enregistrements).

Te bile pas, je ne suis pas pressé, laisse décanter et si tu vois une
solution ce sera avec grand plaisir. Je te remercie déjà pour tout ce
temps que tu as bien voulu me consacrer.


1/12/2008
1/11/2008
1/10/2008
1/09/2008
1/08/2008
1/07/2008
1/06/2008
1/05/2008
1/04/2008
1/03/2008
1/02/2008
Avatar
Michel__D
Re,

En tout cas ici le "/" n'a pas été remplaçé partout par un " ", regarde bien.

Entre AjDate("m";1;CDate("1" & [Forms]![LeFormulaire]![LeControleMois]
& " " & [Forms]![LeFormulaire]![LeControleAnnee]-1)) Et CDate("1 " &
[Forms]![LeFormulaire]![LeControleMois] & " " & [Forms]![LeFormulaire]!
[LeControleAnnee])




"Patexocet" a écrit dans le message de
news:
Tout à fait j'ai bien remplacé le "/" par un " " ?
CDate("1 " & etc ...
au lieu de
CDate("1/" & etc ...

Bref j'ai laissé comme à l'origine.

Je viens de changer le mois 11 par 5 histoire de voir et dans ce cas
ça me retourne les enregistrements de février 2008 à décembre 2008 (11
enregistrements) au lieu de juin 2007 à mai 2008 (12 enregistrements).

Te bile pas, je ne suis pas pressé, laisse décanter et si tu vois une
solution ce sera avec grand plaisir. Je te remercie déjà pour tout ce
temps que tu as bien voulu me consacrer.


1/12/2008
1/11/2008
1/10/2008
1/09/2008
1/08/2008
1/07/2008
1/06/2008
1/05/2008
1/04/2008
1/03/2008
1/02/2008
Avatar
Patexocet
Re,


Ma vue doit me jouer des tours, car je ne vois pas ou le "/" n'a pas
été remplacé par un " " Dans le code ci-dessous je ne vois aucun /

Entre AjDate("m";1;CDate("1" & [Forms]![LeFormulaire]![LeControleMois]
& " " & [Forms]![LeFormulaire]![LeControleAnnee]-1)) Et CDate("1 " &
[Forms]![LeFormulaire]![LeControleMois] & " " & [Forms]![LeFormulaire]!
[LeControleAnnee])
Avatar
Michel__D
ICI

Entre AjDate("m";1;CDate("1" & ...

il faut écrire

Entre AjDate("m";1;CDate("1 " & ...


"Patexocet" a écrit dans le message de
news:
Re,


Ma vue doit me jouer des tours, car je ne vois pas ou le "/" n'a pas
été remplacé par un " " Dans le code ci-dessous je ne vois aucun /

Entre AjDate("m";1;CDate("1" & [Forms]![LeFormulaire]![LeControleMois]
& " " & [Forms]![LeFormulaire]![LeControleAnnee]-1)) Et CDate("1 " &
[Forms]![LeFormulaire]![LeControleMois] & " " & [Forms]![LeFormulaire]!
[LeControleAnnee])
Avatar
Patexocet
Tu veux dire "1 " et pas "1"

Effectivement, le code ne comportait pas l'espace dans mon Post mais
bien dans Access, de toute manière j'ai testé les deux et ça ne fait
as de différence. Le code ci-dessous est donc rectifié.

Entre AjDate("m";1;CDate("1 " & [Forms]![LeFormulaire]!
[LeControleMois] & " " & [Forms]![LeFormulaire]![LeControleAnnee]-1))
Et CDate("1 " & [Forms]![LeFormulaire]![LeControleMois] & " " &
[Forms]![LeFormulaire]![LeControleAnnee])

Merci.
Avatar
Michel__D
Ok, normalement la requête que je t'ai proposé doit fonctionner.

PS:Et non il n'y a pas à tester les deux possibilitées car sans l'espace tu
enlève le séparateur entre le jour et le mois et cela ne peut donc pas
fournir de bon résultat.


"Patexocet" a écrit dans le message de
news:
Tu veux dire "1 " et pas "1"

Effectivement, le code ne comportait pas l'espace dans mon Post mais
bien dans Access, de toute manière j'ai testé les deux et ça ne fait
as de différence. Le code ci-dessous est donc rectifié.

Entre AjDate("m";1;CDate("1 " & [Forms]![LeFormulaire]!
[LeControleMois] & " " & [Forms]![LeFormulaire]![LeControleAnnee]-1))
Et CDate("1 " & [Forms]![LeFormulaire]![LeControleMois] & " " &
[Forms]![LeFormulaire]![LeControleAnnee])

Merci.
1 2 3 4