Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Modification des relations

4 réponses
Avatar
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

4 réponses

Avatar
ze Titi
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

Avatar
Dominique MARTIN
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






Avatar
ze Titi
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



Avatar
Dominique MARTIN
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