[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.

[Résolu] formulaire avec plusieurs tables

Messagepar fcka » 25 Nov 2018 16:16

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 édition par micmac le 21 Fév 2019 16:38, édité 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
fcka
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 53
Inscrit le : 02 Fév 2018 23:15

Re: formulaire avec plusieurs tables

Messagepar jeanmimi » 25 Nov 2018 19:58

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 : Version: 6.2.4.2 (x64) (1 juin 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 14866
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: formulaire avec plusieurs tables

Messagepar fcka » 25 Nov 2018 21:33

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   AgrandirRéduire
------------------------------------------------------------
-- 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
fcka
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 53
Inscrit le : 02 Fév 2018 23:15

Re: formulaire avec plusieurs tables

Messagepar jeanmimi » 25 Nov 2018 22:05

Pourquoi les clés primaires ne sont-elles pas de typé INTEGER ?
LibreOffice Version : Version: 6.2.4.2 (x64) (1 juin 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 14866
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: formulaire avec plusieurs tables

Messagepar fcka » 25 Nov 2018 22:51

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   AgrandirRéduire
-- 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
fcka
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 53
Inscrit le : 02 Fév 2018 23:15

Re: formulaire avec plusieurs tables

Messagepar jeanmimi » 26 Nov 2018 10:03

En modifiant légèrement ton code (noms des champs entre guillemets) :
Code : Tout sélectionner   AgrandirRéduire
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é 409 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é 20 fois
LibreOffice Version : Version: 6.2.4.2 (x64) (1 juin 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 14866
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: formulaire avec plusieurs tables

Messagepar fcka » 27 Nov 2018 01:24

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
fcka
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 53
Inscrit le : 02 Fév 2018 23:15

Re: formulaire avec plusieurs tables

Messagepar jeanmimi » 27 Nov 2018 11:35

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 : Version: 6.2.4.2 (x64) (1 juin 2019)
Java (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 14866
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

Re: formulaire avec plusieurs tables

Messagepar fcka » 21 Fév 2019 16:17

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
fcka
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 53
Inscrit le : 02 Fév 2018 23:15


Retour vers Base de données

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)