OVH Cloud OVH Cloud

Suppression en cascade

1 réponse
Avatar
PR Services
Bjr,
Je travaille avec VB sur des bases Access.
Dans une appli VB, je dois sécuriser entre autre les suppressions
d'enregistrements (i.e. les sauvegarder dans un autre fichier avant
effacement). Ces suppressions se font en cascade.

Au départ je connais la table où la suppression est effectuée ainsi que l'ID
du champ à supprimer. De cette table je déduis les relations et donc les
tables liées au premier niveau ainsi que le ID "étranger". Par requête j'ai
donc une nouvelle serie d'ID primaires qui correspondront aux ID étrangers à
chercher dans les tables liées au 2ème niveau. Puis on doit recommencer pour
des tables de 3ème niveau ... etc... jusqu'à épuisement.

En fait, je n'arrive pas à dessiner un algorythme pertinent pour réaliser
toute l'opération. Pouvez-vous m'aider?

D'avence merci.

1 réponse

Avatar
Jean-Marc
"PR Services" a écrit dans le message de
news:41b30723$0$11768$
Bjr,
Je travaille avec VB sur des bases Access.
Dans une appli VB, je dois sécuriser entre autre les suppressions
d'enregistrements (i.e. les sauvegarder dans un autre fichier avant
effacement). Ces suppressions se font en cascade.

Au départ je connais la table où la suppression est effectuée ainsi que


l'ID
du champ à supprimer. De cette table je déduis les relations et donc les
tables liées au premier niveau ainsi que le ID "étranger". Par requête


j'ai
donc une nouvelle serie d'ID primaires qui correspondront aux ID étrangers


à
chercher dans les tables liées au 2ème niveau. Puis on doit recommencer


pour
des tables de 3ème niveau ... etc... jusqu'à épuisement.

En fait, je n'arrive pas à dessiner un algorythme pertinent pour réaliser
toute l'opération. Pouvez-vous m'aider?



Hello,

Ce n'est pas simple de le faire de façon générale. En revanche, Access
sait le faire pour toi. C'est une des options des relations des tables.
Il est possible de demander à access d'appliquer une intégrité
référentielle sur des tables, et d'appliquer tout seul le delete en
cascade.

Cela se fait via le menu Tools/RelationShip de Access (Outils /
Relations). Le modèle est quelque chose comme ça:

|---------|
| Table 1 |
|---------| (1)
| PK ---|---
| Nom | |
|---------| |
|
|
|---------| |
| Table 2 | |
|---------| |
| PK | |
| FK_TBL1 |<--| (many)
| Note |
|---------|

Propriété de la jointure:
- One to many
- Enforce referential integrity
- Cascade Delete Related records

Toutes les DB savent faire cela. Il est possible de le programmer à la
main mais ça demande pas mal de boulot et d'expérience pour faire qq
chose de sérieux. On peut aussi le hard coder (comme tu fais) mais
comme tu le constates, ce n'est pas agréable à faire.

(Algorithme s'écrit avec un 'i'.)

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."