Assistant formulaire ne détecte pas les relations

Discussions sur le module de base de données Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.
Répondre
Avatar de l’utilisateur
TITANIUM
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 03 févr. 2011 22:02
Localisation : Cancun, Mexico

Assistant formulaire ne détecte pas les relations

Message par TITANIUM »

Bonjour à tous,

J'ai créé une base de donnée CountryData.obd (en pièce jointe)
J'ai créé les liens relations avec le menu Outils\Relations.

Je veux créer un formulaire pour consulter le nom de la devise (dans quelques cas le nom de la devise secondaire) d'un pays donné.
J'ai séparé les devises dans une table pour 2 raisons:
1. Certains pays (plusieurs d'Amérique latine) disposent d'une devise principale et d'une devise secondaire (existant essentiellement pour des raisons internes; du type inflation galopante...)
2. Pour la table de taux de change, ça m'a paru plus facile de mettre les devises dans une table séparée.
Donc, il me faut les données de la table Countries_tbl et les données de la table Currencies_tbl
Quand j'ouvre l'assistant de création de formulaire, après avoir choisi tous les champs de la table Countries_tbl, j'arrive à la création de sous-formulaire.
Aucune relation n'apparaît alors qu'elles existent.
Si j'utilise comme table initiale Currencies_tbl, dans ce cas, les relations apparaissent.
Je ne comprends pas pourquoi (De toute façon, le formulaire obtenu ainsi ne me convient pas puisqu'il liste les devises. Or, je veux lister les pays et lire le nom de la devise du pays).

Par avance, merci.
Pièces jointes
Aucune relation n'apparait
Aucune relation n'apparait
Relations_CountryData.png
CountryData.odb
(7.45 Kio) Téléchargé 123 fois
Dernière modification par TITANIUM le 03 déc. 2020 20:27, modifié 1 fois.
Lémi
LibreOffice 7.2.7.2
W10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12196
Inscription : 08 nov. 2005 17:23
Localisation : Caen, France
Contact :

Re: Assistant formulaire ne détecte pas les relations

Message par Bidouille »

Bonjour,
Dans votre signature, il y a écrit :LibreOffice 7.3.0.1 (x64)
Comme mentionné dans le fil "Soyez à jour des dernières versions", celle-ci est expérimentale et non recommandée sur ce forum. Vous êtes bien sûr libre de l'utiliser mais nous allons vous demander de tester votre document avec la dernière version stable.

Notez également que votre document utilise Firebird comme moteur. Celui-ci fait également partie des fonctionnalités expérimentales. Il faudrait faire votre test sur l'accès natif HSQL.

Revenez ensuite nous dire ce qu'il en est.
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: Assistant formulaire ne détecte pas les relations

Message par jeanmi2403 »

Bonjour,
Pour compléter les remarques de Bidouille, la version est certainement 7.0.3.
le problème n'est pas une question de version, c'est parfaitement logique, au vu des relations
Ensuite, pourquoi vouloir créer un second formulaire ? Surtout avec des données qui sont uniques dans le formulaire principal.
Il faudrait aussi connaître la finalité de ce formulaire. S'il s'agit de nourrir des champs de la table Country à partir des autres tables, on peut le faire en utilisant une liste présentant le contenu de la seconde table.
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
TITANIUM
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 03 févr. 2011 22:02
Localisation : Cancun, Mexico

Re: Assistant formulaire ne détecte pas les relations

Message par TITANIUM »

Bonjour,

Désolé... Ma courbe d'apprentissage de BASE est extrêmement lente! (gestion des priorités peu en faveur de cet apprentissage... :aie: )

Jeanmi2403:
Pour compléter les remarques de Bidouille, la version est certainement 7.0.3.
le problème n'est pas une question de version
OK, donc j'ignore le conseil de Bidouille? Pardon pour la version, erreur de doigt dans la mise à jour de ma signature. C'est effectivement la version 7.0.3.
(J'ai également téléchargé la version stable 6.4.7, just in case...!)

Jeanmi2403:
c'est parfaitement logique, au vu des relations.
OK. Pourriez-vous m'expliquer la logique? Selon ma compréhension (certes limitée), il s'agit d'une relation. Elle devrait être visible depuis les deux tables concernées par la relation.
Pourquoi est-elle visible seulement depuis la table Currencies_tbl et non depuis Countries_tbl?
De ce point de vue, n'y aurait-il pas une erreur dans la sémantique? Il faudrait parler de connexion, car dans le cas présent, BASE voit la connexion seulement du côté 1 (pas du côté n) de cette relation 1-n. Selon ma compréhension de ce que j'ai appris sur BASE, la relation invoque le trait entre les deux tables. La connexion, invoque "la prise" sur laquelle est "branchée" la relation. (Je suis pas certain d'être clair dans l'explication de mon incompréhension, pardon!).

Jeanmi2403:
Ensuite, pourquoi vouloir créer un second formulaire ? Surtout avec des données qui sont uniques dans le formulaire principal.
Je veux connaître le nom de la devise et son trigramme (contenus dans Currencies_tbl) . Countries_tbl contient seulement son code numérique (Données ISO)
Donc, dans mon raisonnement, je consulte un pays, j'obtiens le code numérique de sa devise également qui est la clé principale de Currencies_tbl pour obtenir son nom et trigramme.
J'ai faux?

Jeanmi2403:
Il faudrait aussi connaître la finalité de ce formulaire.
Countries_tbl contient les données des pays, dont le code numérique ISO de sa devise (Foreign Key?)
Currencies_tbl contient les données des devises code numérique ISO de la devise (Clé principale), nom de la devise et trigramme de la devise.
Finalité 1: Je veux pouvoir les consulter en fonction du pays (Tel pays a telle devise) le nom et le trigramme de la devise. (Donc afficher en fonction du pays consulté, le nom de la devise et son trigramme)
Si je crée un formulaire avec la seule table Countries_tbl, je n'ai que le code numérique de la devise. Je veux pouvoir connaître (afficher) à partir de ce code, le nom et le trigramme de la devise.
Finalité 2: L'autre utilité est en cas de mise à jour des données ISO concernant les pays et/ou leur devise (relativement rare, mais possible), je veux pouvoir modifier les données des tables correspondantes ou rajouter la création d'un nouveau pays et/ou d'une nouvelle devise. Les relations sont supposées mettre en jour en cascade les données, n'est-ce pas?
(Finalité de la finalité: J'essaie d'apprendre tout en créant quelque chose qui me sera utile pour pouvoir saisir les taux de change entre les devises de divers pays. Mais comme je n'ai pas encore ouvert de fil dans la catégorie projet, j'en reste à "une seule question par fil".)

A vous lire, j'ai l'impression que je n'ai pas la bonne approche, ou si? :shock:

Jeanmi2403:
S'il s'agit de nourrir des champs de la table Country à partir des autres tables, on peut le faire en utilisant une liste présentant le contenu de la seconde table.
Je ne suis pas certain de comprendre l'expression "nourrir des champs de Countries_tbl". Je veux pouvoir consulter/modifier et saisir des données dans les deux tables (sachant que les modifications et saisies seront relativement rares - je suppose!)

Jeanmi2403:
on peut le faire en utilisant une liste présentant le contenu de la seconde table.
Comment fait-on cela? Est-ce que je pourrais mettre à jour ou saisir des données dans les deux tables?


Merci pour votre attention.
Lémi
LibreOffice 7.2.7.2
W10
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: Assistant formulaire ne détecte pas les relations

Message par jeanmi2403 »

Bonsoir,
La doc :
Les sous-formulaires sont destinés à afficher simultanément les données d’une table reliée à celle du formulaire principal par l’intermédiaire d’une relation de type "un-à-plusieurs" : le formulaire principal représente le côté "un" de la relation tandis que le sous-formulaire représente le côté "plusieurs". Le sous-formulaire peut être représenté sous la forme d’une feuille de données ou d’un formulaire classique.
Un formulaire a accès à toutes les tables de la base. Les relations ne sont pas nécessaires à ce stade, on pourrait très bien les supprimer, car les champs sont liés dans les propriétés du contrôle liste.
 Ajout : Fichier remplacé par la bonne version 
CountryData.odb
Formulaire avec liste déroulante depuis une autre table
(16.31 Kio) Téléchargé 121 fois
Je recommande la lecture du Guide Base débutant, section formulaires.

Cordialement,
Dernière modification par jeanmi2403 le 05 déc. 2020 01:30, modifié 3 fois.
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
TITANIUM
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 03 févr. 2011 22:02
Localisation : Cancun, Mexico

Re: Assistant formulaire ne détecte pas les relations

Message par TITANIUM »

Jean-Michel,

1. Merci pour la réponse rapide,

2. La version que vous avez mis en pièce jointe ne contient aucun formulaire. Y-a-t-il une erreur? (Merci :D )

3. Elle m'a permis, cependant, de voir que la table Countries_tbl de la version que j'ai mis en pièce jointe ne contient aucune donnée de pays, sauf l'Antarctique qui ne possède pas (encore) de devise... Toutes les données ISO des pays existants actuellement ont simplement disparues!!!
Cette table ne s'est pas copiée correctement depuis la base de données de mon projet.
Je vais l'actualiser en utilisant la version stable de Libreoffice (6.4.7 au moment de l'édition de ce message) parce qu'effectivement, Libreoffice 7.0.3.1 a planté quand j'ai cherché à manipuler les tables d'une base de donnée à l'autre. (Bidouille pourrait écrire: Je l'avais dit!!! Hahaha!)

4. Je vais donc relire ce document "Chapitre 8 - Débuter avec Base"... Merci pour le rappel.

Cordialement,
Lémi
LibreOffice 7.2.7.2
W10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Assistant formulaire ne détecte pas les relations

Message par jeanmimi »

Bonjour,
TITANIUM a écrit :Countries_tbl contient les données des pays, dont le code numérique ISO de sa devise (Foreign Key?)
Currencies_tbl contient les données des devises code numérique ISO de la devise (Clé principale), nom de la devise et trigramme de la devise.
Il est aussi possible de le faire dans une seule Table. La seule contrainte sera d'avoir deux lignes pour le pays qui a aussi une monnaie secondaire.
Base_pays_monnaies.odb
(27.32 Kio) Téléchargé 129 fois
Pour la recherche d'un enregistrement dans le formulaire, il y a deux possibilités, la première, citée plus haut par jeanmi2403, d'une sélection dans un contrôle de liste du MainForm et affichage dans le SubForm du formulaire, la deuxième, une Recherche dans la Barre d'outils Navigation pour formulaire par clic sur l'icone de la recherche (loupe ou jumelles selon les versions). La recherche se fait en tapant les premières lettres de l’enregistrement.
Pièces jointes
LO 7.0.3 Recherche d'enregistrement.jpg
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
TITANIUM
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 03 févr. 2011 22:02
Localisation : Cancun, Mexico

Re: Assistant formulaire ne détecte pas les relations

Message par TITANIUM »

Bonjour à tous,

Tous mes vœux pour cette année 2021: Pleins de projets et succès pour tous!

@jeanmimi:
Il est aussi possible de le faire dans une seule Table. La seule contrainte sera d'avoir deux lignes pour le pays qui a aussi une monnaie secondaire.
Oui, j'avais pensé à cette façon de faire. Je ne suis pas convaincu par cette structure (2 lignes pour pouvoir accepter la monnaie secondaire de seulement quelques pays), Cela ne va pas dans la logique d'une gestion de la mémoire optimisée - selon ma compréhension. D'autant que les monnaies secondaires sont d'un usage très spécifique, souvent interne aux pays qui les utilisent (principalement liés aux problèmes d'inflation qu'ils "affrontent").
Dans le même registre d'idée, il serait plus simple d'éliminer ces monnaies secondaires, mais ce n'est pas ce que je recherche. Je souhaite qu'un pays puisse avoir une monnaie principale et une monnaie secondaire si nécessaire.
J'ai aussi un problème avec la BDD donnée en pièce jointe:
Bidouille dit de Firebird:
Notez également que votre document utilise Firebird comme moteur. Celui-ci fait également partie des fonctionnalités expérimentales. Il faudrait faire votre test sur l'accès natif HSQL.
Même dans la version 6.4.7.2 (dite stable), un message me propose de passer Base_pays_monnaies.odb à Firebird (décrivant HSQL comme "déprécié").
HSQL est "déprécié" et Firebird est "expérimental"... Sur quel moteur dois-je faire mon test?...

@jeanmi2403
Les sous-formulaires sont destinés à afficher simultanément les données d’une table reliée à celle du formulaire principal par l’intermédiaire d’une relation de type "un-à-plusieurs" : le formulaire principal représente le côté "un" de la relation tandis que le sous-formulaire représente le côté "plusieurs". Le sous-formulaire peut être représenté sous la forme d’une feuille de données ou d’un formulaire classique.
Je comprends l'information, mais je ne comprends pas la logique. Pourquoi peut-on seulement afficher le côté "un" de la relation?

Merci pour votre soutien

Joyeuse Nouvelle Année 2021
Lémi
LibreOffice 7.2.7.2
W10
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: Assistant formulaire ne détecte pas les relations

Message par jeanmi2403 »

Bonsoir,
Même dans la version 6.4.7.2 (dite stable), un message me propose de passer Base_pays_monnaies.odb à Firebird (décrivant HSQL comme "déprécié").
HSQL est "déprécié" et Firebird est "expérimental"... Sur quel moteur dois-je faire mon test?...
Pour éviter ça : Outils > Options > Avancé et décocher les fonctions expérimentales (instables)
Je comprends l'information, mais je ne comprends pas la logique. Pourquoi peut-on seulement afficher le côté "un" de la relation?
Peur-être pas logique, mais le fonctionnement a été défini comme ça ; Clé primaire dans le premier, clé étrangère dans le second.
Par exemple : un client > des commandes, une facture > des articles, etc...
A +
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
TITANIUM
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 03 févr. 2011 22:02
Localisation : Cancun, Mexico

Re: Assistant formulaire ne détecte pas les relations

Message par TITANIUM »

Merci pour la réponse.
J'ai abandonné cette piste. C'est trop de perte de temps que d'avoir à apprendre sur un système aussi peu "amical" avec les débutants.
Que dois-je faire dans ce cas? Le laisser en "ouvert" si quelqu'un voudrait faire avancer ce fil?
Je ne pense pas y donner plus de suite pour la raison donnée dans le présent message.
Lémi
LibreOffice 7.2.7.2
W10
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: Assistant formulaire ne détecte pas les relations

Message par jeanmi2403 »

Bonsoir,
Serait-il possible d'avoir une base plus nourrie, avec une dizaine de pays ?
Je pense qu'on doit pouvoir faire quelque chose avec des requêtes.
A bientôt,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Répondre