Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/04/2011, 16h40   #1
Membre habitué
 
Avatar de mioux
 
Inscription : novembre 2005
Messages : 318
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 318
Points : 103
Points : 103
Par défaut Nom des relations

Bonjour.

Je bloque sur un problème con. J'ai une base de données Access, qui n'a pas été créée chez nous, mais par le client final de l'application que l'on développe.

Dans sa base de données, il a mis des clefs étrangères (ce qui est un bon point pour lui, j'aurais tant à dire sur la structure de sa base de données, mais je sais aussi reconnaître ses qualités ). Bref, aujourd'hui, la clef primare d'une des tables disparait au profit d'une autre plus logique, et surtout moins gourmande en perf (on passe d'un varchar à un ID autoincrément (qui était déjà présent, mais passons ce détail)) et on vire la colonne en varchar.

Or, il a légitimement utilisée cette colonne en tant que clef étrangère d'une autre table.

Mon problème est que pour dropper la colonne en question, je dois commencer par dropper la contrainte qui a été mise en place sur la table de destination. Étant limité par le fait que je ne peux pas aller chez tout les utilisateurs finaux et leur dire "Bonjour, je passe vite fait chez vous, je fais une modif dans la base de données, et je vous laisse travailler ensuite", il faut que je passe par l'interface d'update que nous avons développée dans l'IHM.

Je passe donc par une requête SQL pour essayer de supprimer la clef étrangère :

Code SQL :
ALTER TB02 DROP CONSTRAINT ???

Sauf que je ne sais pas comment retrouver le nom de ladite contrainte. J'ai cherché dans Access, j'ai cherché via un objet DAO, mais je n'ai pas trouvé.

Quelqu'un sais où, ou comment je peux trouver ça ?

PS : Je peux faire un peu de dev pour ça, y a pas de problème, j'ai accès à plusieurs environnement de dev et langages de programmation (C/C++/C#/Objective C, VB.Net, Fortran, Delphi, VBA, Emacs-LISP, Python, Perl, ... et j'en passe... bref, j'ai du choix )

EDIT : J'ai voulu contourner le problème en droppant et en recréant la table avec la clef étrangère, mais je suis bloqué
mioux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 06h05   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Pourquoi vouloir passer par du code et ne pas le faire manuellement puisque c'est ponctuel ?

Il faut supprimer la relation et la recréer.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 09h13   #3
Membre habitué
 
Avatar de mioux
 
Inscription : novembre 2005
Messages : 318
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 318
Points : 103
Points : 103
Parce que la base est duppliquée chez plusieurs utilisateurs finaux, et que concrètement, je n'ai pas le droit de les rencontrer, tout simplement
mioux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 13h25   #4
Membre du Club
 
Homme Pierre SERANT
Consultant ERP
Inscription : février 2009
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme Pierre SERANT
Localisation : Belgique

Informations professionnelles :
Activité : Consultant ERP
Secteur : Industrie

Informations forums :
Inscription : février 2009
Messages : 40
Points : 44
Points : 44
bonjour,

en vba tu trouveras toute les relations de la base access dans la collection des relations.

currentdb.Relations()

Code :
1
2
3
4
5
6
7
 
Function ListeRelations()
Dim Rel As Relation
    For Each Rel In CurrentDb.Relations
        Debug.Print Rel.name
    Next Rel
End Function
Sinon tu peux aussi les retrouver dans la table system "MSysRelationships"
pierre.serant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 13h33   #5
Membre habitué
 
Avatar de mioux
 
Inscription : novembre 2005
Messages : 318
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 318
Points : 103
Points : 103
J'ai fini par trouver la fameuse table MSysRelationships, et pour les clefs et les index (qui me posaient aussi problème) je suis passé par ADOX et C#. Du coup, je me suis fait une petite interface pour afficher les clefs, les relations et les index.

Merci pour le coup de main, je note pour plus tard si j'ai pas d'accès à C#
mioux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h17.


 
 
 
 
Partenaires

Hébergement Web