Comment avoir 1 fois chaque sélection dans un formulaire en cont in
16 réponses
Luis
Bonjour à tous,
Voilà mon problème:
Depuis un formulaire je lance la sélection de candidats selon un critère "x".
Sur clic de boouton:
Dim strCritere As String
strCritere = "[DESCRTRAVAIL] LIKE '*" & Nz(Me!txtMot) & "*'" _
& " or [Formation.DIPLOME] LIKE '*" & Nz(Me!txtMot) & "*'"
'DoCmd.Close
DoCmd.OpenForm "Sélection aléatoire", acNormal, , strCritere
[Forms]![Sélection aléatoire].[TITRE] = " TOUS CANDIDATS LIBRES, TOUTES
QUALIFICATIONS, SELON CRITERE PERSONNEL "
[Forms]![Sélection aléatoire].[MétierCV] = Me.txtMot
Ce qui m'ouvre un formulaire en continu avec la liste de tous les candidats
correspondant au critère "X".
Mon problème est que même avec une requête 'Opération: Regroupement'
J'ai par exemple 7 fois un candidat, 2 fois un autre, 19 fois un autre etc..
Ceci vient du fait que je [DESCRTRAVAIL] et [Formation.DIPLOME] peuvent se
trouver plusieurs fois chez un candidat et que le critère peut évidement se
trouver dans plusieurs [DESCRTRAVAIL] et [Formation.DIPLOME] du même candidat.
Comment faire pour que la liste proposée se limite à une fois chaque candidat.
Je vous mets la requête qui est derrière le formulaire"Sélection aléatoire":
SELECT DISTINCTROW CANDIDATS.DIPLOME, CANDIDATS.LANGUEMATERNELLE,
CANDIDATS.AGENCE, CANDIDATS.[CODE AGENCE], CANDIDATS.LIBRE, CANDIDATS.NOM,
CANDIDATS.PRENOM, CANDIDATS.IDCANDIDAT, CANDIDATS.TEL, CANDIDATS.NATEL,
CANDIDATS.[E-MAIL], CANDIDATS.OBSERVATIONS, CANDIDATS.NAISSANCE,
CANDIDATS.OK_OUI_NON, CANDIDATS.ADRESSE, CANDIDATS.NP, CANDIDATS.LOCALITE,
CANDIDATS.FREQUENCE, CANDIDATS.PERMIS_CONDUIRE, CANDIDATS.[QUALIF 2],
CANDIDATS.REGION, CANDIDATS.Champ1, CANDIDATS.DOMAINE, CANDIDATS.PersonnelTS,
candidats.POLITESSES & " " & [PRENOM] & " " & [NOM] AS Expr1,
CANDIDATS.[actif/dcd], CANDIDATS.OCCUPATION, CANDIDATS.PLEINTEMPS, [EMPLOI
PRECEDENT].DESCRTRAVAIL, FORMATION.DIPLOME
FROM (CANDIDATS INNER JOIN [EMPLOI PRECEDENT] ON CANDIDATS.IDCANDIDAT =
[EMPLOI PRECEDENT].IDCANDIDAT) INNER JOIN FORMATION ON CANDIDATS.IDCANDIDAT =
FORMATION.IDCANDIDAT
GROUP BY CANDIDATS.DIPLOME, CANDIDATS.LANGUEMATERNELLE, CANDIDATS.AGENCE,
CANDIDATS.[CODE AGENCE], CANDIDATS.LIBRE, CANDIDATS.NOM, CANDIDATS.PRENOM,
CANDIDATS.IDCANDIDAT, CANDIDATS.TEL, CANDIDATS.NATEL, CANDIDATS.[E-MAIL],
CANDIDATS.OBSERVATIONS, CANDIDATS.NAISSANCE, CANDIDATS.OK_OUI_NON,
CANDIDATS.ADRESSE, CANDIDATS.NP, CANDIDATS.LOCALITE, CANDIDATS.FREQUENCE,
CANDIDATS.PERMIS_CONDUIRE, CANDIDATS.[QUALIF 2], CANDIDATS.REGION,
CANDIDATS.Champ1, CANDIDATS.DOMAINE, CANDIDATS.PersonnelTS,
candidats.POLITESSES & " " & [PRENOM] & " " & [NOM], CANDIDATS.[actif/dcd],
CANDIDATS.OCCUPATION, CANDIDATS.PLEINTEMPS, [EMPLOI PRECEDENT].DESCRTRAVAIL,
FORMATION.DIPLOME
HAVING (((CANDIDATS.LIBRE)="Libre" Or (CANDIDATS.LIBRE)="dossier") AND
((CANDIDATS.PersonnelTS)="Stable" Or (CANDIDATS.PersonnelTS)="Stable et
Tempo" Or (CANDIDATS.PersonnelTS)="Tempo et Stable") AND
((CANDIDATS.[actif/dcd])="O"))
ORDER BY CANDIDATS.NOM;
Petite précision mais qui a une énorme importance, il me faudrait la bd au format Access 2000 car je n'ai ni Access XP, ni Access 2003. J'avais oublié de préciser :-(
A+ Eric
re,
Petite précision mais qui a une énorme importance, il me faudrait la bd
au format Access 2000 car je n'ai ni Access XP, ni Access 2003.
J'avais oublié de préciser :-(
Petite précision mais qui a une énorme importance, il me faudrait la bd au format Access 2000 car je n'ai ni Access XP, ni Access 2003. J'avais oublié de préciser :-(
A+ Eric
Luis
Avec ce lien elle est au format Access2000 http://cjoint.com/?hptXGAv5dE Bon WE. Luis
re,
Petite précision mais qui a une énorme importance, il me faudrait la bd au format Access 2000 car je n'ai ni Access XP, ni Access 2003. J'avais oublié de préciser :-(
A+ Eric
Avec ce lien elle est au format Access2000
http://cjoint.com/?hptXGAv5dE
Bon WE.
Luis
re,
Petite précision mais qui a une énorme importance, il me faudrait la bd
au format Access 2000 car je n'ai ni Access XP, ni Access 2003.
J'avais oublié de préciser :-(
Avec ce lien elle est au format Access2000 http://cjoint.com/?hptXGAv5dE Bon WE. Luis
re,
Petite précision mais qui a une énorme importance, il me faudrait la bd au format Access 2000 car je n'ai ni Access XP, ni Access 2003. J'avais oublié de préciser :-(
A+ Eric
Eric
Bonjour Luis,
Lien ici : http://cjoint.com/?hqkGfJRsVx
Les modifications : Dès lors que tu ne veux voir qu'un seul item des candidats répondant à ton critere de recherche compte tenu de tes relations entre les 3 tables, j'ai du enlever les champs Formation.Diplome et DESCRTRAVAIL du formulaire Sélection Aléatoire ET de la requête STABLES DISPO_ALEATOIRE. (Ceci ne devrait pas avoir d'incidences sur ton formulaire d'affichage car tu ne souhaitais voir qu'un seule fois chaque candidat). Ceci empeche donc le filtrage puisque les données ne sont plus dans la source.
Contournement pour le filtrage: Par souci de simplification, j'ai créé une requête intermediaire REQ_INTERMED, dans l'onglet des Requêtes, qui fait appel à ta zone de saisie txtMot et retourne les IdCandidat distincts correspondants . (Voir en mode création). Le Sql de cette requête est récupéré dans le code sur l'évènement click du bouton btnOk et va servir de condition Where pour l'ouverture du formulaire Sélection Aléatoire
Private Sub btnOK_Click() Dim strWhere As String, qry As DAO.QueryDef Dim strSQL As String Set qry = CurrentDb.QueryDefs("REQ_INTERMED") strSQL = qry.SQL strWhere = "Candidats.IdCandidat In(" & strSQL & ")" Set qry = Nothing DoCmd.OpenForm "Sélection aléatoire", acNormal, , strWhere ... End Sub
Au final, pour la saisie de 'assist' le formulaire affiche 3 enregistrements(3 personnes) contre 28 pour 3 personnes précédemment et pour 'trust' 2 personnes contre 6. C'est ce que tu attendais, je suppose.
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour Luis,
Lien ici : http://cjoint.com/?hqkGfJRsVx
Les modifications :
Dès lors que tu ne veux voir qu'un seul item des candidats répondant à
ton critere de recherche compte tenu de tes relations entre les 3
tables, j'ai du enlever les champs Formation.Diplome et DESCRTRAVAIL du
formulaire Sélection Aléatoire ET de la requête STABLES DISPO_ALEATOIRE.
(Ceci ne devrait pas avoir d'incidences sur ton formulaire d'affichage
car tu ne souhaitais voir qu'un seule fois chaque candidat). Ceci
empeche donc le filtrage puisque les données ne sont plus dans la source.
Contournement pour le filtrage:
Par souci de simplification, j'ai créé une requête intermediaire
REQ_INTERMED, dans l'onglet des Requêtes, qui fait appel à ta zone de
saisie txtMot et retourne les IdCandidat distincts correspondants .
(Voir en mode création).
Le Sql de cette requête est récupéré dans le code sur l'évènement click
du bouton btnOk et va servir de condition Where pour l'ouverture du
formulaire Sélection Aléatoire
Private Sub btnOK_Click()
Dim strWhere As String, qry As DAO.QueryDef
Dim strSQL As String
Set qry = CurrentDb.QueryDefs("REQ_INTERMED")
strSQL = qry.SQL
strWhere = "Candidats.IdCandidat In(" & strSQL & ")"
Set qry = Nothing
DoCmd.OpenForm "Sélection aléatoire", acNormal, , strWhere
...
End Sub
Au final, pour la saisie de 'assist' le formulaire affiche 3
enregistrements(3 personnes) contre 28 pour 3 personnes précédemment et
pour 'trust' 2 personnes contre 6. C'est ce que tu attendais, je suppose.
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Les modifications : Dès lors que tu ne veux voir qu'un seul item des candidats répondant à ton critere de recherche compte tenu de tes relations entre les 3 tables, j'ai du enlever les champs Formation.Diplome et DESCRTRAVAIL du formulaire Sélection Aléatoire ET de la requête STABLES DISPO_ALEATOIRE. (Ceci ne devrait pas avoir d'incidences sur ton formulaire d'affichage car tu ne souhaitais voir qu'un seule fois chaque candidat). Ceci empeche donc le filtrage puisque les données ne sont plus dans la source.
Contournement pour le filtrage: Par souci de simplification, j'ai créé une requête intermediaire REQ_INTERMED, dans l'onglet des Requêtes, qui fait appel à ta zone de saisie txtMot et retourne les IdCandidat distincts correspondants . (Voir en mode création). Le Sql de cette requête est récupéré dans le code sur l'évènement click du bouton btnOk et va servir de condition Where pour l'ouverture du formulaire Sélection Aléatoire
Private Sub btnOK_Click() Dim strWhere As String, qry As DAO.QueryDef Dim strSQL As String Set qry = CurrentDb.QueryDefs("REQ_INTERMED") strSQL = qry.SQL strWhere = "Candidats.IdCandidat In(" & strSQL & ")" Set qry = Nothing DoCmd.OpenForm "Sélection aléatoire", acNormal, , strWhere ... End Sub
Au final, pour la saisie de 'assist' le formulaire affiche 3 enregistrements(3 personnes) contre 28 pour 3 personnes précédemment et pour 'trust' 2 personnes contre 6. C'est ce que tu attendais, je suppose.
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
.../...
Je crois que dans les propriétés du formulaire Sélection Aléatoire, onglet Données, il est resté quelque chose sur la ligne Filtré par du genre : "[DESCRTRAVAIL] LIKE '*" & Nz(Me!txtMot) & "*'" ... Tu peux vider cette ligne puisque le filtrage se fait maintenant par la requête.
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
.../...
Je crois que dans les propriétés du formulaire Sélection Aléatoire,
onglet Données, il est resté quelque chose sur la ligne Filtré par du
genre : "[DESCRTRAVAIL] LIKE '*" & Nz(Me!txtMot) & "*'" ...
Tu peux vider cette ligne puisque le filtrage se fait maintenant par la
requête.
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Je crois que dans les propriétés du formulaire Sélection Aléatoire, onglet Données, il est resté quelque chose sur la ligne Filtré par du genre : "[DESCRTRAVAIL] LIKE '*" & Nz(Me!txtMot) & "*'" ... Tu peux vider cette ligne puisque le filtrage se fait maintenant par la requête.
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Luis
Bonjour Eric, C'et exactement ça. Tout d'abord excuse-moi, de ne pas avoir répondu avant, mais impossible de me connecter, pour lire ta réponse et te répondre. Et deuxièment un Wagon de mercis, car c'est exactement la solution que je cherchais.
Luis
..../...
Je crois que dans les propriétés du formulaire Sélection Aléatoire, onglet Données, il est resté quelque chose sur la ligne Filtré par du genre : "[DESCRTRAVAIL] LIKE '*" & Nz(Me!txtMot) & "*'" ... Tu peux vider cette ligne puisque le filtrage se fait maintenant par la requête.
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour Eric,
C'et exactement ça.
Tout d'abord excuse-moi, de ne pas avoir répondu avant, mais impossible de
me connecter, pour lire ta réponse et te répondre.
Et deuxièment un Wagon de mercis, car c'est exactement la solution que je
cherchais.
Luis
..../...
Je crois que dans les propriétés du formulaire Sélection Aléatoire,
onglet Données, il est resté quelque chose sur la ligne Filtré par du
genre : "[DESCRTRAVAIL] LIKE '*" & Nz(Me!txtMot) & "*'" ...
Tu peux vider cette ligne puisque le filtrage se fait maintenant par la
requête.
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Bonjour Eric, C'et exactement ça. Tout d'abord excuse-moi, de ne pas avoir répondu avant, mais impossible de me connecter, pour lire ta réponse et te répondre. Et deuxièment un Wagon de mercis, car c'est exactement la solution que je cherchais.
Luis
..../...
Je crois que dans les propriétés du formulaire Sélection Aléatoire, onglet Données, il est resté quelque chose sur la ligne Filtré par du genre : "[DESCRTRAVAIL] LIKE '*" & Nz(Me!txtMot) & "*'" ... Tu peux vider cette ligne puisque le filtrage se fait maintenant par la requête.
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
Bonjour Luis,
Pas grave pour le délai de réponse, le plus pressé c'était pas moi ;-) et merci pour le retour.
Bonjour Eric, C'et exactement ça. Tout d'abord excuse-moi, de ne pas avoir répondu avant, mais impossible de me connecter, pour lire ta réponse et te répondre. Et deuxièment un Wagon de mercis, car c'est exactement la solution que je cherchais.
-- A+ Eric http://users.skynet.be/mpfa/
Bonjour Luis,
Pas grave pour le délai de réponse, le plus pressé c'était pas moi ;-)
et merci pour le retour.
Bonjour Eric,
C'et exactement ça.
Tout d'abord excuse-moi, de ne pas avoir répondu avant, mais impossible de
me connecter, pour lire ta réponse et te répondre.
Et deuxièment un Wagon de mercis, car c'est exactement la solution que je
cherchais.
Pas grave pour le délai de réponse, le plus pressé c'était pas moi ;-) et merci pour le retour.
Bonjour Eric, C'et exactement ça. Tout d'abord excuse-moi, de ne pas avoir répondu avant, mais impossible de me connecter, pour lire ta réponse et te répondre. Et deuxièment un Wagon de mercis, car c'est exactement la solution que je cherchais.