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
michel
Bonjour
Essaie avec like au lieu de egal et concatene l"*"
DoCmd.OpenForm " Selection ", acNormal, ,
"([COMPETENCE]=[forms]![Commandes].[Qualification] And ([langue] like
[Forms]![Commandes].[langue] & "*") And [REGION] like
[Forms]![Commandes].[REGION] & "*")"

@plus

Michel

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

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




Avatar
Raymond [mvp]
Bonjour mon ami.

Dim Msg As String
Msg = "[COMPETENCE]= " & [Forms]![Commandes].[Qualification]
If Nz(Me.langue, "") <> "" Then
Msg = Msg & " And [langue]= " & [Forms]![Commandes].[langue]
End If
If Nz(Me.REGION, "") <> "" Then
Msg = Msg & " And [REGION] = " & [Forms]![Commandes].[REGION]
End If
DoCmd.OpenForm " Selection ", acNormal, , Msg

penser de placer des ' si les valeurs sont alpha.
--
@+
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:

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




Avatar
Luis
Bonjour Raymond,
Ces des valeurs alpha, où faut-il placer les '?
merci Raymond.
Luis

Bonjour mon ami.

Dim Msg As String
Msg = "[COMPETENCE]= " & [Forms]![Commandes].[Qualification]
If Nz(Me.langue, "") <> "" Then
Msg = Msg & " And [langue]= " & [Forms]![Commandes].[langue]
End If
If Nz(Me.REGION, "") <> "" Then
Msg = Msg & " And [REGION] = " & [Forms]![Commandes].[REGION]
End If
DoCmd.OpenForm " Selection ", acNormal, , Msg

penser de placer des ' si les valeurs sont alpha.
--
@+
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:

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









Avatar
Luis
Bonjour,
Merci pour ce code, mais j'ai une erreur d'incompatibilité de type.
:
Luis


Bonjour
Essaie avec like au lieu de egal et concatene l"*"
DoCmd.OpenForm " Selection ", acNormal, ,
"([COMPETENCE]=[forms]![Commandes].[Qualification] And ([langue] like
[Forms]![Commandes].[langue] & "*") And [REGION] like
[Forms]![Commandes].[REGION] & "*")"

@plus

Michel

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

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









Avatar
Raymond [mvp]
Dim Msg As String
Msg = "[COMPETENCE]= '" & [Forms]![Commandes].[Qualification] & "'"
If Nz(Me.langue, "") <> "" Then
Msg = Msg & " And [langue]= '" & [Forms]![Commandes].[langue] & "'"
End If
If Nz(Me.REGION, "") <> "" Then
Msg = Msg & " And [REGION] = '" & [Forms]![Commandes].[REGION] & "'"
End If
DoCmd.OpenForm " Selection ", acNormal, , Msg


--
@+
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,
Ces des valeurs alpha, où faut-il placer les '?
merci Raymond.
Luis


Avatar
Luis
Bonjour Raymond,
J'ai une erreur d'exécution '3075'
Erreur de syntaxe (opérateur absent) dans l'expression
'COMPETENCE]=Ingénieur' and [langue]=Anglais".

En surbrillance il y a
DoCmd.OpenForm " Selection ", acNormal, , Msg

Cette erreur survient alors qu'il y a une langue dans [langue] du formulaire
commandes.
Si il y a aussi une région de sélectionnée le message indique aussi la
région sous cette forme:

Erreur de syntaxe (opérateur absent) dans l'expression
'COMPETENCE]=Ingénieur' and [langue]=Anglais' and [REGION]=Lyon".

Là, je suis largué.

Luis

Dim Msg As String
Msg = "[COMPETENCE]= '" & [Forms]![Commandes].[Qualification] & "'"
If Nz(Me.langue, "") <> "" Then
Msg = Msg & " And [langue]= '" & [Forms]![Commandes].[langue] & "'"
End If
If Nz(Me.REGION, "") <> "" Then
Msg = Msg & " And [REGION] = '" & [Forms]![Commandes].[REGION] & "'"
End If
DoCmd.OpenForm " Selection ", acNormal, , Msg


--
@+
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,
Ces des valeurs alpha, où faut-il placer les '?
merci Raymond.
Luis







Avatar
Raymond [mvp]
Il ne faut pas être largué car c'est la base de la manipulation des données
alpha. tu n'as pas rentré certains ' comme indiqué ou alors tu as des
données qui contiennent elles-mêmes des '.
'COMPETENCE]=Ingénieur' and [langue]=Anglais' and [REGION]=Lyon".
devrait être :
COMPETENCE]='Ingénieur' and [langue]='Anglais' and [REGION]='Lyon'.
--
@+
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,
J'ai une erreur d'exécution '3075'
Erreur de syntaxe (opérateur absent) dans l'expression
'COMPETENCE]=Ingénieur' and [langue]=Anglais".

En surbrillance il y a
DoCmd.OpenForm " Selection ", acNormal, , Msg

Cette erreur survient alors qu'il y a une langue dans [langue] du
formulaire
commandes.
Si il y a aussi une région de sélectionnée le message indique aussi la
région sous cette forme:

Erreur de syntaxe (opérateur absent) dans l'expression
'COMPETENCE]=Ingénieur' and [langue]=Anglais' and [REGION]=Lyon".

Là, je suis largué.

Luis


Avatar
Raymond [mvp]
.../...

lire
[COMPETENCE]='Ingénieur' and [langue]='Anglais' and [REGION]='Lyon'.
au lieu de
COMPETENCE]='Ingénieur' and [langue]='Anglais' and [REGION]='Lyon'.

--
@+
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


"Raymond [mvp]" a écrit dans le message de
news:
Il ne faut pas être largué car c'est la base de la manipulation des
données alpha. tu n'as pas rentré certains ' comme indiqué ou alors tu as
des données qui contiennent elles-mêmes des '.
'COMPETENCE]=Ingénieur' and [langue]=Anglais' and [REGION]=Lyon".
devrait être :
COMPETENCE]='Ingénieur' and [langue]='Anglais' and [REGION]='Lyon'.
--
@+
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,
J'ai une erreur d'exécution '3075'
Erreur de syntaxe (opérateur absent) dans l'expression
'COMPETENCE]=Ingénieur' and [langue]=Anglais".

En surbrillance il y a
DoCmd.OpenForm " Selection ", acNormal, , Msg

Cette erreur survient alors qu'il y a une langue dans [langue] du
formulaire
commandes.
Si il y a aussi une région de sélectionnée le message indique aussi la
région sous cette forme:

Erreur de syntaxe (opérateur absent) dans l'expression
'COMPETENCE]=Ingénieur' and [langue]=Anglais' and [REGION]=Lyon".

Là, je suis largué.

Luis






Avatar
Luis
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



..../...

lire
[COMPETENCE]='Ingénieur' and [langue]='Anglais' and [REGION]='Lyon'.
au lieu de
COMPETENCE]='Ingénieur' and [langue]='Anglais' and [REGION]='Lyon'.

--
@+
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


"Raymond [mvp]" a écrit dans le message de
news:
Il ne faut pas être largué car c'est la base de la manipulation des
données alpha. tu n'as pas rentré certains ' comme indiqué ou alors tu as
des données qui contiennent elles-mêmes des '.
'COMPETENCE]=Ingénieur' and [langue]=Anglais' and [REGION]=Lyon".
devrait être :
COMPETENCE]='Ingénieur' and [langue]='Anglais' and [REGION]='Lyon'.
--
@+
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,
J'ai une erreur d'exécution '3075'
Erreur de syntaxe (opérateur absent) dans l'expression
'COMPETENCE]=Ingénieur' and [langue]=Anglais".

En surbrillance il y a
DoCmd.OpenForm " Selection ", acNormal, , Msg

Cette erreur survient alors qu'il y a une langue dans [langue] du
formulaire
commandes.
Si il y a aussi une région de sélectionnée le message indique aussi la
région sous cette forme:

Erreur de syntaxe (opérateur absent) dans l'expression
'COMPETENCE]=Ingénieur' and [langue]=Anglais' and [REGION]=Lyon".

Là, je suis largué.

Luis











Avatar
Raymond [mvp]
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



1 2 3