OVH Cloud OVH Cloud

intégrité référentielle ??

13 réponses
Avatar
sonia.gaubert
Bonjour =E0 tous,

Tout =E0 coup, moi qui pensait avoir tout bien int=E9gr=E9 la logique des
relations entre les tables, j'ai un gros gros doute !
Soit deux tables li=E9es : Table1 en relation 1-n avec Table2, avec
int=E9grit=E9 r=E9f=E9rentielle...
Les deux champs portant les liens : Champ1 (Table1) - Champ2 (Table2)

Selon toute logique, je ne devrais pas pouvoir ajouter un
enregistrement =E0 Table2 si mon Champ2 est vide, non !???
.=2E. parce que l=E0, c'est ce qui se passe et franchement je n'y
comprends plus rien...
Par avance merci de votre r=E9ponse,
Sonia.

3 réponses

1 2
Avatar
Tisane
Bonjour Arnaud,

ça ne serait pas la mise à jour en cascade qui est activée (et ne
devrait pas l'être) dans la relation ?


J'y ai bien pensé, mais dans ce cas, comment a-t-elle pu ne serait-ce que
créer la relation avec intégrité alors que les données étaient déjà saisies.
Je cite :
------
[faut dire que je suis en train de créer des relations entre des jeux
de tables que pour le moment rien ne liait... alors que j'ai déjà
plein d'enregistrements des deux côtés...]
Mais alors pourquoi, quand je spécifie l'intégrité référentielle
(dans le tableau des relations) le système ne mouffte pas et fait
comme si de rien n'était ?
-----
C'est ce qui m'intrigue. Je n'ai jamais rencontré d'anomalie concernant
l'application de l'intégrité : Access refuse toujours si les données ne sont
pas cohérentes.
Ou alors, ses données sont cohérentes... par hasard ;-))
A suivre... un peu plus tard...

--
Tisane


Non j'utilises la 2003...
Je veux bien essayer de t'envoyer un bout (encore que ça me paraît
un peu difficile : vais voir ce que je peux faire)... mais comment
est-ce que je fais ?
Faut que tu me donnes ton adresse email ou bien ?


Fais une copie de ta base et enlève tout ce qui n'est pas utile pour
vérifier le problème. Donc laisse les 2 tables avec les quelques
enregistrements qui,
justement, ne devraient pas pouvoir être reliés. Compacte la base
(menu Outils | Utilitaires | Compacter) et envoie-la. Mon e-mail est dans
le post :
(il n'est pas codé, c'est une adresse pour les forums).

Je serai absente une partie de la journée.

--
Tisane





Avatar
Tisane
Bonsoir,

[faut dire que je suis en train de créer des relations entre des jeux
de tables que pour le moment rien ne liait... alors que j'ai déjà
plein d'enregistrements des deux côtés...]
Mais alors pourquoi, quand je spécifie l'intégrité référentielle
(dans le tableau des relations) le système ne mouffte pas et fait
comme si de rien n'était ?


Après réception d'un échantillon de sa base, voici une synthèse de la
réponse que j'ai envoyée à Sonia et qu'elle a pu vérifier :
-----
Les enregistrements existent bien dans la table mère et les autres sont
"null".
Les "null" ne sont pas interdits sur le champ "RefDossBibl" de la table
BIBLIO.
Access n'a pas "moufté" car toutes les autres valeurs de ce champ existent
dans la table mère.

Tu peux donc créer un nouvel enregistrement dans BIBLIO sans saisir de
référence, ça passe.
En revanche, si tu saisis une mauvaise référence, tu te feras insulter.
Tu peux mettre "Null interdit" sur le champ. Il n'y aura pas d'effet
rétroactif. Même si tu enlèves la liaison et la recrées, Access ne bronchera
toujours pas (il rouspète la première fois).
Mais les futurs enregistrements ne seront pas acceptés si tu ne saisis pas
une référence existante dans la table "InvDossiers".
-----

Bon dimanche à tous,

--
Tisane

[...]

Avatar
Bonsoir Tisane

Eh bien nous voilà tous rassurés :-)

a+

--
Arnaud
-----------------------
http://www.mpfa.info
-----------------------

"Tisane" a écrit dans le message de news: uq%
Bonsoir,

[faut dire que je suis en train de créer des relations entre des jeux
de tables que pour le moment rien ne liait... alors que j'ai déjà
plein d'enregistrements des deux côtés...]
Mais alors pourquoi, quand je spécifie l'intégrité référentielle
(dans le tableau des relations) le système ne mouffte pas et fait
comme si de rien n'était ?


Après réception d'un échantillon de sa base, voici une synthèse de la réponse que j'ai envoyée à Sonia et qu'elle a pu vérifier :
-----
Les enregistrements existent bien dans la table mère et les autres sont "null".
Les "null" ne sont pas interdits sur le champ "RefDossBibl" de la table BIBLIO.
Access n'a pas "moufté" car toutes les autres valeurs de ce champ existent dans la table mère.

Tu peux donc créer un nouvel enregistrement dans BIBLIO sans saisir de référence, ça passe.
En revanche, si tu saisis une mauvaise référence, tu te feras insulter.
Tu peux mettre "Null interdit" sur le champ. Il n'y aura pas d'effet rétroactif. Même si tu enlèves la liaison et la recrées,
Access ne bronchera toujours pas (il rouspète la première fois).
Mais les futurs enregistrements ne seront pas acceptés si tu ne saisis pas une référence existante dans la table "InvDossiers".
-----

Bon dimanche à tous,

--
Tisane

[...]



1 2