OVH Cloud OVH Cloud

Jointures multiples

6 réponses
Avatar
Joce
Bonjour
J'ai une petite base pour gérer les factures de fluides pour un parc
immobilier réparti sur plusieurs sites.
J'ai une table des sites, une table des bâtiments, des étages, des pièces et
des
appartements.
Par ailleurs, j'ai une table qui liste tous les compteurs d'eau ou
d'électricité.
Mon problème est le suivant : Le compteur est généralement associé au
bâtiment. Mais j'ai des cas où le compteur est sur le site (arrosage par
exemple), d'autres où il est associé à chaque appartement qui compose le
bâtiment.

Dans ma table compteur, j'ai donc créé un champ qui pointe sur la table
site, un qui pointe sur la table bâtiment et un dernier qui pointe sur la
table pièces.Mais il n'y aura toujours qu'un de ces trois champs qui sera
rempli.

Y a t'il une méthode plus rigoureuse ?

D'avance merci pour vos conseils.
René

6 réponses

Avatar
Michel Walsh
Salut,


Voir message précédant.


Espérant être utile,
Vanderghast, Access MVP


"Joce" wrote in message
news:4112591b$0$31556$
Bonjour
J'ai une petite base pour gérer les factures de fluides pour un parc
immobilier réparti sur plusieurs sites.
J'ai une table des sites, une table des bâtiments, des étages, des pièces
et

des
appartements.
Par ailleurs, j'ai une table qui liste tous les compteurs d'eau ou
d'électricité.
Mon problème est le suivant : Le compteur est généralement associé au
bâtiment. Mais j'ai des cas où le compteur est sur le site (arrosage par
exemple), d'autres où il est associé à chaque appartement qui compose le
bâtiment.

Dans ma table compteur, j'ai donc créé un champ qui pointe sur la table
site, un qui pointe sur la table bâtiment et un dernier qui pointe sur la
table pièces.Mais il n'y aura toujours qu'un de ces trois champs qui sera
rempli.

Y a t'il une méthode plus rigoureuse ?

D'avance merci pour vos conseils.
René




Avatar
Joce
Bonsoir
Le problème est que je ne vois pas le message précédant.
Est-il possible de le placer sous ce fil ?
D'avance merci.
René
"Michel Walsh" a écrit dans le message
de news:
Salut,


Voir message précédant.


Espérant être utile,
Vanderghast, Access MVP


"Joce" wrote in message
news:4112591b$0$31556$
Bonjour
J'ai une petite base pour gérer les factures de fluides pour un parc
immobilier réparti sur plusieurs sites.
J'ai une table des sites, une table des bâtiments, des étages, des
pièces


et
des
appartements.
Par ailleurs, j'ai une table qui liste tous les compteurs d'eau ou
d'électricité.
Mon problème est le suivant : Le compteur est généralement associé au
bâtiment. Mais j'ai des cas où le compteur est sur le site (arrosage par
exemple), d'autres où il est associé à chaque appartement qui compose le
bâtiment.

Dans ma table compteur, j'ai donc créé un champ qui pointe sur la table
site, un qui pointe sur la table bâtiment et un dernier qui pointe sur
la


table pièces.Mais il n'y aura toujours qu'un de ces trois champs qui
sera


rempli.

Y a t'il une méthode plus rigoureuse ?

D'avance merci pour vos conseils.
René








Avatar
Michel Walsh
Salut,


Une solution est de n'utiliser que deux champs, un pour le "pointeur",
un pour le "type" (quelle table). Faire des relations 1 à plusieurs, ou,
dans les autres tables, disons dans la table batiment, faire un champ lookup
supportant la requête: SELECT CompteurID, CompteurDescription FROM
Compteurs WHERE type="batiment" ( au lieu du même énoncé, sans clause
WHERE).

Pour éditer la première table avec les données de la seconde table,
faire un design form-subform, où on change le sous formulaire à la volée
(selong le type de compteur) via la propriété SourceObject du controle
sousformulaire. Donc, quand le compteur est pour un batiment, le source
object refère au formulaire de compteur pour batiment, et quand on a un
site, le sous formulaire change et affiche à nouveau un sous formulaire
pertinent (un peu comme un Wizard).

Espérant être utile,
Vanderghast, Access MVP

"René" wrote in message
news:0adb01c47b00$6c54a6c0$
Bonjour
J'ai une petite base pour gérer les factures de fluides
pour un parc immobilier réparti sur plusieurs sites.
J'ai une table des sites, une table des bâtiments, des
étages, des pièces ou appartements.
Par ailleurs, j'ai une table qui liste tous les compteurs
d'eau ou d'électrcité.
Mon problème est le suivant : Le compteur est généralement
associé au bâtiment. Mais j'ai des cas où le compteur est
sur le site (arrosage par exemple), d'autres où il est
associé à chaque appartement qui compose le bâtiment.

Dans ma table compteur, j'ai donc créé un champ qui pointe
sur la table site, un qui pointe sur la tabe bâtiment et
un dernier qui pointe sur la table pièces.Mais il n'y aura
toujours qu'un de ces trois champs qui sera rempli.

Y a t'il une méthode plus rigoureuse ?

D'avance merci pour vos conseils.
René


"Joce" wrote in message
news:41189737$0$3170$
Bonsoir
Le problème est que je ne vois pas le message précédant.
Est-il possible de le placer sous ce fil ?
D'avance merci.
René
"Michel Walsh" a écrit dans le
message

de news:
Salut,


Voir message précédant.


Espérant être utile,
Vanderghast, Access MVP


"Joce" wrote in message
news:4112591b$0$31556$
Bonjour
J'ai une petite base pour gérer les factures de fluides pour un parc
immobilier réparti sur plusieurs sites.
J'ai une table des sites, une table des bâtiments, des étages, des
pièces


et
des
appartements.
Par ailleurs, j'ai une table qui liste tous les compteurs d'eau ou
d'électricité.
Mon problème est le suivant : Le compteur est généralement associé au
bâtiment. Mais j'ai des cas où le compteur est sur le site (arrosage
par



exemple), d'autres où il est associé à chaque appartement qui compose
le



bâtiment.

Dans ma table compteur, j'ai donc créé un champ qui pointe sur la
table



site, un qui pointe sur la table bâtiment et un dernier qui pointe sur
la


table pièces.Mais il n'y aura toujours qu'un de ces trois champs qui
sera


rempli.

Y a t'il une méthode plus rigoureuse ?

D'avance merci pour vos conseils.
René












Avatar
Joce
Bonsoir
Et merci pour le temps consacré à ma question.
Mais la réponse appelle une autre question de béotien.
Qu'est-ce qu'un champ 'lookup' qui supporte une requête ?
D'avance merci, René

"Michel Walsh" a écrit dans le message
de news:%
Salut,


Une solution est de n'utiliser que deux champs, un pour le "pointeur",
un pour le "type" (quelle table). Faire des relations 1 à plusieurs, ou,
dans les autres tables, disons dans la table batiment, faire un champ
lookup

supportant la requête: SELECT CompteurID, CompteurDescription FROM
Compteurs WHERE type="batiment" ( au lieu du même énoncé, sans clause
WHERE).

Pour éditer la première table avec les données de la seconde table,
faire un design form-subform, où on change le sous formulaire à la volée
(selong le type de compteur) via la propriété SourceObject du controle
sousformulaire. Donc, quand le compteur est pour un batiment, le source
object refère au formulaire de compteur pour batiment, et quand on a un
site, le sous formulaire change et affiche à nouveau un sous formulaire
pertinent (un peu comme un Wizard).

Espérant être utile,
Vanderghast, Access MVP



Avatar
Michel Walsh
Salut,


Lorsque on est en mode de design d'une table, pour le type de donnée, il
y a un "type de donnée" qui s'appelle "lookup wizard..." (j'ignore le terme
français). Si on utilise cette option, l'onglet Lookup (tout en bas, à
gauche) a une propriété Display Control maintenant affectée à "Combo Box".
On peut redéfinir la requête SQL (Row Source) de sorte à y ajouter une
clause WHERE, et, par la suite, assigner LimitToList à Yes. Les valeurs,
pour le champ, seront non seulement limités à la relation simple d'intégrité
(faire partie de la table référée) mais à une relation "complexe", car les
valeurs seront limitées à un PARTIE SEULEMENT des valeurs de la table
reférée (limitée par la clause WHERE de la requête).

Noter, par contre, que cette relation n'est pas maintenue par l'engin de
la base de données, mais seulement par l'édition de la table (ou par défaut
pour les nouveaux formulaires qui en dérivent). Par exemple, il sera
possible de créer un formulaire qui ne forcerait pas les données "à celles
de la liste", qui ne forcerait donc pas le "limit to list". En d'autres
mots, cela "aide" grandement dans un cas comme celui qui est décrit où on
désirerait une table "virtuelle" comme table référée, mais c'est pas
réellement totalement à toute épreuves, du moins, pas comme l'est une
relation d'intégrité standard (définie via la fenêtre d'édition de
requêtes).


Espérant être utile,
Vanderghast, Access MVP


"Joce" wrote in message
news:411a0120$0$18620$
Bonsoir
Et merci pour le temps consacré à ma question.
Mais la réponse appelle une autre question de béotien.
Qu'est-ce qu'un champ 'lookup' qui supporte une requête ?
D'avance merci, René

"Michel Walsh" a écrit dans le
message

de news:%
Salut,


Une solution est de n'utiliser que deux champs, un pour le
"pointeur",


un pour le "type" (quelle table). Faire des relations 1 à plusieurs, ou,
dans les autres tables, disons dans la table batiment, faire un champ
lookup

supportant la requête: SELECT CompteurID, CompteurDescription FROM
Compteurs WHERE type="batiment" ( au lieu du même énoncé, sans
clause


WHERE).

Pour éditer la première table avec les données de la seconde table,
faire un design form-subform, où on change le sous formulaire à la volée
(selong le type de compteur) via la propriété SourceObject du controle
sousformulaire. Donc, quand le compteur est pour un batiment, le source
object refère au formulaire de compteur pour batiment, et quand on a un
site, le sous formulaire change et affiche à nouveau un sous formulaire
pertinent (un peu comme un Wizard).

Espérant être utile,
Vanderghast, Access MVP







Avatar
Raymond [mvp]
Bonsoir Michel.

en français dans nle texte:
"lookup wizard..." = "Assistant liste de choix"

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Michel Walsh" a écrit dans le message
de news:%
Salut,


Lorsque on est en mode de design d'une table, pour le type de donnée,
il

y a un "type de donnée" qui s'appelle "lookup wizard..." (j'ignore le
terme

français). Si on utilise cette option, l'onglet Lookup (tout en bas, à
gauche) a une propriété Display Control maintenant affectée à "Combo
Box".

On peut redéfinir la requête SQL (Row Source) de sorte à y ajouter une
clause WHERE, et, par la suite, assigner LimitToList à Yes. Les valeurs,
pour le champ, seront non seulement limités à la relation simple
d'intégrité

(faire partie de la table référée) mais à une relation "complexe", car les
valeurs seront limitées à un PARTIE SEULEMENT des valeurs de la table
reférée (limitée par la clause WHERE de la requête).

Noter, par contre, que cette relation n'est pas maintenue par l'engin
de

la base de données, mais seulement par l'édition de la table (ou par
défaut

pour les nouveaux formulaires qui en dérivent). Par exemple, il sera
possible de créer un formulaire qui ne forcerait pas les données "à celles
de la liste", qui ne forcerait donc pas le "limit to list". En d'autres
mots, cela "aide" grandement dans un cas comme celui qui est décrit où on
désirerait une table "virtuelle" comme table référée, mais c'est pas
réellement totalement à toute épreuves, du moins, pas comme l'est une
relation d'intégrité standard (définie via la fenêtre d'édition de
requêtes).


Espérant être utile,
Vanderghast, Access MVP


"Joce" wrote in message
news:411a0120$0$18620$
Bonsoir
Et merci pour le temps consacré à ma question.
Mais la réponse appelle une autre question de béotien.
Qu'est-ce qu'un champ 'lookup' qui supporte une requête ?
D'avance merci, René

"Michel Walsh" a écrit dans le
message

de news:%
Salut,


Une solution est de n'utiliser que deux champs, un pour le
"pointeur",


un pour le "type" (quelle table). Faire des relations 1 à plusieurs,
ou,



dans les autres tables, disons dans la table batiment, faire un champ
lookup

supportant la requête: SELECT CompteurID, CompteurDescription FROM
Compteurs WHERE type="batiment" ( au lieu du même énoncé, sans
clause


WHERE).

Pour éditer la première table avec les données de la seconde
table,



faire un design form-subform, où on change le sous formulaire à la
volée



(selong le type de compteur) via la propriété SourceObject du controle
sousformulaire. Donc, quand le compteur est pour un batiment, le
source



object refère au formulaire de compteur pour batiment, et quand on a
un



site, le sous formulaire change et affiche à nouveau un sous
formulaire



pertinent (un peu comme un Wizard).

Espérant être utile,
Vanderghast, Access MVP