OVH Cloud OVH Cloud

Tri complexe dont le choix est commandé par un bouton.

19 réponses
Avatar
Alex
Bonjour,

J'ai un (sous)formulaire bas=E9 sur une requete pour m'afficher une
liste.
Avant son tri =E9tait du type (en sql) :
ORDER BY Int(Min(RCommandeEnCoursDate.HeureEnlev)),
RCommandeEnCoursDate.NomClient;
(je classe par jour ind=E9pendamment de l'heure puis par nom client)
J'ai enlev=E9 le tri de la requete.

J'ai mis deux boutons sur le form avec des syntaxes du type :

Private Sub Triparnom_Click()
Forms!FVoirNomCommandeEnCours.OrderBy =3D NomClient
Forms!FVoirNomCommandeEnCours.OrderBy =3D True
'je mettrais un refresh plus tard quand ces lignes marcheront mieux.
End Sub

Ca abouti sur une erreur.

Dans le formulaire, dans la case tri par que je choisisse NomClient ou
Int(Min(RCommandeEnCoursDate.HeureEnlev)), le tri se fait par
NomClient.

Donc si vous pouvez m'aider a :
Rentrer un champ "tri par" qui marche
pouvoir avoir ma fonction de tri "complexe"
ca m'aiderait beaucoup !

Merci

9 réponses

1 2
Avatar
3stone
Salut,

"Alex" <

Private Sub TriParDate_Click()
Me.OrderBy = "MinDeHeureEnlev"
Me.OrderByOn = True
End Sub


- Enlève le "requery" totalement superflu!
c'est le OrderByOn qui déclenche le tri !!!

- "MinDeHeureEnlev" est bien le nom du champ source
et se retrouve bien dans la source (requête) du formulaire ?

- Le bouton est bien au "même niveau" que le formulaire à trier ?

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Alex
Salut,
J'ai viré le requery et j'ai donc ça :

Private Sub TriParDate_Click()
Me.OrderBy = "MinDeHeureEnlev"
Me.OrderByOn = True
End Sub

Pour répondre aux autres questions j'ai joint une image des fois que
je fasse des confusions.
[URL=http://imageshack.us][IMG]http://img333.imageshack.us/img333/3282/ac cesstrioy7.jpg[/IMG][/URL]

"MinDeHeureEnlev" est un champ de ma requête source et en tout cas ce
champ marche pour afficher la liste dans le formulaire.
Pour ce qui est du niveau je suis dans l'entête je suppose que ca
correspond au même niveau.
Sur le message d'erreur j'ai :
RnomCommandeEnCoursRegroupSansTri.nomclientprincipal
Donc le nom de la requête a gauche et a droite nomclientprincipal,
j'ai bien un champ NomClient mais le principal je sais pas d'où il
sort, j'ai le même message d'erreur qu'elle que soit la méthode de
tri choisie, il y a peut être une piste ici.

Pour l'instant je cache mon entête et je mets la requête avec tri
pour que l'exploitation du programme puisse continuer mais j'aimerais
bien trouver la solution.
A+


Salut,

"Alex" <

Private Sub TriParDate_Click()
Me.OrderBy = "MinDeHeureEnlev"
Me.OrderByOn = True
End Sub


- Enlève le "requery" totalement superflu!
c'est le OrderByOn qui déclenche le tri !!!

- "MinDeHeureEnlev" est bien le nom du champ source
et se retrouve bien dans la source (requête) du formulaire ?

- Le bouton est bien au "même niveau" que le formulaire à trier ?

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/


Avatar
3stone
Salut,

"Alex"
Pour répondre aux autres questions j'ai joint une image des fois que
je fasse des confusions.
[URL=http://imageshack.us][IMG]http://img333.imageshack.us/img333/3282/accesstrioy7.jpg[/IMG][/URL]


Pour joindre une image ou autre, utilise ceci http://cjoint.com/index.php




"MinDeHeureEnlev" est un champ de ma requête source et en tout cas ce
champ marche pour afficher la liste dans le formulaire.
Pour ce qui est du niveau je suis dans l'entête je suppose que ca
correspond au même niveau.
Sur le message d'erreur j'ai :
RnomCommandeEnCoursRegroupSansTri.nomclientprincipal
Donc le nom de la requête a gauche et a droite nomclientprincipal,
j'ai bien un champ NomClient mais le principal je sais pas d'où il
sort, j'ai le même message d'erreur qu'elle que soit la méthode de
tri choisie, il y a peut être une piste ici.


Tu devrais afficher ici la source (le SQL) de ton formulaire,
cela permettrait de mieux comprendre ton problème.
Ou joindre ta base (ou extrait) avec quelques enregistrements
par la méthode indiquée ci-dessus.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Alex
Salut,
je réfléchissais a comment joindre un bout de ma base alors j'en ai
fait une autre trouvé toutes les req qui se rattachaient a mon bug
rajouter deux trois pincées de sub qui trainaient puis j'ai enfin un
test efficace. Ma liste a classer est un formulaire mis dans un autre,
le formulaire tout seul marche. Donc l'erreur est je pense le "Me"
qu'il doit falloir remplacer par le bon chemin mais j'arrive pas à le
trouver. J'ai essayé des chemins de ce type :
forms!fsecondaire.orderby
forms!f1.fsecondaire.orderby
forms!f1.fsecondaire.orderby
arggggg je trouve pas je dois pas être loin, un coup de main je suis a
deux doigts !

J'aurais aussi une autre question liée... mais après hein !


Salut,

"Alex"
Pour répondre aux autres questions j'ai joint une image des fois que
je fasse des confusions.
[URL=http://imageshack.us][IMG]http://img333.imageshack.us/img333/3282/ accesstrioy7.jpg[/IMG][/URL]


Pour joindre une image ou autre, utilise ceci http://cjoint.com/index .php




"MinDeHeureEnlev" est un champ de ma requête source et en tout cas ce
champ marche pour afficher la liste dans le formulaire.
Pour ce qui est du niveau je suis dans l'entête je suppose que ca
correspond au même niveau.
Sur le message d'erreur j'ai :
RnomCommandeEnCoursRegroupSansTri.nomclientprincipal
Donc le nom de la requête a gauche et a droite nomclientprincipal,
j'ai bien un champ NomClient mais le principal je sais pas d'où il
sort, j'ai le même message d'erreur qu'elle que soit la méthode de
tri choisie, il y a peut être une piste ici.


Tu devrais afficher ici la source (le SQL) de ton formulaire,
cela permettrait de mieux comprendre ton problème.
Ou joindre ta base (ou extrait) avec quelques enregistrements
par la méthode indiquée ci-dessus.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/


Avatar
3stone
Salut,

Si tu tiens à une aide efficasse, tu ne devrais pas tourner
autour du pot et dire clairement ce qu'il en est !!!


"Alex"
[...]
| Ma liste a classer est un formulaire mis dans un autre,
| le formulaire tout seul marche. Donc l'erreur est je pense le "Me"
| qu'il doit falloir remplacer par le bon chemin mais j'arrive pas à le
| trouver.


Je t'avais demandé si ton boton était au même niveau !
- tu parlais de formulaire, de bouton et de filtre
- maintenant tu semble parler aussi de sous formulaire ???

Faudrait savoir.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Pierre CFI [mvp]
salut mon petit stone, déjà saoul ?? c'est rare de te voir faire des fautes :o))
çà se prépare le reveillon, tu reste lachement devant ton écran, pour pas géner les préparatifs ??? comme moi

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"3stone" a écrit dans le message de news:
Salut,

Si tu tiens à une aide efficasse, tu ne devrais pas tourner
autour du pot et dire clairement ce qu'il en est !!!


"Alex"
[...]
| Ma liste a classer est un formulaire mis dans un autre,
| le formulaire tout seul marche. Donc l'erreur est je pense le "Me"
| qu'il doit falloir remplacer par le bon chemin mais j'arrive pas à le
| trouver.


Je t'avais demandé si ton boton était au même niveau !
- tu parlais de formulaire, de bouton et de filtre
- maintenant tu semble parler aussi de sous formulaire ???

Faudrait savoir.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/





Avatar
Alex
Salut,
désolé, en prenant l'image j'ai oublié de préciser le reste. Toi tu
parlais de niveau, et comme je suis pas au point j'ai juste précisé
que les boutons sont dans l'entête du "sous"formulaire.
Donc j'ai mes boutons dans le sous formulaire mais avec Me ça marche
pas (sauf si j'ouvre que le sous formulaire qui devient alors
formulaire (tout court)). J'arrive pas a trouver la syntaxe pour que le
sous formulaire s'auto appelle, ou alors peut être qu'il faut que je
change de méthode et que je mette mes boutons dans le formulaire,
enfin bref je patauge.
Merci.


Salut,

Si tu tiens à une aide efficasse, tu ne devrais pas tourner
autour du pot et dire clairement ce qu'il en est !!!


"Alex"
[...]
| Ma liste a classer est un formulaire mis dans un autre,
| le formulaire tout seul marche. Donc l'erreur est je pense le "Me"
| qu'il doit falloir remplacer par le bon chemin mais j'arrive pas à le
| trouver.


Je t'avais demandé si ton boton était au même niveau !
- tu parlais de formulaire, de bouton et de filtre
- maintenant tu semble parler aussi de sous formulaire ???

Faudrait savoir.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/


Avatar
Alex
Bon la morale de cette histoire et que je n'ai trouvé aucune astuce
pour utiliser la fonction tri conformément à mes besoins.
Changer la requete (bouton dans le form principal) marche au poil,
c'est d'un simple un régal :
Private Sub Triparnom_Click()
Forms![FVoirCommandeEnCours]![FVoirNomCommandeEnCours].Form.RecordSource
= "RNomCommandeEnCoursRegroupTriParNom"
End Sub

Et on garde la toute puissance des tris possibles dans les requetes !

Tri par : une fonction que je vais essayer de pas oublier de plus m'en
servir.


Salut,
désolé, en prenant l'image j'ai oublié de préciser le reste. Toi tu
parlais de niveau, et comme je suis pas au point j'ai juste précisé
que les boutons sont dans l'entête du "sous"formulaire.
Donc j'ai mes boutons dans le sous formulaire mais avec Me ça marche
pas (sauf si j'ouvre que le sous formulaire qui devient alors
formulaire (tout court)). J'arrive pas a trouver la syntaxe pour que le
sous formulaire s'auto appelle, ou alors peut être qu'il faut que je
change de méthode et que je mette mes boutons dans le formulaire,
enfin bref je patauge.
Merci.


Salut,

Si tu tiens à une aide efficasse, tu ne devrais pas tourner
autour du pot et dire clairement ce qu'il en est !!!


"Alex"
[...]
| Ma liste a classer est un formulaire mis dans un autre,
| le formulaire tout seul marche. Donc l'erreur est je pense le "Me"
| qu'il doit falloir remplacer par le bon chemin mais j'arrive pas à le
| trouver.


Je t'avais demandé si ton boton était au même niveau !
- tu parlais de formulaire, de bouton et de filtre
- maintenant tu semble parler aussi de sous formulaire ???

Faudrait savoir.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
3stone
Salut,

"Alex"
| Et on garde la toute puissance des tris possibles dans les requetes !
|

Ce qui ne veut rien dire du tout ;-)
Si les données sont déjà remonté jusqu'au formulaire, un simple OrderBy
fait très bien l'affaire.


|
| Tri par : une fonction que je vais essayer de pas oublier de plus m'en servir.
|

Comme déjà dit : il faut poser les questions clairement, en posant
correctement le cadre et situation et sans cacher son ignorance
- cela permet une aide plus efficace ;-)


Pour en revenir à ton tri !!


Si le bouton et les données se trouvent sur le même formulaire,
que ce dernier soit formulaire principal ou sous-formulaire, le code EST:

Me.OrderBy = "NomDuChamp"
Me.OrderByOn = True

Si par contre, le bouton est sur le formulaire principal et les données
dans le sous-formulaire, le code devient :

Me.NomDuSousForm.FORM.OrderBy = "NomDuChamp"
Me.NomDuSousForm.FORM.OrderByOn = True


La seule chose que tu DOIS adapter correctement est "NomDuChamp"
et également "NomDuSousForm" dans le second cas.

Le reste, tu n'y touche pas !!!

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
1 2