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 :

Problème de suppression


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut Problème de suppression
    Salam
    j'ai un petit code pour supprimer des enregistrements dans une table maitre et deux tables détails!

    donc j'ai un TEdit où y a la valeur de la clé à supprimer : numOT

    la table maitre : ORT
    tables détails : EquipOT, IntervOT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    if (numOT.text<>'') then
    begin
     
    //supprimer les équipements de l'ORT
    EquipOT.first;
    while not EquipOT.eof do
    begin
    if (EquipOTnumOT.value=numOT.text) then EquipOT.delete;
     
    EquipOT.next;
    end;
     
    //supprimer les intervenants de l'ORT
    IntervOT.first;
    while not IntervOT.eof do
    begin
    if (IntervOTnumOT.value=numOT.text) then   IntervOT.delete;
    IntervOT.next;
    end;
     
    //supprimer l'ordre
    ORT.First;
    if ORT.locate('numord',numOT.text,[]) then
    ORT.delete;
    ORT.refresh;
    end;
     
    end;
    alors le problème est:qu'il me laisse toujours un derniers enregistrement dans les tables détails, et quand j'ai débugué, j'ai vu que dans le dernier enregistrement, il le saute, il ne vérifie même pas la condition.

  2. #2
    atb
    atb est déconnecté
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Novembre 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Autre

    Informations forums :
    Inscription : Novembre 2004
    Messages : 639
    Points : 929
    Points
    929
    Par défaut
    Bonjour ,
    Tu dis qu'il les sautes les lignes et ne test pas ,çad il ne verifie pas la condition du not eof ,cad que la table détail est maintenant vide ? t'es sure que tout les enregistrement sont bien relier en maitre detail avec la table maitre .
    essay ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    EquipOT.last;
         While  not EquipOT.bof do
         begin
         EquipOT.Delete;

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    J'ose même pas imaginer le temps que ca va mettre quand les tables seront lourdement chargées d'enregistrement.

    Je te propose deux solutions :

    Par requetes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    With UnQuery do
    begin
      Close;
      SQL.Clear;
      SQL.Add('delete from EquipOT');
      SQL.Add('Where numOT = ' + numOT.text);
      ExecSQL; // A vérifier avec le BDE, je suis pas sur de la commande
     
      Close;
      SQL.Clear;
      SQL.Add('delete from IntervOT');
      SQL.Add('Where numOT = ' + numOT.text);
      ExecSQL;
     
      Close;
      SQL.Clear;
      SQL.Add('delete from ORT');
      SQL.Add('Where numOT = ' + numOT.text);
      ExecSQL;
    end;
    Avec Locate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //supprimer les équipements de l'ORT
    while EquipOT.locate('numOT',numOT.text,[loCaseInsensitive]) do
      EquipOT.delete;
     
     
    //supprimer les intervenants de l'ORT
    while IntervOT.locate('numOT',numOT.text,[loCaseInsensitive]) do
       IntervOT.delete;
     
    //supprimer l'ordre
    while ORT.locate('numord',numOT.text,[loCaseInsensitive]) do
      ORT.delete;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Membre du Club Avatar de smail21
    Profil pro
    Inscrit en
    Février 2005
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2005
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    salam
    merci malatar
    j'ai essayé ton code et c'est super bien!
    je voulais utiliser locate plusieurs fois(en boucle) et je ne savais pas comment
    là j'ai appris une nouvelle technique
    encore merci

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

Discussions similaires

  1. Problème de suppression de ligne dans ma base !
    Par gregman dans le forum ASP
    Réponses: 2
    Dernier message: 21/05/2005, 08h14
  2. Problème de suppression de fichier
    Par sorry60 dans le forum Assembleur
    Réponses: 7
    Dernier message: 23/04/2005, 18h33
  3. [JTable] problème après suppression d'une ligne
    Par fredo3500 dans le forum Composants
    Réponses: 7
    Dernier message: 17/03/2005, 10h01
  4. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27
  5. Réponses: 4
    Dernier message: 16/04/2004, 08h20

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