Problème Access dans la suppression en cascade

julie-anais

New Member
Bonjour, je coince au niveau de la suppression en cascade dans les formulaires.

Pourtant dans les relations j'ai bien mis l'intégrité reférentielle en cliquant uassi sur "modification en cascade" et "suppression en cascade" seulement lorsque dans mon formulaire principal j'inscris un salarié avec les données qui le concerne et que je clique sur le bouton de commande "enfants" afin de savoir de nom de ses enfants et que je retourne dans le formulaire principal pour effacer ce salarié. Je retrouve pas le nom du salarié dans mon formulaire principal ce qui est normal puisque je l'ai effacé, en revanche sur mon formulaire "enfant" il y est toujours. Je ne sais pas du tout à quoi cela est dû :embarassed:

Quelqu'un peut-il m'éclairer ?
 

patrice084

Best Member
julie-anais link=topic=60461.msg625129#msg625129 date=1181403551 a dit:
retourne dans le formulaire principal pour effacer ce salarié. Je retrouve pas le nom du salarié dans mon formulaire principal ce qui est normal puisque je l'ai effacé, en revanche sur mon formulaire "enfant" il y est toujours. Je ne sais pas du tout à quoi cela est dû :embarassed:

Le mieux serait de consulter directement votre BD si elle n'est pas secrète ou bien de voir votre MCD.
 

patrice084

Best Member
julie-anais link=topic=60461.msg625180#msg625180 date=1181412178 a dit:
MCD ? kézako ?

Un modèle conceptuel des données ; travail réalisé avant de mettre en pratique sur Access. Cela permet de voir, entre autres choses, quelles relations sont définies.
 

julie-anais

New Member
Merci pour votre réponse

Excusez moi pour le retard j'ai eu de gros problème de connection.

Quoi qu'il en soit j'ai trouvé d'où venait l'erreur mais je m'arrive pas à la rectifier.
Afin de ne pas réecrire le nom et prénom du salarié dans chaque formulaire, j'ai fais des boutons de commandes dans le formulaire principal afin d'accéder aux autres formulaires. Dans propriété du champ nom et prénom des autres formulaires, j'ai demandé à afficher "valeur par défaut" le nom du salarié qui se trouvait dans le formulaire principal. Seulement en faisant cela, je ne peux plus supprimer en cascade et je suis obligé de supprimé le salarié dans tous les formulaires (il y en a 12) et cela est assez contraignant mais en même temps je souhaite garder le système que j'ai fait afin de ne pas écrire 12 fois le nom du salarié.

Il faut que je m'y prenne comment ?

Autre soucis, je n'arrive pas à faire une requête à partir de plusieurs tables, il ne m'affiche que les données d'une table et du coup je ne sais pas comment faire.

Je précise aussi que je n'ai encore pas vu access puisque c'est du programme de deuxième année, par conséquent j'ai tout appris moi même sur le tas alors je vous prie de m'excusez si j'ai du mal avec le vocabulaire.
Il me reste 3 jours de stage, j'espère que j'arriverais à résoudre ces quelques soucis :embarassed:

Je vous remercie par avance :biggrin:
 

patrice084

Best Member
julie-anais link=topic=60461.msg641362#msg641362 date=1182585510 a dit:
Je précise aussi que je n'ai encore pas vu access puisque c'est du programme de deuxième année, par conséquent j'ai tout appris moi même sur le tas alors je vous prie de m'excusez si j'ai du mal avec le vocabulaire.

C'est pour cela que vous avez du mal. Sans votre MCD on ne peut pas vous aider. Mettez votre base de données en téléchargement pour voir de plus prés.
 

patrice084

Best Member
julie-anais link=topic=60461.msg641670#msg641670 date=1182612204 a dit:
L'ennui c'est que les données sont confidentielles, elles ne peuvent pas sortir de mon entreprise :embarassed:

Bon ! Allez dans la fenêtre des relations et faites une copie d'écran. Il n'y a aucune donnée visible et on comprendra votre structure.
 

patrice084

Best Member
julie-anais link=topic=60461.msg642424#msg642424 date=1182704781 a dit:
Voici la copie d'écran des relations (j'ai coché les cases supprimez, modifier en cascade)

Ce qui est anormal c'est de retrouver dans chaque table le nom et prénom du salarié. Cette information se récupère par la relation que vous avez créée avec la table Etat civil.

Surpris aussi par la table Perso??? qui contient nom, nom1 et nom2.

Dans la table formation, bizarre les niveaux de formation I, II, III etc...

Bref, il va falloir revoir tout cela.
 

vestale974

Well-Known Member
Salut,
Patrice, je lui donne un coup de pouce maintenant à toi de suivre après dans la journée.

- Pour faire bref. Le Modèle Conceptuel de Données (MCD) permet d'une part de schématiser votre future BDD mais surtout d'autre part de déterminer le nombre de solutions qu'il y aurait à gauche et droite d'une relation (en clair, entre 2 tables).

- Au regard de votre vue des relations, il faut modifier certaines des tables, et je prends pour exemple :
Table ENFANT : Un salarié peut ne pas avoir d'enfant ou en avoir plusieurs Card(0,n). A l'inverse, un enfant ne peut avoir qu'un et un seul père Card(1,1). Ce qui implique dans cette table ENFANT, la présence de la clé étrangère N°SécuritéSociale. Par contre, dans cette même table ENFANT, vous devez supprimer les champs Nom2, Pnom2, ... NomX, PnomX.

ENFANT(N°Enfant, Nom enf, Prénom enf, DateNaiss enf, Sexe enf, #N°SécuritéSociale)

- Vous devez procéder de manière identique pour les tables EXPÉRIENCE PROF, DOSSIER MED, PERSO????(tout en haut à droit), RÉFÉRENT INIT, et peut être BILAN INTERMED (Renouvel. 1, 2, 3, 4 ???).

- Vous devez supprimer dans presque toutes les tables les champs Nom et Prénom. Les Systèmes de gestion de Base de Données ne supportent pas les redondances.

- Vous devez compléter tous les N° (clé primaire) -> N°Enfant, N°Dossier méd, etc.

- Vous devez dans la table FORMATION réduire à un seul champ les niveaux. J'ai un doute sur la nature de la relation ÉTAT CIVIL <-> FORMATION !

- Etc.
@+
 

julie-anais

New Member
Merci d'avoir consacré du temps à répondre à ma question !

Pour la table enfant je ne comprends pas pourquoi il faut que j'enlève les champs "prénoms1, noms 1 ect..." puisque dans mon formulaire je saisie le nom de tous leurs enfants.

D'autre part, vous me dites d'enlever le nom et prénom dans tous les formulaires (appart le principal) mais lors d'une impression du formulaire "dossier médicale" par exemple, je fais comment pour savoir qui est qui ? en fait je voulais retrouver les champs noms et prénoms à chaque fois pour ne pas m'y perdre.

Pour enlever les numéros de formation, en fait, mon chef voulait que le formulaire contienne des cases à cocher, ainsi, la secrétaire n'aura pas à taper les numéros de formation à chaque fois mais uniquement à cocher la case correspondante.

Je vous mets ici quelques captures d'écran de mes formulaires (le patron a souhaité que la présentation se fasse comme ça, ainsi que le contenu de ces formulaires)


[img=http://img255.imageshack.us/img255/451/etatcivilyl1.th.png]


[img=http://img508.imageshack.us/img508/4299/dossierae3.th.png]


[img=http://img240.imageshack.us/img240/5117/suitecu1.th.png]


je n'arrive pas à mettre la table enfant désolé, je réesserais
 

patrice084

Best Member
julie-anais link=topic=60461.msg643519#msg643519 date=1182790378 a dit:
Pour la table enfant je ne comprends pas pourquoi il faut que j'enlève les champs "prénoms1, noms 1 ect..." puisque dans mon formulaire je saisie le nom de tous leurs enfants.

D'autre part, vous me dites d'enlever le nom et prénom dans tous les formulaires (appart le principal) mais lors d'une impression du formulaire "dossier médicale" par exemple, je fais comment pour savoir qui est qui ? en fait je voulais retrouver les champs noms et prénoms à chaque fois pour ne pas m'y perdre.

Pour enlever les numéros de formation, en fait, mon chef voulait que le formulaire contienne des cases à cocher, ainsi, la secrétaire n'aura pas à taper les numéros de formation à chaque fois mais uniquement à cocher la case correspondante.

Vous confondez tables et formulaires. La table c'est le récipient qui va recueillir les données. Le formulaire c'est le masque de saisie qui permet de saisir les données. Or, un formulaire peut se construire à partir de plusieurs tables (via une requête multitable). Grâce au relation établit, lorsque vous saisir un enfant, vous allez saisir (ou choisir dans une liste) le n° de sécurité sociale ce qui vous donnera alors le nom du parnt.

Quel est l'intéret, dans la table enfant de nom, nom 1 et nom 2 ? Est-ce le nom de l'enfant, du père et de la mère ?

Pour la formation, il suffit d'insérer dans le formulaire un groupe d'option qui contiendra tout ce que vous voudrez et lorsque l'on clique c'est une information qui est stockée dans un seul champ.

Il faut tout reprendre à la base et suivre les consignes de Vestale sur la création de vos tables.
 

julie-anais

New Member
D'accord, merci beaucoup !

Je vais essayer ainsi et je vous tiendrais au courant si un problème se pose.


Merci encore pour tous vos conseils, il m'ont été très utiles :dacc:
 

vestale974

Well-Known Member
Salut Julie,
Il faut que je me lâche, là  :excl:
Julie travailles-tu dans le secteur d'activité de la pétrochimie ?  :laugh:
Parce qu'en visualisant tes formulaires ainsi que la fenêtre des relations, tu nous a démontré que tu étais la reine du montage d'une usine à gaz  :excl:  :laugh:
Alors, je t'avise de suite, c'est mon humour caustique et il faut le prendre au dernier degré.  :laugh:
@+
 

vestale974

Well-Known Member
Salut,

Julie, même si les manuels de bureautique consacré à Access indiquent pour exemple de clé primaire le numéro de sécurité sociale d'un individu, parce que ce numéro est unique mais dans une certaine mesure, il faut savoir qu'il est interdit (se renseigner auprès de la CNIL) de constituer un fichier (papier ou numérique) dont l'identifiant d'enregistrement est ce fameux numéro de sécurité sociale.

Il aurait été plus judicieux d'utiliser un compteur (NuméroAuto) en lieu et place de ce numéro de sécurité sociale. Et je te conseille vivement d'effectuer cette modification.

Patrice084 aurait dû rebondir, lorsque que tu indiques qu'en voulant imprimer un formulaire, tu n'aurais pas pu savoir "qui est qui". Pour ton information, on n'imprime pas les formulaires ! C'est pour cela qu'il existe l'objet État dans Access, qui lui sert à faire des impressions papier. Le formulaire n'est autre qu'un moyen convivial pour saisir, modifier, supprimer et ajouter des données.

On te pardonnera, car on aura compris que tu travailles sur le "tas" sans aucune connaissance aucune d'Access. Malgré tout, respect pour le travail que tu as élaboré, même si...

Concernant ton formulaire "Renseignements" :
- tu peux déjà supprimer le bouton de commande (BtnCmde) "Enregistrer". Il ne sert à rien, puisque l'enregistrement des données sur Access est dynamique.
- pour la partie "Permis", je suppose que tu veux connaitre les catégories valables. Donc là, on ne peut faire autrement que de créer le principe du formulaire/sous-formulaire, puisque pour un permis, il y a au moins une catégorie ou plusieurs catégories. On est amené à se dire que dans ta table tu as dû créer autant de champ dans ta table qu'il y a de catégories. Ce qui n'est pas bon du tout.

Concernant ton formulaire "Renseignements suite" :
- Niveau formation. Un et un seul champ dans la table ÉTAT CIVIL et créer une liste de choix dont tu définiras les valeurs. La dernière valeur sera "Autre". Et il faudra créer un nouveau champ "Autre" pour saisir une valeur si dans la liste tu choisis "Autre".
- Tu dois procéder de manière identique pour la durée d'inscription à l'ANPE, la durée sans emploi, durée du bénéfice d'une alloc., peut être aussi RMI, ASS ...

Concernant ton formulaire "Dossier médical"
- il faut penser de la façon suivante. Un salarié effectuera au moins une visite ou plusieurs visites médicales. Donc dans la table DOSSIER MED supprimer tous les champs redondants (Visite med1, 2,3 etc.), etc.

Pour modéliser ton formulaire, tu as aussi la possibilité d'utiliser l'objet "Page" de la boîte à outils. C'est le principe des onglets. C'est une meilleure alternative que de vouloir ajoutrr à gogo des BtnCmde pour ouvrir des formulaires liés. Chacun son truc.

Il serait bon de rappeler à ton patron que "Le Roy a dit, nous voulons".

Euh, il y du travail, là.

J'ai cru comprendre que ton stage arrive à sa fin. Cela signifie que tu es en formation initiale où alors je me trompe. Mais si c'est le cas, j'ai du mal à concervoir que ton prof t'ait autorisé à monter une action sur Access, alors que tu n'as pas, comme tu l'indiques, suivi de formation sur Access.
@+
 

julie-anais

New Member
Vestale : Oui c'est mon premier stage, il se termine demain. Ma prof m'a dit qu'il était possible de prendre mon travail sur access comme action car il n'est pas compliqué (mouis... enfin c'est ce qu'elle dit) et lors de sa visite elle a regardé brievement mon formulaire principal auquel elle a dit "oui cela m'a l'air pas mal du tout"

J'ai tout recommencé comme vous me l'avez dit et je vais enlever tous ces boutons de commandes et faire quelque chose de potable.

J'imprime vos réponses pour pouvoir m'en sortir demain :laugh:


Merci encore pour toutes vos réponses ! :dacc:
 

patrice084

Best Member
julie-anais link=topic=60461.msg644807#msg644807 date=1182878075 a dit:
Vestale : Oui c'est mon premier stage, il se termine demain. Ma prof m'a dit qu'il était possible de prendre mon travail sur access comme action car il n'est pas compliqué (mouis... enfin c'est ce qu'elle dit) et lors de sa visite elle a regardé brievement mon formulaire principal auquel elle a dit "oui cela m'a l'air pas mal du tout"

Je pense que Vestale sera d'accord avec moi pour dire que votre prof a surement d'autres qualités mais certainement pas en SGBDR. Je ne sais pas (ou plus) le BTS que vous présenter, mais c'est vous envoyer au casse-pipe que de présenter votre action telle quelle.
 

vestale974

Well-Known Member
Salut Patrice,
+1
Comme dirait ma fille, "foutage de gueule" quand même !

Julie ne pas hésiter à venir nous solliciter même en dehors de la période de stage. Il faut impérativement réviser intégralement ta BDD.

@+
 

Ca peut vous intéresser