[Résolu] formulaire avec plusieurs tables

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.
fcka
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 02 févr. 2018 23:15

[Résolu] formulaire avec plusieurs tables

Message par fcka »

bonjour,
j'ai fais un mcd que je voudrai tester dans un seul formulaire.
j'ai positionné chaque table dans le formulaire et relié les clés mais cela ne marche pas.
pourriez vous s'il vous plait m'indiquer quelle est l'astuce? merci par avance.
ps.: je suis preneur d'un exemple.
merci
Pièces jointes
Screen Shot 11-25-18 at 03.40 PM.PNG
Dernière modification par micmac le 21 févr. 2019 16:38, modifié 4 fois.
Raison : Ajout de [Résolu]
HOME : (car pb avec base/postgresl avec version plus récente)
libre office Version: 6.0.6.2 (x64)
Win 8.1

DESK: (imposé)
libre office Version: 5 (x64)
Win 7
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: formulaire avec plusieurs tables

Message par jeanmimi »

Bonjour,
fcka a écrit :j'ai positionné chaque table dans le formulaire et relié les clés mais cela ne marche pas.
Avec la copie d'écran comme seul indice, il est impossible de savoir ce qui empêche le fonctionnement.
Donc, au hasard, est-ce qu'il n'y aurait pas une relation entre deux champs de qualités différentes, par ex INTEGER avec TEXT ?
Il manque une Table des vendeurs, ce qui éviterait de saisir leur nom pour chaque transaction.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
fcka
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 02 févr. 2018 23:15

Re: formulaire avec plusieurs tables

Message par fcka »

Bonjour,
Je ne trouve pas le pb ... J'ai essayé de faire le formulaire avec seulement 3 tables (dia, ref, bien) et cela ne fonctionne pas.

Ci-dessous le code de ces 3 tables (la base est sur postgresql et 'base' le sert d'interface).

Code : Tout sélectionner

------------------------------------------------------------
-- Table: bien
------------------------------------------------------------
CREATE TABLE public.bien(
	num_bien            SERIAL NOT NULL ,
	vendeur             VARCHAR (50) NOT NULL ,
	date_recep_mairie   DATE  NOT NULL ,
	date_recep_pref     DATE  NOT NULL  ,
	CONSTRAINT bien_PK PRIMARY KEY (num_bien)
)WITHOUT OIDS;

------------------------------------------------------------
-- Table: dia
------------------------------------------------------------
CREATE TABLE public.dia(
	num                     SERIAL NOT NULL ,
	num_dia                 INT  NOT NULL ,
	adresse_du_bien         VARCHAR (150)  ,
	acquereur               VARCHAR (50)  ,
	montant_euros           NUMERIC (10,2)   ,
	copropriete             BOOL   ,
	superficie_bien_m2      NUMERIC (10,2)   ,
	superficie_terrain_m2   NUMERIC (15,2)   ,
	ref_cadas_longue        VARCHAR (100)  ,
	num_bien                INT  NOT NULL  ,
	CONSTRAINT dia_PK PRIMARY KEY (num)

	,CONSTRAINT dia_bien_FK FOREIGN KEY (num_bien) REFERENCES public.bien(num_bien)
)WITHOUT OIDS;

------------------------------------------------------------
-- Table: _ref_cadas
------------------------------------------------------------
CREATE TABLE public._ref_cadas(
	pk_ref       SERIAL NOT NULL ,
	section      VARCHAR (2)  ,
	parcelle     VARCHAR (4)  ,
	ind_partie   BOOL   ,
	superf_ha    INT   ,
	superf_a     INT   ,
	superf_ca    INT   ,
	num          INT  NOT NULL  ,
	CONSTRAINT _ref_cadas_PK PRIMARY KEY (pk_ref)

	,CONSTRAINT _ref_cadas_dia_FK FOREIGN KEY (num) REFERENCES public.dia(num)
)WITHOUT OIDS;


HOME : (car pb avec base/postgresl avec version plus récente)
libre office Version: 6.0.6.2 (x64)
Win 8.1

DESK: (imposé)
libre office Version: 5 (x64)
Win 7
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: formulaire avec plusieurs tables

Message par jeanmimi »

Pourquoi les clés primaires ne sont-elles pas de typé INTEGER ?
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
fcka
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 02 févr. 2018 23:15

Re: formulaire avec plusieurs tables

Message par fcka »

bonjour,
j'avoue que je n'ai pas beaucoup d'expérience... j'ai lu qu'il faut absolument une clé primaire par table et que cette clé doit être non nulle et unique.
Du coup une variable auto-incrémentée pour chaque ligne dans chaque table me semblait être une bonne solution.

je viens de générer à nouveau le code avec des clés primaires typées integer, mais cela coince encore...

Code : Tout sélectionner

-- Table: bien
------------------------------------------------------------
CREATE TABLE public.bien(
	num_bien            INTEGER  NOT NULL ,
	vendeur             VARCHAR (50) NOT NULL ,
	date_recep_mairie   DATE  NOT NULL ,
	date_recep_pref     DATE  NOT NULL  ,
	CONSTRAINT bien_PK PRIMARY KEY (num_bien)
)WITHOUT OIDS;

------------------------------------------------------------
-- Table: dia
------------------------------------------------------------
CREATE TABLE public.dia(
	num                     INTEGER  NOT NULL ,
	num_dia                 INT  NOT NULL ,
	adresse_du_bien         VARCHAR (150)  ,
	acquereur               VARCHAR (50)  ,
	montant_euros           NUMERIC (10,2)   ,
	copropriete             BOOL   ,
	superficie_bien_m2      NUMERIC (10,2)   ,
	superficie_terrain_m2   NUMERIC (15,2)   ,
	ref_cadas_longue        VARCHAR (100)  ,
	num_bien                INTEGER  NOT NULL  ,
	CONSTRAINT dia_PK PRIMARY KEY (num)

	,CONSTRAINT dia_bien_FK FOREIGN KEY (num_bien) REFERENCES public.bien(num_bien)
)WITHOUT OIDS;

------------------------------------------------------------
-- Table: _ref_cadas
------------------------------------------------------------
CREATE TABLE public._ref_cadas(
	pk_ref       INTEGER  NOT NULL ,
	section      VARCHAR (2)  ,
	parcelle     VARCHAR (4)  ,
	ind_partie   BOOL   ,
	superf_ha    INT   ,
	superf_a     INT   ,
	superf_ca    INT   ,
	num          INTEGER  NOT NULL  ,
	CONSTRAINT _ref_cadas_PK PRIMARY KEY (pk_ref)

	,CONSTRAINT _ref_cadas_dia_FK FOREIGN KEY (num) REFERENCES public.dia(num)
)WITHOUT OIDS;
HOME : (car pb avec base/postgresl avec version plus récente)
libre office Version: 6.0.6.2 (x64)
Win 8.1

DESK: (imposé)
libre office Version: 5 (x64)
Win 7
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: formulaire avec plusieurs tables

Message par jeanmimi »

En modifiant légèrement ton code (noms des champs entre guillemets) :

Code : Tout sélectionner

CREATE TABLE  T_public_bien ("ID_num_bien" INTEGER IDENTITY , "Vendeur " VARCHAR(50),  "date_recep_mairie" DATE, "date_recep_pref" DATE)
en Mode SQL, je crée bien la Table que j'ai appelée T_public_bien.
CREATE TABLE.png
CREATE TABLE.png (10.15 Kio) Consulté 2334 fois
Par Affichage > Actualiser les Tables, ou après enregistrement de la Base et fermeture, à sa réouverture la Table est bien présente.
Pièces jointes
Base par MCD.odb
(3.33 Kio) Téléchargé 143 fois
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
fcka
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 02 févr. 2018 23:15

Re: formulaire avec plusieurs tables

Message par fcka »

bonjour,
merci pour votre aide, mais cela ne répond pas tout à fait à mon problème de départ. Désolé.
mon pb est de ne pas pourvoir faire de la saisie dans un formulaire composée de mes 3 tables.

J'ai trouvé un tuto sur internet https://www.youtube.com/watch?v=TcudVETPePY qui montre comment faire justement un formulaire avec 3 tables.

Dans ce tuto, j'ai noté que la clé primaire de la table principale est la clé étrangère dans les 2 autres tables et ce n'est justement pas mon cas.
C'est peut-être que la source de mon pb. :? Dois-je en déduire que je me retrouve un pb de conception de ma base ou bien existe -t-il "des contraintes" pour relier les tables '?
Pièces jointes
Capture.PNG
HOME : (car pb avec base/postgresl avec version plus récente)
libre office Version: 6.0.6.2 (x64)
Win 8.1

DESK: (imposé)
libre office Version: 5 (x64)
Win 7
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: formulaire avec plusieurs tables

Message par jeanmimi »

fcka a écrit :Dois-je en déduire que je me retrouve un pb de conception de ma base ou bien existe -t-il "des contraintes" pour relier les tables '?
Comme on n'a toujours pas vu ta Base, difficile de tester.
Quant aux contraintes, je suggérais :
jeanmimi a écrit :Donc, au hasard, est-ce qu'il n'y aurait pas une relation entre deux champs de qualités différentes, par ex INTEGER avec TEXT ?
Et lorsque tu écris :
fcka a écrit :mon pb est de ne pas pourvoir faire de la saisie dans un formulaire composée de mes 3 tables.
la solution est de créer un Formulaire avec des sous-formulaires.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
fcka
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 02 févr. 2018 23:15

Re: formulaire avec plusieurs tables

Message par fcka »

merci
HOME : (car pb avec base/postgresl avec version plus récente)
libre office Version: 6.0.6.2 (x64)
Win 8.1

DESK: (imposé)
libre office Version: 5 (x64)
Win 7
Répondre