Modification des relations

Le
Dominique MARTIN
Bonjour,

J'ai une relation (1 à plusieurs) entre 2 tables définies de la façon
suivante :

TableA
champ (Côté 1) : champ_un

TableB
champ (côté plusieurs : champ_plusieurs

Ma relation est très bien définie :
Intégrité référentielle cochée
Suppression en cascade non cochée

Je souhaiterais par code déverrouiller temporairement ma relation pour que
la suppression en cascade se fasse et puis après la reverrouiller.

Merci beaucoup pour votre aide
Dominique
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ze Titi
Le #6264361
Hello Dominique MARTIN !

Jamais testé, pondu vite fait, en gros: Aucune garantie... Faire une sauvegarde avant test, de préférence...

Function xChangeRelation(table1 as String,table2 as String,SupprimerEnCascade As Boolean)
Dim Rel As DAO.Relation
For Each Rel In CurrentDb.Relations
if (Rel.Table=table1 And Rel.ForeignTable=table2) or (Rel.Table=table2 And Rel.ForeignTable=table1) Then
If SupprimerEnCascade Then
Rel.Attributes=Rel.Attributes+dbRelationDeleteCascade
Else
Rel.Attributes=Rel.Attributes-dbRelationDeleteCascade
End If
CurrentDb.Relations.Refresh
Exit For
End If
Next Rel
End Function

S'appelle de la façon suivante:
Pour ajouter la suppression en cascade:
xChangeRelation "tableA","TableB",True
et pour enlever:
xChangeRelation "TabelA","TableB",False


En ce jour mémorable du mardi 24/04/2007, tu as entrepris la lourde tâche de taper sur ton clavier :
Bonjour,

J'ai une relation (1 à plusieurs) entre 2 tables définies de la façon
suivante :

TableA
champ (Côté 1) : champ_un

TableB
champ (côté plusieurs : champ_plusieurs

Ma relation est très bien définie :
Intégrité référentielle cochée
Suppression en cascade non cochée

Je souhaiterais par code déverrouiller temporairement ma relation pour que
la suppression en cascade se fasse et puis après la reverrouiller.

Merci beaucoup pour votre aide
Dominique


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info

Dominique MARTIN
Le #6264291
Bonjour,

Je suppose que si les tables sont sur la base serveur, il faut faire un
opendatabase avant ?

Merci beaucoup pour ta réponse
Dominique


Hello Dominique MARTIN !

Jamais testé, pondu vite fait, en gros: Aucune garantie... Faire une sauvegarde avant test, de préférence...

Function xChangeRelation(table1 as String,table2 as String,SupprimerEnCascade As Boolean)
Dim Rel As DAO.Relation
For Each Rel In CurrentDb.Relations
if (Rel.Table=table1 And Rel.ForeignTable=table2) or (Rel.Table=table2 And Rel.ForeignTable=table1) Then
If SupprimerEnCascade Then
Rel.Attributes=Rel.Attributes+dbRelationDeleteCascade
Else
Rel.Attributes=Rel.Attributes-dbRelationDeleteCascade
End If
CurrentDb.Relations.Refresh
Exit For
End If
Next Rel
End Function

S'appelle de la façon suivante:
Pour ajouter la suppression en cascade:
xChangeRelation "tableA","TableB",True
et pour enlever:
xChangeRelation "TabelA","TableB",False


En ce jour mémorable du mardi 24/04/2007, tu as entrepris la lourde tâche de taper sur ton clavier :
Bonjour,

J'ai une relation (1 à plusieurs) entre 2 tables définies de la façon
suivante :

TableA
champ (Côté 1) : champ_un

TableB
champ (côté plusieurs : champ_plusieurs

Ma relation est très bien définie :
Intégrité référentielle cochée
Suppression en cascade non cochée

Je souhaiterais par code déverrouiller temporairement ma relation pour que
la suppression en cascade se fasse et puis après la reverrouiller.

Merci beaucoup pour votre aide
Dominique


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






ze Titi
Le #6264271
Pas forcément. Si tu as des tables liées mais que tes relations sont
définies dans ton application frontale, ça ne pose aucun problème. Par
contre, si ça n'est pas le cas, il faudra effectivement passer par une
phase d'ouverture de la base dorsale avant de lancer la fonction.

Dans ton message
Bonjour,

Je suppose que si les tables sont sur la base serveur, il faut faire un
opendatabase avant ?

Merci beaucoup pour ta réponse
Dominique


Hello Dominique MARTIN !

Jamais testé, pondu vite fait, en gros: Aucune garantie... Faire une
sauvegarde avant test, de préférence...

Function xChangeRelation(table1 as String,table2 as
String,SupprimerEnCascade As Boolean) Dim Rel As DAO.Relation
For Each Rel In CurrentDb.Relations
if (Rel.Table=table1 And Rel.ForeignTable=table2) or
(Rel.Table=table2 And Rel.ForeignTable=table1) Then If
SupprimerEnCascade Then
Rel.Attributes=Rel.Attributes+dbRelationDeleteCascade Else
Rel.Attributes=Rel.Attributes-dbRelationDeleteCascade
End If
CurrentDb.Relations.Refresh
Exit For
End If
Next Rel
End Function

S'appelle de la façon suivante:
Pour ajouter la suppression en cascade:
xChangeRelation "tableA","TableB",True
et pour enlever:
xChangeRelation "TabelA","TableB",False


En ce jour mémorable du mardi 24/04/2007, tu as entrepris la lourde tâche de
taper sur ton clavier :
Bonjour,

J'ai une relation (1 à plusieurs) entre 2 tables définies de la façon
suivante :

TableA
champ (Côté 1) : champ_un

TableB
champ (côté plusieurs : champ_plusieurs

Ma relation est très bien définie :
Intégrité référentielle cochée
Suppression en cascade non cochée

Je souhaiterais par code déverrouiller temporairement ma relation pour que
la suppression en cascade se fasse et puis après la reverrouiller.

Merci beaucoup pour votre aide
Dominique


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info



Dominique MARTIN
Le #6263741
Bonjour,

Je croyais qu'il fallait que les relations soient dans la base dorsale.

Merci
Dominique


Pas forcément. Si tu as des tables liées mais que tes relations sont
définies dans ton application frontale, ça ne pose aucun problème. Par
contre, si ça n'est pas le cas, il faudra effectivement passer par une
phase d'ouverture de la base dorsale avant de lancer la fonction.

Dans ton message
Bonjour,

Je suppose que si les tables sont sur la base serveur, il faut faire un
opendatabase avant ?

Merci beaucoup pour ta réponse
Dominique


Hello Dominique MARTIN !

Jamais testé, pondu vite fait, en gros: Aucune garantie... Faire une
sauvegarde avant test, de préférence...

Function xChangeRelation(table1 as String,table2 as
String,SupprimerEnCascade As Boolean) Dim Rel As DAO.Relation
For Each Rel In CurrentDb.Relations
if (Rel.Table=table1 And Rel.ForeignTable=table2) or
(Rel.Table=table2 And Rel.ForeignTable=table1) Then If
SupprimerEnCascade Then
Rel.Attributes=Rel.Attributes+dbRelationDeleteCascade Else
Rel.Attributes=Rel.Attributes-dbRelationDeleteCascade
End If
CurrentDb.Relations.Refresh
Exit For
End If
Next Rel
End Function

S'appelle de la façon suivante:
Pour ajouter la suppression en cascade:
xChangeRelation "tableA","TableB",True
et pour enlever:
xChangeRelation "TabelA","TableB",False


En ce jour mémorable du mardi 24/04/2007, tu as entrepris la lourde tâche de
taper sur ton clavier :
Bonjour,

J'ai une relation (1 à plusieurs) entre 2 tables définies de la façon
suivante :

TableA
champ (Côté 1) : champ_un

TableB
champ (côté plusieurs : champ_plusieurs

Ma relation est très bien définie :
Intégrité référentielle cochée
Suppression en cascade non cochée

Je souhaiterais par code déverrouiller temporairement ma relation pour que
la suppression en cascade se fasse et puis après la reverrouiller.

Merci beaucoup pour votre aide
Dominique


--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info






--
Cordialement,
Ze Titi

Tout pour réussir avec Access :
http://www.mpfa.info








Publicité
Poster une réponse
Anonyme