[ACCESS] Pb champ non null dans un sous form
Fermé
ciracus
-
29 juil. 2008 à 10:46
blux Messages postés 26772 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 10 avril 2025 - 30 juil. 2008 à 08:52
blux Messages postés 26772 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 10 avril 2025 - 30 juil. 2008 à 08:52
A voir également:
- [ACCESS] Pb champ non null dans un sous form
- Access appdata - Guide
- Faire un trou dans une forme illustrator ✓ - Forum Illustrator
- Acer quick access - Forum logiciel systeme
- Désinstaller ACER QUICK ACCESS - Forum Logiciels
- Google form sans compte google - Forum Google Docs
13 réponses
blux
Messages postés
26772
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
10 avril 2025
3 334
29 juil. 2008 à 10:52
29 juil. 2008 à 10:52
Salut,
c'est sans doute réalisable, mais je me pose une question préalable : sont-ce des liaisons 1-n entre A et A-B et entre B et A-B ?
Si la réponse est oui, alors il faut une ligne dans A ET B avant de créer le lien dans A-B
c'est sans doute réalisable, mais je me pose une question préalable : sont-ce des liaisons 1-n entre A et A-B et entre B et A-B ?
Si la réponse est oui, alors il faut une ligne dans A ET B avant de créer le lien dans A-B
La liaison entre A et B est n-n, c'est pourquoi j'ai mis une table de liaison.
Dans le sous formulaire (correspondant à la table de liaison A-B), je récupère la valeur du champ de la table A commun et il n'y a donc plus qu'à sélectionner le champ de la table B qui convient (zone de liste déroulante) et de répéter l'opération autant de fois que nécesssaire.
Ce que je cherche à faire est donc d'obliger à au moins choisir un élement de B pour l'associer à tout nouvel élément de A.
Euh.. J'ai répondu à ta question?
Dans le sous formulaire (correspondant à la table de liaison A-B), je récupère la valeur du champ de la table A commun et il n'y a donc plus qu'à sélectionner le champ de la table B qui convient (zone de liste déroulante) et de répéter l'opération autant de fois que nécesssaire.
Ce que je cherche à faire est donc d'obliger à au moins choisir un élement de B pour l'associer à tout nouvel élément de A.
Euh.. J'ai répondu à ta question?
Ma relation entre les tables A et B est du type n-n, c'est pourquoi j'utilise une table de lisaison.
Ce que j'ai fait, c'est un formulaire avec tous les champs de A, et dedans un sous formulaire avec tous les champs de la table A-B. puis j'ai demandé à ce que le champ du sous formulaire correspondant à la clé primaire de A, prennent en valeur par défault la valeur du meme champ dans le formulaire, ainsi j'ai un lien entre le formulaire et le sous formulaire. Après il ne reste qu'à choisir un élément de la table B, grace à une zone de liste déroulante, et de répéter cette opération pour créer des élements de la table de liaison rattaché à mon nouvel élément de la table A.
Et ce que je cherche à faire c'est obligé la création d'au moins un élément de la table de liaison pour toute création d'un élément de la table A. C'est à dire que à tout élément de A, au moins un élément de B y est rattaché.
Euh... J'ai répondu à ta question?
Merci!
Ce que j'ai fait, c'est un formulaire avec tous les champs de A, et dedans un sous formulaire avec tous les champs de la table A-B. puis j'ai demandé à ce que le champ du sous formulaire correspondant à la clé primaire de A, prennent en valeur par défault la valeur du meme champ dans le formulaire, ainsi j'ai un lien entre le formulaire et le sous formulaire. Après il ne reste qu'à choisir un élément de la table B, grace à une zone de liste déroulante, et de répéter cette opération pour créer des élements de la table de liaison rattaché à mon nouvel élément de la table A.
Et ce que je cherche à faire c'est obligé la création d'au moins un élément de la table de liaison pour toute création d'un élément de la table A. C'est à dire que à tout élément de A, au moins un élément de B y est rattaché.
Euh... J'ai répondu à ta question?
Merci!
((C'est toujours ciracus, mais il y a un bug, et il ne veut pas poster ma réponse sinon...))
Ma relation entre les tables A et B est du type n-n, c'est pourquoi j'utilise une table de lisaison.
Ce que j'ai fait, c'est un formulaire avec tous les champs de A, et dedans un sous formulaire avec tous les champs de la table A-B. puis j'ai demandé à ce que le champ du sous formulaire correspondant à la clé primaire de A, prennent en valeur par défault la valeur du meme champ dans le formulaire, ainsi j'ai un lien entre le formulaire et le sous formulaire. Après il ne reste qu'à choisir un élément de la table B, grace à une zone de liste déroulante, et de répéter cette opération pour créer des élements de la table de liaison rattaché à mon nouvel élément de la table A.
Et ce que je cherche à faire c'est obligé la création d'au moins un élément de la table de liaison pour toute création d'un élément de la table A. C'est à dire que à tout élément de A, au moins un élément de B y est rattaché.
Euh... J'ai répondu à ta question?
Merci!
Ma relation entre les tables A et B est du type n-n, c'est pourquoi j'utilise une table de lisaison.
Ce que j'ai fait, c'est un formulaire avec tous les champs de A, et dedans un sous formulaire avec tous les champs de la table A-B. puis j'ai demandé à ce que le champ du sous formulaire correspondant à la clé primaire de A, prennent en valeur par défault la valeur du meme champ dans le formulaire, ainsi j'ai un lien entre le formulaire et le sous formulaire. Après il ne reste qu'à choisir un élément de la table B, grace à une zone de liste déroulante, et de répéter cette opération pour créer des élements de la table de liaison rattaché à mon nouvel élément de la table A.
Et ce que je cherche à faire c'est obligé la création d'au moins un élément de la table de liaison pour toute création d'un élément de la table A. C'est à dire que à tout élément de A, au moins un élément de B y est rattaché.
Euh... J'ai répondu à ta question?
Merci!
blux
Messages postés
26772
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
10 avril 2025
3 334
29 juil. 2008 à 13:23
29 juil. 2008 à 13:23
Et ce que je cherche à faire c'est obligé la création d'au moins un élément de la table de liaison pour toute création d'un élément de la table A.
Si tu as fait une création dans les canons de l'algèbre relationnelle, alors la clé primaire de ta table de liaison est la concaténation des clés primaires de A et de B.
Dans ce cas, il faut créer l'élément B ET l'élement A avant de créer l'élement de la table de liaison A-B.
Mais en principe, si c'est bien fait, ACCES doit t'interdire de créer une ligne dans A-B si A et/ou B ne sont pas renseignés.
Si tu as fait une création dans les canons de l'algèbre relationnelle, alors la clé primaire de ta table de liaison est la concaténation des clés primaires de A et de B.
Dans ce cas, il faut créer l'élément B ET l'élement A avant de créer l'élement de la table de liaison A-B.
Mais en principe, si c'est bien fait, ACCES doit t'interdire de créer une ligne dans A-B si A et/ou B ne sont pas renseignés.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
" la clé primaire de ta table de liaison est la concaténation des clés primaires de A et de B." -> OUI, les clés primaires de la table de liaison A-B sont celles des tables A et B.
La table B est déjà renseignée et ce que je voudrai c'est qu'à tout élément de A créé, au moins un élément de B y soit associé. Et il faut donc mettre qq chose qui avertisse en cas d'enregistrement de A sans un élément de B qui lui est associé.
Access accepte sans problème l'enregistement d'un nouvel élément de A sans élément de B associé!
La table B est déjà renseignée et ce que je voudrai c'est qu'à tout élément de A créé, au moins un élément de B y soit associé. Et il faut donc mettre qq chose qui avertisse en cas d'enregistrement de A sans un élément de B qui lui est associé.
Access accepte sans problème l'enregistement d'un nouvel élément de A sans élément de B associé!
blux
Messages postés
26772
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
10 avril 2025
3 334
29 juil. 2008 à 14:12
29 juil. 2008 à 14:12
Access accepte sans problème l'enregistement d'un nouvel élément de A sans élément de B associé!
Jamais dit le contraire, c'est d'ailleurs la base du relationnel.
Mais ce que je dis, c'est qu'il fait absolument que A ET B soient créés avant de créer une ligne dans la table de liaison qui est dans ton sous-form, ce dont tu parles au début, mais en ne faisant référence qu'à l'existence de A...
Sinon, ACCESS te renverra dans tes 22 si tu veux créer quelque chose dans la table de liaison sans que A et B ne soient créés, genre message d'erreur concernant les relations.
Jamais dit le contraire, c'est d'ailleurs la base du relationnel.
Mais ce que je dis, c'est qu'il fait absolument que A ET B soient créés avant de créer une ligne dans la table de liaison qui est dans ton sous-form, ce dont tu parles au début, mais en ne faisant référence qu'à l'existence de A...
Sinon, ACCESS te renverra dans tes 22 si tu veux créer quelque chose dans la table de liaison sans que A et B ne soient créés, genre message d'erreur concernant les relations.
en fait, là, je créé en MEME temps un élément de A (dans le formulaire) et un élément de la table de liaison A-B (dans le sous formulaire), car c'est lors de l'enregistrement des champs du formulaire et donc du sous-formulaire que je voudrais qu'il apparaisse un message d'erreur. je ne pense donc pas qu'il y est ce genre de problème, surtout qu'actuellement ça fonctionne!
Ce que je n'arrive pas à faire c'est la condition pour que le sous formulaire ne soit pas vide lors de l'enregistrement: qu'il y est au moins un élément de mis!
Ce que je n'arrive pas à faire c'est la condition pour que le sous formulaire ne soit pas vide lors de l'enregistrement: qu'il y est au moins un élément de mis!
blux
Messages postés
26772
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
10 avril 2025
3 334
29 juil. 2008 à 15:09
29 juil. 2008 à 15:09
Je viens de faire un test : si B n'est pas présent, tu ne peux pas créer de A-B (message 'enregistrement associé est requis dans la table B).
Donc, je souhaiterais savoir si tu as coché 'appliquer l'intégrité référentielle' dans les propriétés des relations ?
Donc, je souhaiterais savoir si tu as coché 'appliquer l'intégrité référentielle' dans les propriétés des relations ?
Les 3 tables existent!!! Et B contient une dizaine d'enregistrements!!
En faites, dans le sous formulaire du formulaire de création d'un nouvel élément de A, c'est une liste déroulante sur les éléments de la table B qui permet de relier les 2!
Je n'ai pas de problème avec la table B, mon problème c'est comment empecher l'enregistrement d'un nouvel élément de A dans un formulaire si l'on n'a pas sélectionné au moins un élément de B (qui existe dans la liste déroulante) dans le sous formulaire!
Est ce plus clair comme ça?
Si j'avais pu, j'aurais mis une copie d'écran pour que ce soit plus clair...
En faites, dans le sous formulaire du formulaire de création d'un nouvel élément de A, c'est une liste déroulante sur les éléments de la table B qui permet de relier les 2!
Je n'ai pas de problème avec la table B, mon problème c'est comment empecher l'enregistrement d'un nouvel élément de A dans un formulaire si l'on n'a pas sélectionné au moins un élément de B (qui existe dans la liste déroulante) dans le sous formulaire!
Est ce plus clair comme ça?
Si j'avais pu, j'aurais mis une copie d'écran pour que ce soit plus clair...
blux
Messages postés
26772
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
10 avril 2025
3 334
29 juil. 2008 à 15:32
29 juil. 2008 à 15:32
C'est qu'au début, tu indiques :
mais il contient aussi un sous formulaire avec les champs de la table de liaison
Donc j'ai compris que le sous-formulaire ne contenait que la table de liaison...
Si tu veux résoudre ton problème, tu valides 'appliquer l'intégrité référentielle' dans les relations et access empêchera toute création 'orpheline'.
mais il contient aussi un sous formulaire avec les champs de la table de liaison
Donc j'ai compris que le sous-formulaire ne contenait que la table de liaison...
Si tu veux résoudre ton problème, tu valides 'appliquer l'intégrité référentielle' dans les relations et access empêchera toute création 'orpheline'.
Il y a déjà l'intégrité différentielle sur les liaisons A et A-B, A-B et B.
Rien n'oblige la création d'un élément dans la table A-B, lors de la création d'un élément dans A....
Rien n'oblige la création d'un élément dans la table A-B, lors de la création d'un élément dans A....
blux
Messages postés
26772
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
10 avril 2025
3 334
29 juil. 2008 à 15:51
29 juil. 2008 à 15:51
Dans ce cas, il faut aussi qu'un B soit créé...
Tu peux mettre une copie d'écran de ton form sur cjoint.fr ? Je voudrais savoir comment tu as organisé tes objets.
Tu peux mettre une copie d'écran de ton form sur cjoint.fr ? Je voudrais savoir comment tu as organisé tes objets.
comment ça fonctionne "cjoint.fr"? merci
PS: B est créé et il est relié par intégrité référentielle dans le modèle relationnel...
Mon problème est entre la table A et la table de liaison A-B
PS: B est créé et il est relié par intégrité référentielle dans le modèle relationnel...
Mon problème est entre la table A et la table de liaison A-B
Voilà : https://www.cjoint.com/?hDqiP0xMT2
Donc il s'agit d'un formulaire avec les champs de A et un sous formulaire avec les champs de la table de liaison A-B.
Dans l'exemple pour la copie d'écran, j'ai mis un élément de B, mais il est tout à fait possible d'enregistrer sans mettre d'élément dans le sous formulaire et c'est ce que je voudrais interdire!
Est ce plus claire avec la photo?
Merci beaucoup
Donc il s'agit d'un formulaire avec les champs de A et un sous formulaire avec les champs de la table de liaison A-B.
Dans l'exemple pour la copie d'écran, j'ai mis un élément de B, mais il est tout à fait possible d'enregistrer sans mettre d'élément dans le sous formulaire et c'est ce que je voudrais interdire!
Est ce plus claire avec la photo?
Merci beaucoup
blux
Messages postés
26772
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
10 avril 2025
3 334
30 juil. 2008 à 08:52
30 juil. 2008 à 08:52
Il faudrait tester la valeur de ta zone de liste qui présente les valeurs de B, si c'est null ou 'A remplir', on peut considérer que la saisie n'a pas été effectuée.
Ce code serait à mettre sur le clic sur 'enregistrer'.
genre :
me.nom_de_sous_form.nom_de_zone_de_liste.value...
Ce code serait à mettre sur le clic sur 'enregistrer'.
genre :
me.nom_de_sous_form.nom_de_zone_de_liste.value...