Assistant formulaire ne détecte pas les relations
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.
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.
- TITANIUM
- Membre OOrganisé
- Messages : 83
- Inscription : 03 févr. 2011 22:02
- Localisation : Cancun, Mexico
Assistant formulaire ne détecte pas les relations
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.
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
-
- 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
LibreOffice 7.2.7.2
W10
- Bidouille
- RespOOnsable forum
- Messages : 12196
- Inscription : 08 nov. 2005 17:23
- Localisation : Caen, France
- Contact :
Re: Assistant formulaire ne détecte pas les relations
Bonjour,
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.
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.Dans votre signature, il y a écrit :LibreOffice 7.3.0.1 (x64)
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.
- jeanmi2403
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 10:02
- Localisation : Val de Marne
Re: Assistant formulaire ne détecte pas les relations
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,
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
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
- TITANIUM
- Membre OOrganisé
- Messages : 83
- Inscription : 03 févr. 2011 22:02
- Localisation : Cancun, Mexico
Re: Assistant formulaire ne détecte pas les relations
Bonjour,
Désolé... Ma courbe d'apprentissage de BASE est extrêmement lente! (gestion des priorités peu en faveur de cet apprentissage... )
Jeanmi2403:
(J'ai également téléchargé la version stable 6.4.7, just in case...!)
Jeanmi2403:
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:
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:
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?
Jeanmi2403:
Jeanmi2403:
Merci pour votre attention.
Désolé... Ma courbe d'apprentissage de BASE est extrêmement lente! (gestion des priorités peu en faveur de cet apprentissage... )
Jeanmi2403:
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.Pour compléter les remarques de Bidouille, la version est certainement 7.0.3.
le problème n'est pas une question de version
(J'ai également téléchargé la version stable 6.4.7, just in case...!)
Jeanmi2403:
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.c'est parfaitement logique, au vu des relations.
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:
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)Ensuite, pourquoi vouloir créer un second formulaire ? Surtout avec des données qui sont uniques dans le formulaire principal.
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:
Countries_tbl contient les données des pays, dont le code numérique ISO de sa devise (Foreign Key?)Il faudrait aussi connaître la finalité de ce formulaire.
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?
Jeanmi2403:
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!)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.
Jeanmi2403:
Comment fait-on cela? Est-ce que je pourrais mettre à jour ou saisir des données dans les deux tables?on peut le faire en utilisant une liste présentant le contenu de la seconde table.
Merci pour votre attention.
Lémi
LibreOffice 7.2.7.2
W10
LibreOffice 7.2.7.2
W10
- jeanmi2403
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 10:02
- Localisation : Val de Marne
Re: Assistant formulaire ne détecte pas les relations
Bonsoir,
La doc :
Je recommande la lecture du Guide Base débutant, section formulaires.
Cordialement,
La doc :
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.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.
Ajout : Fichier remplacé par la bonne version |
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
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
- TITANIUM
- Membre OOrganisé
- Messages : 83
- Inscription : 03 févr. 2011 22:02
- Localisation : Cancun, Mexico
Re: Assistant formulaire ne détecte pas les relations
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 )
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,
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 )
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
LibreOffice 7.2.7.2
W10
- jeanmimi
- 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
Bonjour,
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. 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.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.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
- TITANIUM
- Membre OOrganisé
- Messages : 83
- Inscription : 03 févr. 2011 22:02
- Localisation : Cancun, Mexico
Re: Assistant formulaire ne détecte pas les relations
Bonjour à tous,
Tous mes vœux pour cette année 2021: Pleins de projets et succès pour tous!
@jeanmimi:
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:
HSQL est "déprécié" et Firebird est "expérimental"... Sur quel moteur dois-je faire mon test?...
@jeanmi2403
Merci pour votre soutien
Joyeuse Nouvelle Année 2021
Tous mes vœux pour cette année 2021: Pleins de projets et succès pour tous!
@jeanmimi:
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").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.
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:
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é").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.
HSQL est "déprécié" et Firebird est "expérimental"... Sur quel moteur dois-je faire mon test?...
@jeanmi2403
Je comprends l'information, mais je ne comprends pas la logique. Pourquoi peut-on seulement afficher le côté "un" de la relation?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.
Merci pour votre soutien
Joyeuse Nouvelle Année 2021
Lémi
LibreOffice 7.2.7.2
W10
LibreOffice 7.2.7.2
W10
- jeanmi2403
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 10:02
- Localisation : Val de Marne
Re: Assistant formulaire ne détecte pas les relations
Bonsoir,
Par exemple : un client > des commandes, une facture > des articles, etc...
A +
Pour éviter ça : Outils > Options > Avancé et décocher les fonctions expérimentales (instables)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?...
Peur-être pas logique, mais le fonctionnement a été défini comme ça ; Clé primaire dans le premier, clé étrangère dans le second.Je comprends l'information, mais je ne comprends pas la logique. Pourquoi peut-on seulement afficher le côté "un" de la relation?
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
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
- TITANIUM
- Membre OOrganisé
- Messages : 83
- Inscription : 03 févr. 2011 22:02
- Localisation : Cancun, Mexico
Re: Assistant formulaire ne détecte pas les relations
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.
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
LibreOffice 7.2.7.2
W10
- jeanmi2403
- SuppOOrter
- Messages : 1398
- Inscription : 18 janv. 2008 10:02
- Localisation : Val de Marne
Re: Assistant formulaire ne détecte pas les relations
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,
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
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX