OVH Cloud OVH Cloud

Sélection variable

25 réponses
Avatar
Luis
Le 1er formulaire s’appelle ‘Commandes’ le formulaire que l’on ouvre
s’appelle ‘Selection’

Depuis le formulaire ‘Commandes’ j’ouvre le formulaire ‘Selection’ avec le
code suivant :

DoCmd.OpenForm " Selection ", acNormal, ,
"([COMPETENCE]=[forms]![Commandes].[Qualification] And ([langue]=
[Forms]![Commandes].[langue]) And [REGION] = [Forms]![Commandes].[REGION])"

J’aimerais savoir comment écrire cette commande pour que dans le cas ou le
champ [langue] ou/et le champ [REGION] du formulaire ‘Commandes’ est vide ce
critère soit ignoré et la sélection se fasse uniquement avec [COMPETENCE] et
[REGION] ou avec [COMPETENCE] et [langue] ou avec [COMPETENCE].

J’ai essayé avec des "if" mais ça ne marche pas.

Merci pour votre aide.

Luis

10 réponses

1 2 3
Avatar
Luis
Bonjour Raymond,
Comme tu as pu le remarquer dans mon précedents message, il y a 4 tables
1. CANDIDATS
2. REGIONS
3. COMPETENCES
4. LANGUESCONNUES

Mais faire des sous formulaires dans le cas précis ne me servirais pas à
grand chose à part ça.

Il faudrait plutôt que je trouve une reqûete qui me permette de n'avoir
qu'une seule fois chaque IDCANDIDAT.

Je pensais à une requêtte intermédiaire mais je ne sais pas si ça peut
marcher et de plus je ne vois pas comment je pourais mettre la commande
strWhere de la requête après

DoCmd.OpenForm " Selection ", acNormal, , Msg

pour qu'elle agisse.
Luis


c'est normal, le regroupement se fait sur les 3 valeurs donc tu as autant
d'enregistrements que de possibilités.
Il serait peut-être, mais je ne connais pas la finalité du formulaire,
préférable d'avoir une table séparée pour les régions et une table séparée
pour les langues. ton formulaire principal aurait un sous-formulaire pour
les régions et un sous-sous-formulaire pour les langues, comme on fait pour
les commandes, articles et couleurs.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Merci Raymond,
Tu avais raison je n'avais pas mis les ' partout, maintenant plus
d'erreur.
Par contre j'ai un autre problème:
Si dans le formulaire 'Commandes' il n'y a pas de [langue] ou/et [REGION]
renseignés, le formulaire 'Selection' s'ouvre et affiche autant de fois le
nom du candidat qu'il y a de régions dans lesquelles il peut travailler et
autant de fois qu'il connaît de langues.
Par exemple si le candidat peut travailler dans 2 régions différentes et
qu'il connaît 6 langues il paraît 12 fois dans le formulaire 'sélection'.
Le formulaire 'Sélection' est un formulaire en continu.
Je te mets la requête, si tu as la patience de la lire et que tu trouves
la
solution ça m'arrangerais bien.

C'est une requête sélection avec 4 tables
1. CANDIDATS
2. REGIONS
3. COMPETENCES
4. LANGUESCONNUES

SELECT DISTINCTROW CANDIDATS.NOM, CANDIDATS.DIPLOME, CANDIDATS.QUALIF_2,
CANDIDATS.AGENCE, CANDIDATS.[CODE AGENCE], CANDIDATS.IDCANDIDAT,
CANDIDATS.TEL, CANDIDATS.TEL2, CANDIDATS.NATEL, CANDIDATS.PRENOM,
CANDIDATS.LANGUEMATERNELLE, CANDIDATS.NAISSANCE, CANDIDATS.OK_OUI_NON,
CANDIDATS.ADRESSE, CANDIDATS.NP, CANDIDATS.LOCALITE, CANDIDATS.OCCUPATION,
CANDIDATS.FREQUENCE, CANDIDATS.PERMIS_CONDUIRE, CANDIDATS.DOMAINE,
COMPETENCES.COMPETENCE, REGIONS.REGION, LANGUESCONNUES.LANGUE
FROM ((REGIONS RIGHT JOIN CANDIDATS ON REGIONS.IDCANDIDAT > > CANDIDATS.IDCANDIDAT) LEFT JOIN COMPETENCES ON CANDIDATS.IDCANDIDAT > > COMPETENCES.IDCANDIDAT) LEFT JOIN LANGUESCONNUES ON CANDIDATS.IDCANDIDAT > > LANGUESCONNUES.IDCANDIDAT
WHERE (((CANDIDATS.Fiche_active)="O") AND ((CANDIDATS.LIBRE)="LIBRE" Or
(CANDIDATS.LIBRE)="Dossier") AND ((CANDIDATS.PersonnelTS)<>"Tempo")) OR
(((CANDIDATS.Fiche_active)="O") AND ((CANDIDATS.LIBRE)="LIBRE" Or
(CANDIDATS.LIBRE)="Dossier") AND ((CANDIDATS.PersonnelTS)<>"Tempo")) OR
(((CANDIDATS.Fiche_active)="O") AND ((CANDIDATS.LIBRE)="LIBRE" Or
(CANDIDATS.LIBRE)="Dossier") AND ((CANDIDATS.PersonnelTS)<>"Tempo"))
ORDER BY CANDIDATS.NOM;

Je ne connaîs pas la solution pour que chaque candidat ne s'affiche qu'une
seule fois.

Luis








Avatar
Raymond [mvp]
Si un candidat a plusieurs régions plusieurs compétences et plusieurs
langues, tu ne peux pas placer ces données sur un même enregistrement. les
régions, compétences et langues sont obligatoirement traitées par des
sous-formulaires, qui apparemment sont de même niveau.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour Raymond,
Comme tu as pu le remarquer dans mon précedents message, il y a 4 tables
1. CANDIDATS
2. REGIONS
3. COMPETENCES
4. LANGUESCONNUES

Mais faire des sous formulaires dans le cas précis ne me servirais pas à
grand chose à part ça.

Il faudrait plutôt que je trouve une reqûete qui me permette de n'avoir
qu'une seule fois chaque IDCANDIDAT.

Je pensais à une requêtte intermédiaire mais je ne sais pas si ça peut
marcher et de plus je ne vois pas comment je pourais mettre la commande
strWhere de la requête après

DoCmd.OpenForm " Selection ", acNormal, , Msg

pour qu'elle agisse.
Luis


Avatar
Luis
Tu as raison, mais dans le cas précis je n'ai pas besoin de tout ça, j'ai
besoin de la liste des candidats qui correspondent à la demande faite à
partir du formulaire 'Commandes'

Sur le formulaire en continu 'Sélection' j'ai j'ai un lien dans le cas ou un
renseignement complet est nécéssaire.

C'est pour cette raison qu'il me faudrait une requête qui me permette de
n'avoir qu'une seule fois chaque IDCANDIDAT affiché dans le formulaire
'Selection' en continu.

Luis

Luis


Si un candidat a plusieurs régions plusieurs compétences et plusieurs
langues, tu ne peux pas placer ces données sur un même enregistrement. les
régions, compétences et langues sont obligatoirement traitées par des
sous-formulaires, qui apparemment sont de même niveau.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour Raymond,
Comme tu as pu le remarquer dans mon précedents message, il y a 4 tables
1. CANDIDATS
2. REGIONS
3. COMPETENCES
4. LANGUESCONNUES

Mais faire des sous formulaires dans le cas précis ne me servirais pas à
grand chose à part ça.

Il faudrait plutôt que je trouve une reqûete qui me permette de n'avoir
qu'une seule fois chaque IDCANDIDAT.

Je pensais à une requêtte intermédiaire mais je ne sais pas si ça peut
marcher et de plus je ne vois pas comment je pourais mettre la commande
strWhere de la requête après

DoCmd.OpenForm " Selection ", acNormal, , Msg

pour qu'elle agisse.
Luis







Avatar
Raymond [mvp]
dans ce cas, ne passe pas par DISTINCTROW mais par group by sur le nom
seulement et tu indiqueras une opération du genre first ou last sur les
autres colonnes etc..
tu n'as pas besoin de toutes ces données pour faire une simple liste. Tu ne
peux pas tout avoir.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Tu as raison, mais dans le cas précis je n'ai pas besoin de tout ça, j'ai
besoin de la liste des candidats qui correspondent à la demande faite à
partir du formulaire 'Commandes'

Sur le formulaire en continu 'Sélection' j'ai j'ai un lien dans le cas ou
un
renseignement complet est nécéssaire.

C'est pour cette raison qu'il me faudrait une requête qui me permette de
n'avoir qu'une seule fois chaque IDCANDIDAT affiché dans le formulaire
'Selection' en continu.

Luis



Avatar
Luis
Bonjour Raymond,
Comment est-ce que l'on fait une requête group by ?
Luis


dans ce cas, ne passe pas par DISTINCTROW mais par group by sur le nom
seulement et tu indiqueras une opération du genre first ou last sur les
autres colonnes etc..
tu n'as pas besoin de toutes ces données pour faire une simple liste. Tu ne
peux pas tout avoir.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Tu as raison, mais dans le cas précis je n'ai pas besoin de tout ça, j'ai
besoin de la liste des candidats qui correspondent à la demande faite à
partir du formulaire 'Commandes'

Sur le formulaire en continu 'Sélection' j'ai j'ai un lien dans le cas ou
un
renseignement complet est nécéssaire.

C'est pour cette raison qu'il me faudrait une requête qui me permette de
n'avoir qu'une seule fois chaque IDCANDIDAT affiché dans le formulaire
'Selection' en continu.

Luis








Avatar
Raymond [mvp]
c'est une requête regroupement. Place-toi du côté requêteur access et non du
côté sql et clique sur Sigma. ensuite dans la ligne opérations tu
sélectionnes une valeur pour chaque colonne.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour Raymond,
Comment est-ce que l'on fait une requête group by ?
Luis



Avatar
Luis
Bonjour Raymond,
Merci, je n'avais pas compris.
Le problème c'est qu'en sélectionnant sur Premier ou dernier on n'a pas
toujours de sélection.
Est-ce qu'il n'y a pas moyen de sélectionner sur la requête du 2ème
formulaire au lieu de sélectionner sur les champs du 2ème formulaire, et
comment?
Luis


dans ce cas, ne passe pas par DISTINCTROW mais par group by sur le nom
seulement et tu indiqueras une opération du genre first ou last sur les
autres colonnes etc..
tu n'as pas besoin de toutes ces données pour faire une simple liste. Tu ne
peux pas tout avoir.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Tu as raison, mais dans le cas précis je n'ai pas besoin de tout ça, j'ai
besoin de la liste des candidats qui correspondent à la demande faite à
partir du formulaire 'Commandes'

Sur le formulaire en continu 'Sélection' j'ai j'ai un lien dans le cas ou
un
renseignement complet est nécéssaire.

C'est pour cette raison qu'il me faudrait une requête qui me permette de
n'avoir qu'une seule fois chaque IDCANDIDAT affiché dans le formulaire
'Selection' en continu.

Luis








Avatar
Raymond [mvp]
D'après moi il ne te faut que la liste des candidats, c'est tout,
c'est-à-dire que le numéro et le nom. pour cela la requête regroupement ou
DISTINCTROW conviennent très bien, vu que tu as ensuite un lien pour
rechercher autre chose.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour Raymond,
Merci, je n'avais pas compris.
Le problème c'est qu'en sélectionnant sur Premier ou dernier on n'a pas
toujours de sélection.
Est-ce qu'il n'y a pas moyen de sélectionner sur la requête du 2ème
formulaire au lieu de sélectionner sur les champs du 2ème formulaire, et
comment?
Luis



Avatar
Luis
Bonjour Raymond,
D'accord, Langue et REGION ne seraient pas visibles mais comment faire la
sélection quand même, car j'ai essayé mais dès que l'on supprime les champs
[Langue] et [REGION] du formulaire 'Selection', j'ai une erreur.
Luis


dans ce cas, ne passe pas par DISTINCTROW mais par group by sur le nom
seulement et tu indiqueras une opération du genre first ou last sur les
autres colonnes etc..
tu n'as pas besoin de toutes ces données pour faire une simple liste. Tu ne
peux pas tout avoir.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Tu as raison, mais dans le cas précis je n'ai pas besoin de tout ça, j'ai
besoin de la liste des candidats qui correspondent à la demande faite à
partir du formulaire 'Commandes'

Sur le formulaire en continu 'Sélection' j'ai j'ai un lien dans le cas ou
un
renseignement complet est nécéssaire.

C'est pour cette raison qu'il me faudrait une requête qui me permette de
n'avoir qu'une seule fois chaque IDCANDIDAT affiché dans le formulaire
'Selection' en continu.

Luis








Avatar
Raymond [mvp]
il va falloir choisir:
- quels sont les champs qu'il faut que tu récupères dans ta requête ?
- il y a regroupement sur le nom (et Id certainement) donc que faire pour
les autres colonnes ? il faut faire une opération

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


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

Bonjour Raymond,
D'accord, Langue et REGION ne seraient pas visibles mais comment faire la
sélection quand même, car j'ai essayé mais dès que l'on supprime les
champs
[Langue] et [REGION] du formulaire 'Selection', j'ai une erreur.
Luis



1 2 3