|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 164 ![]() |
Je suis complètemment perdu avec ma BDD créée il y a à peine 1 an.
Cette BDD comporte 1 table principale et elle est reliée à plusieurs autres sur le principe des relations. Au départ , j'avais prévu suffisamment d"enregistrements (+/- 300 sur le champ "affiliés") dans cette table et celles reliées afin que ma BDD fonctionne parfaitement. Tout se passait bien.Et voici que la semaine dernière ,je veux encoder (ajouter) mon affilié 301 , un message d'erreur s'affiche :"VOUS NE POUVEZ PAS AJOUTER OU MODIFIER L ENREGISTREMENT CAR L ENRREGISTREMENT EST REQUIS DANS LA TABLE". Normal me direz-vous puisque l'intégrité référentielle joue ici son rôle. J'ai commencé l'insertion dans chaque table en relation à l'enregistrement demandé mais j'ai abandonné , ce n'est pas logique de travailler de cette manière. Je suis bloqué je ne sais pas étendre ma base et tout le travail est par terre. Je suis vraiment désolé .C'est à partir de mon formulaire d'encodage que je suis tombé sur cette impossibilité et chose étonnante, lorsque je passe en ajout sur ce fo, une fenêtre vierge se présente mais pas moyen d'encoder les données pour les tables en relation. J'aimerais tant pouvoir être aidé. Merci |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
je ne pense pas que tu dois revoir ta conception à ce stade.
tu pourrais contourner cette intégrité référencielle en 'attaquant' directement tes tables. en vba avec du sql ou par recordset sur l'événement avant insertion, voir sur erreur (à vérifier). dans ce cas poste dans les forums appropriés. |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : mars 2006 Messages : 1 331 ![]() |
Bonsoir,
Il serait bien de voir ces relations. Cordialement.
__________________
Questions techniques par MP ![]() Le peu que je sais, c'est à mon ignorance que je le dois. ...............................................................................Sacha Guitry |
|
|
00
|
|
|
#4 |
![]() ![]() |
Je pense que tu devrasi donner une idee sur les tables liees a ta table principale: surtout les cardinalites et ce que la BD est cense faire.
Mais, je ne crois pas que le probleme vienne de la conception, du moment ou cela a deja bien fonctionne, a moins que tu es fait, par inattention (ou une autre personne) des modifications sur les relations. Essaie donc prealablement de reviser ta BD a zero: pas la recommencer, mais la relire en verifiant les relations.
__________________
Un gros problème est la somme de plusieurs petits problèmes. Resolvez chacun des petits problèmes: vous aurez resolu le gros problème! ![]() Mes tutos || Mon blog || Développeurs ivoiriens |
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 164 ![]() |
Merci pour vos idées , je réfléchie auj à cela car je suis très embarrassé et inquiet. Je vais poster sur le forum .net.
|
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
je pensais en fait plutot aux sous forums SQL/VBA, pour inserer un enregistrement... faut pas allez chercher si loin...
|
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 164 ![]() |
Bonjour,
J'ai pu résoudre mon problème.Comme conseillé par Vodiem je me suis mis au travail en attaquant directement les tables puisque pour mes relations, j'ai revu et tout est cohérent.Cependant, cette méthode est lourde. Pour procéder ainsi, j'ai dû supprimer provisoirement les relations qui gênent l'ajoute d'un nouvel enregistrement dans la table principale et reproduire ensuite ces mêmes relations après cette ajoute. Maintenant, j'aimerais savoir comment les attaquer ces tables avec code VBA pour contourner l'effet de l'intégralité référentielleEst-ce possible avec cette méthode? Si quelqu'un a une idée, je suis preneur.Ce serait plus facile. Merci pour l'aide |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
Jacques-Henri,
je m'imagine mal le contexte de ton soucis, mais Citation:
pas besoin de supprimer les relations. |
|
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 164 ![]() |
En fait, je suis pas (encore) un expert et pour moi procéder en attaquant directement les tables me semble une façon de faire qui n'est pas aussi simple et d'autant plus fastidieuse qu'encoder à partir d'un formulaire. ceci étant dit, je ne sais pas faire autrement que de supprimer les relations sinon : je dois créer les enregistrements dans les tables liées comme l'exige l'intégrité réf...
Ainsi en supprimant la relation de la table liée avec une autre je n'encode que dans cette table principale ( la table nommée "Ta associés") et c'est ce qui m'intéresse. Par la suite, je crée au fur et à mesure les enregistrements correspondants dans la table reliée. Merci de me dire si je fais fausse route. Pour la suite où puis je trouver l'aide pour mettre sous forme VBA l'év avant insertion que tu me conseille, puisque ma clef primaire existe avec N° auto.? Merciiiiiiiiiiiiiiiiiiiiii |
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
pour reprendre: tu veux ajouter un enregistrement sur une table "fille" (liée) mais il faut préalablement créer un enregistrement dans la table "parent" pour pouvoir créer l'enregistrement si celui-ci n'existe pas.
le plus simple c'est de créer un sous form lier avec "champ pères" / "champ fils". mais si tu ne veux pas remodifier tout cela tu dois créer manuellement l'enregistrement avant d'inserer l'enregistrement fils. tu peux supprimer les relations mais ce n'est pas obligatoire si tu crée l'enregistrement manquant dans parent avant l'insertion. recherche dans la faq pour l'insertion d'un enregistrement par recordset ou par sql. sinon ouvre une discution sur ton prob dans le sous forum VBA Access. |
|
|
00
|
|
|
#11 |
|
Membre régulier
![]() Inscription : mai 2006 Messages : 164 ![]() |
Hé oui, c'est tout à fait cela. Je vais suivre tes conseils,je désire pas créer de sous formulaire pour ne pas retoucher à ma BDD, mais sans supprimer les relations je vais ainsi créer l'enregistrement manquant avant insertion. Pour faire cela j'ai donc besoin de programmer l'événement en attaquant directement la table, si oui alors là je vois pas comment faire.
Tu peux peut-être me mettre sur une piste , en postant peut-être?? Je cherche. Amicalement |
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() Diem VOVivre Inscription : avril 2006 Messages : 2 644 ![]() |
oui, poste dans le sous forum VBA Access, tu auras plus de participant à la discution qu'ici, et surtout il est fait pour cela.
en principe tu dois faire dans l'ev 'av insertion': rechercher si l'enregistrement à un parent, sinon lui créer un parent et récupérer ce num parent (clef primaire) pour l'attribuer au champ fille qui fait le lien (clef secondaire). en principe c'est pas très compliqué, mais il est préférable que tu ouvres une discution dans le forum approprié pour que d'autre ayant le même soucis puisse profiter de la solution. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com