IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

sgbdr et delete


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué Avatar de host22
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 222
    Points : 183
    Points
    183
    Par défaut sgbdr et delete
    Bonjour;
    Je sait que je vais poser une question ancienne mais j'arrive pas a trouver une solution, voila j'ai 3 tables Access (Ado) reliées Ado_Famille ; Ado_SousFamille; Ado_Fils , ado famille est reliée avec ado_soufamille et cette dernière est reliée avec Ado_fils; je veut que quant j'efface un enregistrement de la table mère Ado_Famille tout ses sous familles s'ecrasent mais sans parcourir la table; j'ai essayé Ado_Famille.Delete elle efface mais le probleme est que les enregistrements dans les sous table reste donc j'ai utilisé un dbnavigator pour la premiere tabe et ca marche mais peut on effacer tout les sous champs avec la commande delete?!!!
    Merci .
    Un homme savant a compris un certain nombre de vérités, un homme cultivé a compris un certain nombre d'erreurs.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Plusieurs façons de régler le problème. Soit Access supporte le ON DELETE CASCADE et donc tu peux définir au niveau de tes contraintes d'intégrité cette option, du coup quand la clé principale (Ado_famille) est supprimée, tout ses occurrences dans les tables "enfants" (Ado_SousFamille).

    Si tu ne peux ou veux pas utiliser cela, alors il faut oublier le Delete des TTable et passer directement une requête SQL qui, pour l'id de Ado_Famille que tu veux supprimer, supprimes également les Ado_fils et Ado_SousFamille.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  3. #3
    Membre habitué Avatar de host22
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 222
    Points : 183
    Points
    183
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Bonjour,

    Plusieurs façons de régler le problème. Soit Access supporte le ON DELETE CASCADE et donc tu peux définir au niveau de tes contraintes d'intégrité cette option, du coup quand la clé principale (Ado_famille) est supprimée, tout ses occurrences dans les tables "enfants" (Ado_SousFamille).

    Si tu ne peux ou veux pas utiliser cela, alors il faut oublier le Delete des TTable et passer directement une requête SQL qui, pour l'id de Ado_Famille que tu veux supprimer, supprimes également les Ado_fils et Ado_SousFamille.
    Merci je croit que je vais opter pour la deuxième solution, mais comment faire ?
    un adoquery?
    tu peut me donner plus de details stp?
    salut
    Un homme savant a compris un certain nombre de vérités, un homme cultivé a compris un certain nombre d'erreurs.

  4. #4
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Disons que sans connaitre tes tables l'exemple ne sera pas très parlant mais si ADO_SOUSFAMILLE est reliée à ADO_FAMILLE par la colonne FAM_ID, si tu détruis un enregistrement FAMILLE.FAM_ID=45654 tu dois faire la requète :

    DELETE FROM ADO_SOUSFAMILLE WHERE FAM_ID=45654;

    et pareil pour la table suivante...

  5. #5
    Membre habitué Avatar de host22
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Mars 2007
    Messages : 222
    Points : 183
    Points
    183
    Par défaut
    Citation Envoyé par philnext Voir le message
    Disons que sans connaitre tes tables l'exemple ne sera pas très parlant mais si ADO_SOUSFAMILLE est reliée à ADO_FAMILLE par la colonne FAM_ID, si tu détruis un enregistrement FAMILLE.FAM_ID=45654 tu dois faire la requète :

    DELETE FROM ADO_SOUSFAMILLE WHERE FAM_ID=45654;

    et pareil pour la table suivante...
    Merci ;
    La t'es vraiment logique grand merci a toi..
    Un homme savant a compris un certain nombre de vérités, un homme cultivé a compris un certain nombre d'erreurs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimisation de votre SGBDR et de vos requêtes...
    Par SQLpro dans le forum Langage SQL
    Réponses: 35
    Dernier message: 11/01/2013, 11h49
  2. Delete on cascade avec SQL server
    Par fadoua dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2004, 11h02
  3. LES TECHNIQUES DES SGBDR / MySQL rapide ???
    Par SQLpro dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/09/2003, 11h16
  4. [requête] DELETE + SELECT
    Par doohan dans le forum Requêtes
    Réponses: 6
    Dernier message: 07/07/2003, 12h27
  5. [langage] delete de fichier
    Par lolive dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2003, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo