[BASE] Formulaire – ne pas afficher une entrée qui est en double dans une table

Bonjour tout le monde,

J’ai une base de données référencent tous mes DVD/Blu-ray. J’avais déjà fait récemment une base du même genre pour mes CD, j’avais déjà posé une question d’ailleurs.

Celle pour les DVD est sur le même modèle.

Image DVD Thèque

J’ai trois tables

  • Une table DVD Thèque, avec toutes les informations sur les films DVD rentrés (titre, réalisateur, genre, année de production, etc.)

  • Une table genre (référencent tous les genres, car beaucoup se répètent). Table utilisée pour liste déroulante.

  • Une table format (DVD ou Blu-ray) pour liste déroulante également.

Dans la partie formulaire, image ci-dessus, j’ai un tableau Genre, un tableau Réalisateur et un tableau Titre du DVD. Chaque tableau est dans un sous-formulaire différent.

Ils sont reliés entre eux (champs maîtres/esclaves). Quand je sélectionne un genre ça affiche dans le 2e tableau les réalisateurs ayant réalisé un ou des films correspondant au genre choisis et quand je clique sur le nom d’un réalisateur ça filtre dans le 3e tableau les films du réalisateur en question correspondants au genre (1er tableau). Les informations sur le film sélectionné s’affichent dans un sous-formulaire en dessous. Tout cela fonctionne bien.

J’espère être assez clair dans mes explications.

Problème, quand un réalisateur a réalisé plusieurs films d’un même genre il apparaît plusieurs fois dans le tableau Réalisateur.

Sur la capture ci-dessus, on peut le remarquer avec Fritz Lang qui a réalisé deux films que j’ai classés dans le genre aventure, son nom apparaît donc deux fois.

Comment faire pour qu’il apparaisse qu’une seule fois ?

Merci à vous :slight_smile:

Je suppose que les filtrages s’effectuent par des requêtes. Sans savoir aucunement comment ta base est structurée, je dirai juste d’ajouter un DISTINCT après le SELECT de la requête des réalisateurs…

Bonjour Primus,

Merci pour ta réponse rapide.

Alors, j’ai résolu mon souci qui venait bien d’une requête SQL.

J’avais une requête de sélection qui affichait uniquement les enregistrements de la colonne « réalisateur » qui est dans la table principale. Cette requête avait déjà DISTINCT.

SELECT DISTINCT "realisateur" FROM "T_DVDTHEQUE" ORDER BY "realisateur" ASC

et en faite il fallait en plus de réalisateur récupérer dans la même requête les genres.

SELECT DISTINCT "realisateur", "genre" FROM "T_DVDTHEQUE" ORDER BY "realisateur" ASC

Puis dans le tableau réalisateur => Propriétés du formulaire => Données, récupérer le contenu de la bonne requête enfin lier les champs maîtres/esclaves au tableau des genres (le 1er) et tout fonctionne.

:slight_smile:

Bonjour

L’important est que tu considères ta question résolue mais je ne partage pas ton point de vue. Le problème vient selon moi de la mauvaise structuration de tes données (non respect des “formes normales” d’un système de base de données relationnelles). Il devrait y avoir une table Réalisateur et une table “relation” pour gérer la notion un réalisateur peut réaliser plusieurs films et un film peut avoir plusieurs réalisateurs.

Cordialement

Tu pourrais joindre un modèle de ta base ?

Rebonjour,

Oui je pense aussi que ce n’est pas parfait.

Je joins un modèle, mais il est “cassé”. Les tableau dans le formulaire ne fonctionne pas tous.
C’est parce que j’ai eu une erreur FATAL Java (je suis sous Linux) sur le bon fichier.
Mes tables étaient toutes vides, plus aucune données et évidemment impossible de
revenir en arrière trop content :roll_eyes:

Heureusement j’avais une copie avec les données, mais copie imparfaite.

Voici le modèle, le lien de téléchargement doit être fonctionnel, c’est mon Nextcloud.

Merci à toi.

Je ne parviens pas à me connecter à votre NextCloud. Peut-être avez-vous besoin de télécharger une copie à partir de NextCloud, puis de la télécharger sur Ask.LibreOffice.org

Après réflexion, que diriez-vous si vous jetez un coup d’œil à l’échantillon que je télécharge? Il fournit un moyen de filtrer votre liste. Le mérite revient à un gars intelligent nommé @Villeroy qui m’a montré comment faire cela.
DVD_Collection.odb (14.4 KB)

Bonjour James,

Ask.LibreOffice.org me dit que mon fichier est trop lourd. Voici un lien qui devrait mieux fonctionner

J’ai télécharger DVD_Collection.odb je vais regarder. Merci à vous

Malheureusement, votre base de données n’est pas normalisée, vous n’avez donc pas le choix de sélectionner un Realisateur DISTINCT. Vous devez supprimer la colonne « genre » de cette requête:

RQT_AfficherRealisateurEt GenreUniquementTableT_MADVDTHEQUE
SELECT DISTINCT “realisateur”, “genre” FROM “T_MADVDTHEQUE” ORDER BY “realisateur” ASC

Étant donné que chaque réaliste peut être connecté à plus d’un genre, vous obtiendrez toujours des doublons lorsque le genre est inclus dans la liste de colonnes DISTINCT.

Dans la base de données que vous avez téléchargée, j’ai remarqué que votre sous-formulaire [Titre du DVD] n’était pas lié au formulaire parent. J’ai ajouté ces liens, comme indiqué dans le JPG ci-joint.
SetSubformRelations