[Base] Lier un sous-formulaire à deux formulaires parents ? (ou faire autrement...)

Bonjour à toutes et tous,

Je dois être vieux et fatigué, mais je n’arrive pas à faire une petite chose qui me paraît pourtant simple : j’aimerais (dans le principe de fonctionnement) qu’un sous-formulaire soit dépendant de deux formulaires parents.

Je présente mon besoin ainsi, mais la finalité, c’est qu’une table “fille” est dépendante de deux tables non liées entre elles. Ainsi, je veux choisir un enregistrement de la table “mère1”, un enregistrement de la table “mère2”, et remplir alors des champs de la table “fille” dans lesquels se trouvent évidemment un lien vers la table “mère1” et un lien vers la table “mère2”.

J’arrive sans difficulté particulière à faire un coté de mon besoin : les enregistrements créés dans la table fille portent donc sans problème l’Id de l’enregistrement choisi coté “mère1”, mais bien évidemment, le champ “clé externe” liant à la table “mère2” reste vide.

Je ne sais pas lier mon sous-formulaire à deux formulaires parents, peut-être faut-il simplement utiliser un bout de code pour populer le champ qui me fait défaut, peut-être une requête pour le formulaire principal plus conséquente (…mais sans jointure possible entre les deux tables de base, la requête va être longue et douloureuse :))

Je vous joints un petit exemple de mn problème, dans lequel j’ai collé au plus près de la réalité, notamment en intégrant un lien n-n entre une des tables mères et la table fille. J’ai bien sûr fait le modèle relationnel.

En espérant avoir été clair, merci infiniment de votre aide généreuse !

SinBDDExemple01.odb

LibreOffice Version: 6.2.3.2
sur MacOS.

Bonjour

Si j’ai bien compris la question, tu peux remplacer dans le contrôle Table TableReponses la zone de texte ExtAudit par une zone de liste (clic droit sur l’en-tête puis Remplacer par).

Tu fondes la iste sur un contenu de type sql avec :

  • contenu: SELECT "NomAudit", "IdAudit" FROM "TAudits"
  • Champ lié : 1

La valeur champ lié commençant à zéro et le champ IdAudit étant placé en 2ème, c’est ce dernier qui sera stocké mais c’est le libellé qui sera affiché.

Voir SinBDDExemple01.odb

[Ajout 26-05-19 11:00]

Nouvelle version SinBDDExemple01.odb tenant compte de la demande :

  1. sélection de l’audit
  2. sélection de la question
  3. saisie de la réponse

Dans le formulaire FormulaireListePys j’utilise le principe utilisé dans la version précédente : remplacement de la zone de texte par une zone de liste pour la colonne ExtIdQuestion. La liste affiche toutes les questions regroupées par groupe de question. Mais, cette fois, le sous-formulaire/contrôle table est fondé sur la table TReponses.

Le formulaire FormulaireListeBrut est le même sans présentation, permettant de visualiser les colonnes masquées dans le précédent.

Le formulaire FormulaireUneLigne montre une autre présentation pour le sous-formulaire (les questions ne sont pas listées en tableau).

J’anticipe ta remarque ceci ne permet pas la sélection intermédiaire des questions par groupe. Il est peut-être possible de créer une requête ou une vue permettant le filtre par groupe et de fonder la liste sur cette requête (au lieu du sql que j’ai utilisé)… Mais bon… je n’ai pas trop de temps :slight_smile:

Cordialement

Bonjour et merci pour cette réponse :slight_smile:

Malheureusement, je souhaite ne pas avoir à sélectionner l’audit pour chaque ligne de réponse : je veux choisir d’abord l’audit (qui sera donc le même pour la suite de la saisie, jusqu’à éventuellement en changer), le groupement (idem), PUIS naviguer dans les questions et renseigner les réponses.

Je ne souhaite donc pas avoir à indiquer l’audit (ni la question) pour chaque ligne de la table TReponses. Dans ma base exemple, j’ai laissé les colonnes affichées pour éviter toute confusion mais in fine, je souhaite n’avoir que le champ “LibelleReponse” à remplir manuellement dans la zone “réponse”.

Est-il possible de faire en sorte que le champ ExtIdAudit soit “égal” (en filtrage comme en création de lignes) à la valeur de l’id de la ligne choisie dans la première liste “Choix de l’audit” ? (…ça ressemble à lier un sous-formulaire à un formulaire parent, mais j’ai besoin de faire cela deux fois).

Merci ! :slight_smile:

Merci Pierre-Yves ! C’est très gentil d’avoir encore passé du temps sur mon problème.

Je vais prendre ton fichier et creuser, on n’est pas loin de la solution je pense/j’espère :slight_smile:

Je vous tiens évidemment au courant.

@Pierre-Yves,

Je creuse une piste en utilisant une table de paramètres dans laquelle sont stockées les Id concernés… ça semble pas mal : à suivre. Je vous tiens au courant.

Sinon, ce sera macro, mais ce n’était évidemment pas le but.