< Relation entre deux champs sous Access | Forum des BTS

Relation entre deux champs sous Access

The_tiger85

New Member
Bonjour,
Je souhaite créer (en programmant) une relation entre deux champs.

J'ai deux champs : TypeDossier (Liste déroulante) et NumDossier (Liste).
Donc, quand je choisi un type de dossier, je veux que la liste du numéro de dossier se mette à jour automatiquement.

Voila, si vous avez une solution, je suis preneuse ....
Merci d'avance
 
Salut,
Cela devrait marcher

Private Sub Liste1_AfterUpdate()
Me.Filter = &quot;[Nom du champ sur lequel tu appliques le filtre] ='&quot; &amp; Me![Liste1] &amp; &quot;'&quot;
Me.FilterOn = True
End Sub


Private Sub Liste2_AfterUpdate()
Me.Filter = &quot;[Nom du champ sur lequel tu appliques le filtre] ='&quot; &amp; Me![Liste2] &amp; &quot;'&quot;
Me.FilterOn = True
End Sub

@+
 
Ca ne me met pas d'erreur mais ça ne marche pa ...

Voici ma page : PageAccueil

Et le code :

Private Sub TypeDossier_AfterUpdate()
Me.Filter = &quot;TypeDossier ='&quot; &amp; Me!TypeDossier &amp; &quot;'&quot;
Me.FilterOn = True
End Sub


Private Sub NumDossier_AfterUpdate()
Me.Filter = &quot;NumDossier ='&quot; &amp; Me!NumDossier &amp; &quot;'&quot;
Me.FilterOn = True
End Sub
 
A ma connaissance oui,
Je n'ai jamais rencontré de cas où les objets n'étaient pas indépendants.
Mais bon, je peux me tromper aussi. Nul n'est parfait  :laugh:

Faudrait voir avec &quot;Morice&quot; ou &quot;Cybervince&quot;
@+
clic
 
J'ai trouvé la solution !!
Pour ceux qui la veulent, la voila :

Private Sub Liste1_change()
Me.[Nom de la 2eme liste].RowSource = &quot;SELECT [Nom du champ de la 2eme liste] FROM [Nom de la table] WHERE [Nom du champ de la 1ere liste] = '&quot; &amp; Liste1.Value &amp; &quot;'&quot;
End Sub

Voila !! Merci vestale974 de m'avoir aidée !!
 
Bonjour,
J'ai encore un problème avec ces pages :
J'ai deux pages : Accueil et Suivi de Dossier

Dans la page d'Accueil :
Lorsque je clique sur la liste de type de dossier, il me met à jour le Numéro de dossier puis, avec le bouton Valider, il m'envoye vers la page de Suivi de Dossier ou je voudrais que les informations soit en lien avec le numéro de dossier.

Voici mes codes pour cette page :

Private Sub TypeDossier_Change()
Me.NumDossier.RowSource = &quot;SELECT NumDossier FROM Dossier WHERE TypeDossier ='&quot; &amp; TypeDossier.Value &amp; &quot;'&quot;
End Sub

Private Sub NumDossier_AfterUpdate()
'Code pour mettre à jour la liste des numéros de dossiers en fonction du type
Me.Filter = &quot;NumDossier ='&quot; &amp; Me!NumDossier &amp; &quot;'&quot;
Me.FilterOn = True
End Sub

Private Sub CmdValider_Click()
requete = &quot;SELECT VueSuiviDossier.*&quot;
requete = requete + &quot; FROM VueSuiviDossier, VueAccueil&quot;
requete = requete + &quot; WHERE VueAccueil.NumDossier = VueSuiviDossier.NumDossier&quot;
requete = requete + &quot; AND VueSuiviDossier.NumDossier = '&quot; &amp; NumDossier.Value &amp; &quot;'&quot;
'requete = requete + &quot; AND VueSuiviDossier.&quot;;&quot;

'DoCmd.Close
Application.DoCmd.OpenForm &quot;FormSuividossier&quot;, , requete, , , , Me.NumDossier
[...]
End Sub

Puis, Dans la page de Suivi de Dossier :
Tout les champs devrait être en lien avec le Numéro de Dossier de la page d'Accueil, or il n'y a que le champ Numéro de dossier qui est en lien.

Voici mes codes pour cette page :

Private Sub Form_Load()
If IsNull(Me.OpenArgs) Then
'rien à faire
Else
Me.[NumDossier] = CLng(Me.OpenArgs)
End If
End Sub


Voila, en espérant avoir clairement exposé mon problème et que vous puissiez m'aidez car ça commence à m'énervé, ça fait plusieurs jours de recherche dans les forums, les faq et les tuto ... :blink: :chessy:
 
The_tiger85 link=topic=59420.msg622829#msg622829 date=1181207018 a dit:
Private Sub CmdValider_Click()
    Dim requete As String
    requete = &quot;SELECT VueSuiviDossier.*&quot;
    requete = requete &amp; &quot;FROM VueSuiviDossier, VueAccueil&quot;
    requete = requete &amp; &quot;WHERE VueAccueil.NumDossier = VueSuiviDossier.NumDossier&quot;
    requete = requete &amp; &quot;AND VueSuiviDossier.NumDossier = '&quot; &amp; NumDossier.Value &amp; &quot;'&quot;
    'requete = requete &amp; &quot;AND VueSuiviDossier.&quot;;&quot;
   
    'DoCmd.Close
    Application.DoCmd.OpenForm &quot;FormSuividossier&quot;, , requete, , , , Me.NumDossier
 
Bonjour,
Maintenant cela marche, de plus, j'ai créé mon bouton valider en utilisant l'assistant et j'ai mis la &quot;fonction&quot; : Ouvrir le formulaire et trouver les informations spécifiques à afficher, puis j'ai liée mes deux champs NumDossier de mon formulaire d'accueil et celui de Suivi de Dossier.

Voici le code de mon bouton valider :

stDocName = &quot;FormSuiviDossier&quot;
stLinkCriteria = &quot;[NumDossier]=&quot; &amp; Me![NumDossier]
DoCmd.OpenForm stDocName, , , stLinkCriteria


Et celui du &quot;Form_Load&quot; du formulaire SuiviDossier

If IsNull(Me.OpenArgs) Then
'rien à faire
Else
Me.NumDossier = CLng(Me.OpenArgs)
End If


Voila !! Merci pour tout pour votre aide !!
 
Retour
Haut