OVH Cloud OVH Cloud

Faire varier le contenu de la zone détail d'un form.

5 réponses
Avatar
vox95
Bonsoir à tous,

J'ai un formulaire avec en ligne des tranches horaires et en colonne les
jours de la semaine (lundi ...)
Je voudrai qu'à partir d'une zone de liste modifiable "Semaine", dans
l'entête du formulaire,faire s'afficher dans la section détail mes infos
mais uniquement sur la semaine choisie dans la liste modifiable.

Merci de votre assistance,

Vox95

5 réponses

Avatar
Rv
Salut,

Il faudrait plus d'information pour répondre:
- Y a t'il une ou plusieurs tables contenant les données du formulaire?
- Quelle est la structure de cette (ces) table(s) ?
- Quelle est la source de donnée du formulaire?
- Actuellement le formulaire affiche plusieurs semaines, est-ce à dire
que les colonnes du formulaire sont dynamiques ou y a t'il seulement 7
colonnes pour les 7 jours de la semaine et dans ce cas comment differencie
t'on les différentes semaines?

A+

Rv

"vox95" <dw.linux(nospam)@wanadoo.fr> a écrit dans le message de
news:
Bonsoir à tous,

J'ai un formulaire avec en ligne des tranches horaires et en colonne les
jours de la semaine (lundi ...)
Je voudrai qu'à partir d'une zone de liste modifiable "Semaine", dans
l'entête du formulaire,faire s'afficher dans la section détail mes infos
mais uniquement sur la semaine choisie dans la liste modifiable.

Merci de votre assistance,

Vox95




Avatar
vox95
Re...

En fait le formulaire (type Formulaires continus) est basé sur 2 tables
HEURES et RDV.
Dans la première, je n'ai que 2 champs pour les plages horaires.La seconde
contient les champs date,semaine,heure de début, heur de fin et un champ
animal.
Le formulaire, est issu de la requête:
TRANSFORM First(IIf([HDebut]<[dd] And [HFin]>[df] Or [HDebut]>=[DD] And
[HDebut]<[DF] Or [HFin]>[DD] And [HFin]<=[DF],[Animal],"")) AS Expr2
SELECT HEURES.DD, HEURES.DF, RDV.Semaine
FROM HEURES, RDV
WHERE (((RDV.Semaine)=[Semaine recherchée ]))
GROUP BY HEURES.DD, HEURES.DF, RDV.Semaine
PIVOT
Choose(Weekday([Date]),"dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi")
In ("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");

Pour que mon form s'affiche par semaine, je suis obligé d'utiliser:
WHERE (((RDV.Semaine)=[Semaine recherchée ]))
dans la requête pour "trier".

Ce que je voudrai faire c'est supprimer le WHERE (((RDV.Semaine)=[Semaine
recherchée ])) pour générer le formulaire mais en faisant un tri par semaine
en utilisant une zone de liste déroulante contenant mes semaines et qu'en
fonction de la semaine alors sélectionnée, le form affiche la semaine
concernée et seulement celle là.

Bref en relisant tout ça, il me vient une idée:
Ne faut-il pas dans la requête remplacer WHERE (((RDV.Semaine)=[Semaine
recherchée ])) par un truc du genre WHERE
(((RDV.Semaine)=Form!MonForm.[Valeur_renvoyée_par_ZoneDeListeModifiable])) ,
Valeur_renvoyée_par_ZoneDeListeModifiable étant à l'ouverture la semaine en
cours par défaut ?

Ce que j'essaie de faire en fait c'et un calendrier à l'envers....!!!!


--
Merci et @+

Vox95.



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

Salut,

Il faudrait plus d'information pour répondre:
- Y a t'il une ou plusieurs tables contenant les données du formulaire?
- Quelle est la structure de cette (ces) table(s) ?
- Quelle est la source de donnée du formulaire?
- Actuellement le formulaire affiche plusieurs semaines, est-ce à dire
que les colonnes du formulaire sont dynamiques ou y a t'il seulement 7
colonnes pour les 7 jours de la semaine et dans ce cas comment differencie
t'on les différentes semaines?

A+

Rv

"vox95" <dw.linux(nospam)@wanadoo.fr> a écrit dans le message de
news:
Bonsoir à tous,

J'ai un formulaire avec en ligne des tranches horaires et en colonne les
jours de la semaine (lundi ...)
Je voudrai qu'à partir d'une zone de liste modifiable "Semaine", dans
l'entête du formulaire,faire s'afficher dans la section détail mes infos
mais uniquement sur la semaine choisie dans la liste modifiable.

Merci de votre assistance,

Vox95








Avatar
Rv
Oui! Rendre la requête dynamique en jouant sur la clause WHERE semble être
la bonne solution. Dans ce cas une solution est de construire la requête et
de définir la source du formulaire avec cette requête via le code. En
supposant que la liste des semaines s'appelle lstSemaine cela pourrait
donner quelque chose du genre:

' Sur modification de la liste des semaines
Sub lstSemaine_AfterUpdate()
Call majSourceForm(lstSemaine.value)
End Sub

' Mise à jour de la source du formulaire
Sub majSourceForm(numSemaine as long)
dim strSource as String

strSource = "TRANSFORM First(IIf([HDebut]<[dd] And [HFin]>[df] Or
[HDebut]>=[DD] And [HDebut]<[DF] Or [HFin]>[DD] And
[HFin]<=[DF],[Animal],"''")) AS Expr2 " & _
" SELECT HEURES.DD, HEURES.DF, RDV.Semaine " & _
" FROM HEURES, RDV " & _
" WHERE RDV.Semaine " & numSemaine & " " & _
" GROUP BY HEURES.DD, HEURES.DF, RDV.Semaine " & _
" PIVOT " & _
"
Choose(Weekday([Date]),'dimanche','lundi','mardi','mercredi','jeudi','vendre
di','samedi') " & _
" In
('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche')'
Me.RecordSource = strSource
End Sub


A+

Rv

"vox95" <dw.linux(nospam)@wanadoo.fr> a écrit dans le message de
news:
Re...

En fait le formulaire (type Formulaires continus) est basé sur 2 tables
HEURES et RDV.
Dans la première, je n'ai que 2 champs pour les plages horaires.La seconde
contient les champs date,semaine,heure de début, heur de fin et un champ
animal.
Le formulaire, est issu de la requête:
TRANSFORM First(IIf([HDebut]<[dd] And [HFin]>[df] Or [HDebut]>=[DD] And
[HDebut]<[DF] Or [HFin]>[DD] And [HFin]<=[DF],[Animal],"")) AS Expr2
SELECT HEURES.DD, HEURES.DF, RDV.Semaine
FROM HEURES, RDV
WHERE (((RDV.Semaine)=[Semaine recherchée ]))
GROUP BY HEURES.DD, HEURES.DF, RDV.Semaine
PIVOT

Choose(Weekday([Date]),"dimanche","lundi","mardi","mercredi","jeudi","vendre

di","samedi")
In ("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");

Pour que mon form s'affiche par semaine, je suis obligé d'utiliser:
WHERE (((RDV.Semaine)=[Semaine recherchée ]))
dans la requête pour "trier".

Ce que je voudrai faire c'est supprimer le WHERE (((RDV.Semaine)=[Semaine
recherchée ])) pour générer le formulaire mais en faisant un tri par
semaine

en utilisant une zone de liste déroulante contenant mes semaines et qu'en
fonction de la semaine alors sélectionnée, le form affiche la semaine
concernée et seulement celle là.

Bref en relisant tout ça, il me vient une idée:
Ne faut-il pas dans la requête remplacer WHERE (((RDV.Semaine)=[Semaine
recherchée ])) par un truc du genre WHERE
(((RDV.Semaine)=Form!MonForm.[Valeur_renvoyée_par_ZoneDeListeModifiable]))
,

Valeur_renvoyée_par_ZoneDeListeModifiable étant à l'ouverture la semaine
en

cours par défaut ?

Ce que j'essaie de faire en fait c'et un calendrier à l'envers....!!!!


--
Merci et @+

Vox95.



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

Salut,

Il faudrait plus d'information pour répondre:
- Y a t'il une ou plusieurs tables contenant les données du
formulaire?


- Quelle est la structure de cette (ces) table(s) ?
- Quelle est la source de donnée du formulaire?
- Actuellement le formulaire affiche plusieurs semaines, est-ce à
dire


que les colonnes du formulaire sont dynamiques ou y a t'il seulement 7
colonnes pour les 7 jours de la semaine et dans ce cas comment
differencie


t'on les différentes semaines?

A+

Rv

"vox95" <dw.linux(nospam)@wanadoo.fr> a écrit dans le message de
news:
Bonsoir à tous,

J'ai un formulaire avec en ligne des tranches horaires et en colonne
les



jours de la semaine (lundi ...)
Je voudrai qu'à partir d'une zone de liste modifiable "Semaine", dans
l'entête du formulaire,faire s'afficher dans la section détail mes
infos



mais uniquement sur la semaine choisie dans la liste modifiable.

Merci de votre assistance,

Vox95












Avatar
vox95
Re Re ...
La solution semble coller.
Toutefois j'ai un petit problème:
Lorsque je positionne ma listBox sur une valeur, 47 par exemple, j'ai une
erreur d'execution et en mode débogage, & numSemaine & renvoie bien 47 mais
Me.RecordSource = "".

Bref ça me laisse sur ma faim pour ce soir!

--
Merci et @+

Vox95.



"Rv" a écrit dans le message de news:
%
Oui! Rendre la requête dynamique en jouant sur la clause WHERE semble être
la bonne solution. Dans ce cas une solution est de construire la requête
et
de définir la source du formulaire avec cette requête via le code. En
supposant que la liste des semaines s'appelle lstSemaine cela pourrait
donner quelque chose du genre:

' Sur modification de la liste des semaines
Sub lstSemaine_AfterUpdate()
Call majSourceForm(lstSemaine.value)
End Sub

' Mise à jour de la source du formulaire
Sub majSourceForm(numSemaine as long)
dim strSource as String

strSource = "TRANSFORM First(IIf([HDebut]<[dd] And [HFin]>[df] Or
[HDebut]>=[DD] And [HDebut]<[DF] Or [HFin]>[DD] And
[HFin]<=[DF],[Animal],"''")) AS Expr2 " & _
" SELECT HEURES.DD, HEURES.DF, RDV.Semaine " & _
" FROM HEURES, RDV " & _
" WHERE RDV.Semaine " & numSemaine & " " & _
" GROUP BY HEURES.DD, HEURES.DF, RDV.Semaine " & _
" PIVOT " & _
"
Choose(Weekday([Date]),'dimanche','lundi','mardi','mercredi','jeudi','vendre
di','samedi') " & _
" In
('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche')'
Me.RecordSource = strSource
End Sub


A+

Rv

"vox95" <dw.linux(nospam)@wanadoo.fr> a écrit dans le message de
news:
Re...

En fait le formulaire (type Formulaires continus) est basé sur 2 tables
HEURES et RDV.
Dans la première, je n'ai que 2 champs pour les plages horaires.La
seconde
contient les champs date,semaine,heure de début, heur de fin et un champ
animal.
Le formulaire, est issu de la requête:
TRANSFORM First(IIf([HDebut]<[dd] And [HFin]>[df] Or [HDebut]>=[DD] And
[HDebut]<[DF] Or [HFin]>[DD] And [HFin]<=[DF],[Animal],"")) AS Expr2
SELECT HEURES.DD, HEURES.DF, RDV.Semaine
FROM HEURES, RDV
WHERE (((RDV.Semaine)=[Semaine recherchée ]))
GROUP BY HEURES.DD, HEURES.DF, RDV.Semaine
PIVOT

Choose(Weekday([Date]),"dimanche","lundi","mardi","mercredi","jeudi","vendre

di","samedi")
In ("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");

Pour que mon form s'affiche par semaine, je suis obligé d'utiliser:
WHERE (((RDV.Semaine)=[Semaine recherchée ]))
dans la requête pour "trier".

Ce que je voudrai faire c'est supprimer le WHERE (((RDV.Semaine)=[Semaine
recherchée ])) pour générer le formulaire mais en faisant un tri par
semaine

en utilisant une zone de liste déroulante contenant mes semaines et qu'en
fonction de la semaine alors sélectionnée, le form affiche la semaine
concernée et seulement celle là.

Bref en relisant tout ça, il me vient une idée:
Ne faut-il pas dans la requête remplacer WHERE (((RDV.Semaine)=[Semaine
recherchée ])) par un truc du genre WHERE
(((RDV.Semaine)=Form!MonForm.[Valeur_renvoyée_par_ZoneDeListeModifiable]))
,

Valeur_renvoyée_par_ZoneDeListeModifiable étant à l'ouverture la semaine
en

cours par défaut ?

Ce que j'essaie de faire en fait c'et un calendrier à l'envers....!!!!


--
Merci et @+

Vox95.



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

Salut,

Il faudrait plus d'information pour répondre:
- Y a t'il une ou plusieurs tables contenant les données du
formulaire?


- Quelle est la structure de cette (ces) table(s) ?
- Quelle est la source de donnée du formulaire?
- Actuellement le formulaire affiche plusieurs semaines, est-ce à
dire


que les colonnes du formulaire sont dynamiques ou y a t'il seulement 7
colonnes pour les 7 jours de la semaine et dans ce cas comment
differencie


t'on les différentes semaines?

A+

Rv

"vox95" <dw.linux(nospam)@wanadoo.fr> a écrit dans le message de
news:
Bonsoir à tous,

J'ai un formulaire avec en ligne des tranches horaires et en colonne
les



jours de la semaine (lundi ...)
Je voudrai qu'à partir d'une zone de liste modifiable "Semaine", dans
l'entête du formulaire,faire s'afficher dans la section détail mes
infos



mais uniquement sur la semaine choisie dans la liste modifiable.

Merci de votre assistance,

Vox95
















Avatar
Rv
Salut,

Difficile de répondre avec peu d'infos mais je crois que le plus délicat
est la syntaxe de la chaîne SQL que l'on affecte au RecordSource du
formulaire.
Dans ce cas j'utilise la méthode suivante pour dénicher l'erreur:
- Placer un point d'arrêt dans le VBA juste après l'instruction
"strSource = ..."
- Afficher le contenu de la variable strSource dans la fenêtre de
débogage par la commande "?strSource" saisie dans la fenêtre de débogage.
- Copier le contenu de cette variable et le coller dans l'éditeur de
requête d'acces en mode SQL pour tester la requête et identifier l'erreur.

A+

Rv

- Parcours du prog VBA en mode débogage.
- Affichage de la
"vox95" <dw.linux(nospam)@wanadoo.fr> a écrit dans le message de
news:%
Re Re ...
La solution semble coller.
Toutefois j'ai un petit problème:
Lorsque je positionne ma listBox sur une valeur, 47 par exemple, j'ai une
erreur d'execution et en mode débogage, & numSemaine & renvoie bien 47
mais

Me.RecordSource = "".

Bref ça me laisse sur ma faim pour ce soir!

--
Merci et @+

Vox95.



"Rv" a écrit dans le message de news:
%
Oui! Rendre la requête dynamique en jouant sur la clause WHERE semble
être


la bonne solution. Dans ce cas une solution est de construire la requête
et
de définir la source du formulaire avec cette requête via le code. En
supposant que la liste des semaines s'appelle lstSemaine cela pourrait
donner quelque chose du genre:

' Sur modification de la liste des semaines
Sub lstSemaine_AfterUpdate()
Call majSourceForm(lstSemaine.value)
End Sub

' Mise à jour de la source du formulaire
Sub majSourceForm(numSemaine as long)
dim strSource as String

strSource = "TRANSFORM First(IIf([HDebut]<[dd] And [HFin]>[df] Or
[HDebut]>=[DD] And [HDebut]<[DF] Or [HFin]>[DD] And
[HFin]<=[DF],[Animal],"''")) AS Expr2 " & _
" SELECT HEURES.DD, HEURES.DF, RDV.Semaine " & _
" FROM HEURES, RDV " & _
" WHERE RDV.Semaine " & numSemaine & " " & _
" GROUP BY HEURES.DD, HEURES.DF, RDV.Semaine " & _
" PIVOT " & _
"

Choose(Weekday([Date]),'dimanche','lundi','mardi','mercredi','jeudi','vendre


di','samedi') " & _
" In
('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche')'
Me.RecordSource = strSource
End Sub


A+

Rv

"vox95" <dw.linux(nospam)@wanadoo.fr> a écrit dans le message de
news:
Re...

En fait le formulaire (type Formulaires continus) est basé sur 2 tables
HEURES et RDV.
Dans la première, je n'ai que 2 champs pour les plages horaires.La
seconde
contient les champs date,semaine,heure de début, heur de fin et un
champ



animal.
Le formulaire, est issu de la requête:
TRANSFORM First(IIf([HDebut]<[dd] And [HFin]>[df] Or [HDebut]>=[DD] And
[HDebut]<[DF] Or [HFin]>[DD] And [HFin]<=[DF],[Animal],"")) AS Expr2
SELECT HEURES.DD, HEURES.DF, RDV.Semaine
FROM HEURES, RDV
WHERE (((RDV.Semaine)=[Semaine recherchée ]))
GROUP BY HEURES.DD, HEURES.DF, RDV.Semaine
PIVOT



Choose(Weekday([Date]),"dimanche","lundi","mardi","mercredi","jeudi","vendre


di","samedi")
In ("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");

Pour que mon form s'affiche par semaine, je suis obligé d'utiliser:
WHERE (((RDV.Semaine)=[Semaine recherchée ]))
dans la requête pour "trier".

Ce que je voudrai faire c'est supprimer le WHERE
(((RDV.Semaine)=[Semaine



recherchée ])) pour générer le formulaire mais en faisant un tri par
semaine

en utilisant une zone de liste déroulante contenant mes semaines et
qu'en



fonction de la semaine alors sélectionnée, le form affiche la semaine
concernée et seulement celle là.

Bref en relisant tout ça, il me vient une idée:
Ne faut-il pas dans la requête remplacer WHERE (((RDV.Semaine)=[Semaine
recherchée ])) par un truc du genre WHERE

(((RDV.Semaine)=Form!MonForm.[Valeur_renvoyée_par_ZoneDeListeModifiable]))



,
Valeur_renvoyée_par_ZoneDeListeModifiable étant à l'ouverture la
semaine



en
cours par défaut ?

Ce que j'essaie de faire en fait c'et un calendrier à l'envers....!!!!


--
Merci et @+

Vox95.



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

Salut,

Il faudrait plus d'information pour répondre:
- Y a t'il une ou plusieurs tables contenant les données du
formulaire?


- Quelle est la structure de cette (ces) table(s) ?
- Quelle est la source de donnée du formulaire?
- Actuellement le formulaire affiche plusieurs semaines, est-ce à
dire


que les colonnes du formulaire sont dynamiques ou y a t'il seulement
7




colonnes pour les 7 jours de la semaine et dans ce cas comment
differencie


t'on les différentes semaines?

A+

Rv

"vox95" <dw.linux(nospam)@wanadoo.fr> a écrit dans le message de
news:
Bonsoir à tous,

J'ai un formulaire avec en ligne des tranches horaires et en colonne
les



jours de la semaine (lundi ...)
Je voudrai qu'à partir d'une zone de liste modifiable "Semaine",
dans





l'entête du formulaire,faire s'afficher dans la section détail mes
infos



mais uniquement sur la semaine choisie dans la liste modifiable.

Merci de votre assistance,

Vox95