OVH Cloud OVH Cloud

Tri date dans sous-formulaire

3 réponses
Avatar
Brigitte
Bonjour à tous!

Voila mon soucis:
Dans un formulaire j'ai 2 champs indépendants datapicker (calendrier) début
et fin.
Dans le sous formaulaire (basé sur une requete) j'ai différents champ dont 1
champ date et je souhaiterai afficher les informations dont la date est
comprise entre mes valeurs Début et Fin de mon formulaire. Pour cela
j'utilise le code suivant:

Private Sub Actualiser_Click()
Dim formulaire As Form, S As String

Set formulaire = Forms![PointageParService_3CF]

S = "SELECT [Rque_PointageService_3CF].*"
S = S & " FROM [Rque_PointageService_3CF] "
S = S & "WHERE "
S = S & "[Rque_PointageService_3CF].[Date] >= # " &
Format(Forms![PointageParService_3CF]![DateDebut].Value, "DD/MM/YYYY") & " #
And "
S = S & "[Rque_PointageService_3CF].[Date] <= # " &
Format(Forms![PointageParService_3CF]![DateFin].Value, "DD/MM/YYYY") & " # ;
"
Forms![PointageParService_3CF]![Rque_PointageService_3CF
sous-formulaire].Form.RecordSource = S
MsgBox S
Me.Refresh

End Sub

Comme vous le voyez j'utilise les opérateurs inférieur et EGAL et supérieur
et EGAL.
Le code fonctionne si je mets début = 01/03/2006 et Fin=03/03/2006 mais ne
fonctionne pas si je mets début = 01/03/2006 et Fin=02/03/2006. Je ne
comprends pas pourquoi, on dirait qu'il faut 1 jour de séparation entre les
2 champs, ou alors le pbe vient de l'activeX dataPicker?. Dans mon premier
cas il affiche bien les informations du 01/03/2006 et du 03/03/2006, dont
c'est qu'il prend bien en compte le égale.

Merci de votre aide!

@+ Brigitte

3 réponses

Avatar
Tisane
Bonjour Brigitte,

Le code fonctionne si je mets début = 01/03/2006 et Fin/03/2006 mais ne
fonctionne pas si je mets début = 01/03/2006 et Fin/03/2006. Je ne
comprends pas pourquoi, on dirait qu'il faut 1 jour de séparation entre
les
2 champs, ou alors le pbe vient de l'activeX dataPicker?. Dans mon premier
cas il affiche bien les informations du 01/03/2006 et du 03/03/2006, dont
c'est qu'il prend bien en compte le égale.


Le format des champs est-il dd/mm/yyyy hh:nn:ss ?
Autrement dit, si l'heure est prise en compte il faut aussi la prévoir dans
ton code.

--
Tisane

"Brigitte" a écrit dans le message de news:

Bonjour à tous!

Voila mon soucis:
Dans un formulaire j'ai 2 champs indépendants datapicker (calendrier)
début
et fin.
Dans le sous formaulaire (basé sur une requete) j'ai différents champ dont
1
champ date et je souhaiterai afficher les informations dont la date est
comprise entre mes valeurs Début et Fin de mon formulaire. Pour cela
j'utilise le code suivant:

Private Sub Actualiser_Click()
Dim formulaire As Form, S As String

Set formulaire = Forms![PointageParService_3CF]

S = "SELECT [Rque_PointageService_3CF].*"
S = S & " FROM [Rque_PointageService_3CF] "
S = S & "WHERE "
S = S & "[Rque_PointageService_3CF].[Date] >= # " &
Format(Forms![PointageParService_3CF]![DateDebut].Value, "DD/MM/YYYY") & "
#
And "
S = S & "[Rque_PointageService_3CF].[Date] <= # " &
Format(Forms![PointageParService_3CF]![DateFin].Value, "DD/MM/YYYY") & " #
;
"
Forms![PointageParService_3CF]![Rque_PointageService_3CF
sous-formulaire].Form.RecordSource = S
MsgBox S
Me.Refresh

End Sub

Comme vous le voyez j'utilise les opérateurs inférieur et EGAL et
supérieur
et EGAL.
Le code fonctionne si je mets début = 01/03/2006 et Fin/03/2006 mais ne
fonctionne pas si je mets début = 01/03/2006 et Fin/03/2006. Je ne
comprends pas pourquoi, on dirait qu'il faut 1 jour de séparation entre
les
2 champs, ou alors le pbe vient de l'activeX dataPicker?. Dans mon premier
cas il affiche bien les informations du 01/03/2006 et du 03/03/2006, dont
c'est qu'il prend bien en compte le égale.

Merci de votre aide!

@+ Brigitte




Avatar
Gilles MOUGNOZ
Bonjour Brigitte,
Le format des champs est-il dd/mm/yyyy hh:nn:ss ?
Autrement dit, si l'heure est prise en compte il faut aussi la prévoir
dans ton code.
--
Tisane


Bonjour à tou(te)s

J'ajouterai que, dans les requêtes SQL, pour éviter les surprises, il est
préférable d'utiliser le format américain, à savoir:
mm/dd/yyyy ( + hh:nn:ss si besoin).
De plus, il existe un opérateur qui permet de dire "entre telle et telle
dates":
SQL = "SELECT * FROM TATABLE WHERE DATE BETWEEN " & _
format(date1,"mm/dd/yyyy hh:nn:ss") & " AND " & format(date1,"mm/dd/yyyy
hh:nn:ss")

Bonne continuation

Avatar
Brigitte
Merci beaucoup pour vos réponse mais finalement j'ai masqué des champs
simple qui ne contienne que l'heure et ça marche mais merci, je ne
connaissais pas l'instruction between

@+ Brigitte

"Gilles MOUGNOZ" a écrit dans le message de
news:
Bonjour Brigitte,
Le format des champs est-il dd/mm/yyyy hh:nn:ss ?
Autrement dit, si l'heure est prise en compte il faut aussi la prévoir
dans ton code.
--
Tisane


Bonjour à tou(te)s

J'ajouterai que, dans les requêtes SQL, pour éviter les surprises, il est
préférable d'utiliser le format américain, à savoir:
mm/dd/yyyy ( + hh:nn:ss si besoin).
De plus, il existe un opérateur qui permet de dire "entre telle et telle
dates":
SQL = "SELECT * FROM TATABLE WHERE DATE BETWEEN " & _
format(date1,"mm/dd/yyyy hh:nn:ss") & " AND " &
format(date1,"mm/dd/yyyy

hh:nn:ss")

Bonne continuation