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 :

Mon Delete ne marche pas!Comment faire?


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 177
    Points : 74
    Points
    74
    Par défaut Mon Delete ne marche pas!Comment faire?
    Voilà je n'arrive pas à faire marcher mon Delete pour ma requête comment faire? voila ma requête :

    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
    begin
     
    if (combobox2.Text='Sélectionnez') then
       showmessage('Veuillez choisir une campagne!')
       else
       begin
    Query18.close;
    Query18.SQL.Clear;
    Query18.SQL.Add('Select CCode,Titre From Campagne');
    Query18.open;
     
    Query18.first;
     
    While Not Query18.Eof do
    begin
    if ComboBox2.text=Query18.Fields[1].AsString then
       begin
       Query19.close;
       Query19.SQL.Clear;
       Query19.SQL.Add('Delete From Campagne C');
       Query19.SQL.Add('JOIN CampagneItems CI ON (C.CCode=CI.CCode)');
       Query19.SQL.Add('WHERE C.CCode=:x');
       Query19.Params[0].AsString:=Query18.Fields[0].AsString;
       Query19.ExecSQL;
       end;
       Query18.next;
    end;
    end;
    il me fait une erreur au JOIN

  2. #2
    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
    Normal, les delete ne peuvent se faire que sur une seule table (comme pour les insert et update), tu ne peux pas faire de jointure.
    Modérateur Delphi

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

  3. #3
    Membre habitué Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Points : 144
    Points
    144
    Par défaut
    Normal, on ne peut pas faire de JOIN dans un delete enfin pas à ma connaissance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE from TABLE where Conditions


    Explique ce que tu essaies de faire avec tes CAMPAGNES parce que c'est pas clair. (Un Query qui les parcours et l'autre qui les supprime !)
    Tu sais que Query.delete supprime l'enregistrement en cours :
    Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 177
    Points : 74
    Points
    74
    Par défaut
    non je ne savais pas!mon code marche maintenant faut que je m'attaque à l'update :s :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    begin
     
    if (combobox2.Text='Sélectionnez') then
       showmessage('Veuillez choisir une campagne!')
       else
       begin
    Query18.close;
    Query18.SQL.Clear;
    Query18.SQL.Add('Select CCode,Titre From Campagne');
    Query18.open;
     
    Query18.first;
     
    While Not Query18.Eof do
    begin
    if ComboBox2.text=Query18.Fields[1].AsString then
       begin
       Query19.close;
       Query19.SQL.Clear;
       Query19.SQL.Add('Delete From Campagne C');
       Query19.SQL.Add('WHERE C.CCode=:x');
       Query19.Params[0].AsInteger:=Query18.Fields[0].AsInteger;
       Query19.ExecSQL;
     
       Query21.close;
       Query21.SQL.Clear;
       Query21.SQL.Add('Delete From CampagneItems CI');
       Query21.SQL.Add('WHERE CI.CCode=:x');
       Query21.Params[0].AsInteger:=Query18.Fields[0].AsInteger;
       Query21.ExecSQL;
       end;
       Query18.next;
    end;
    ShowMessage('Suppression Terminé!');
     
         ComboBox2.clear;
     
         Query22.Close;
         Query22.SQL.Clear;
         Query22.SQL.Add('select Titre from Campagne');
         Query22.Open;
     
         Query22.First;
     
         while not Query22.Eof do
            begin
                    combobox2.Items.Add(Query22.Fields[0].asstring);
                    Query22.Next;
            end;
         Query22.Close;
    end;
    end;

  5. #5
    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
    A mon avis ton code fonctionnera pas comme tu veux, en clair il va te supprimer la totalite des éléments de tes tables "campagnes" et "campagneitems"

    Pourquoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Query18.close;
    Query18.SQL.Clear;
    Query18.SQL.Add('Select CCode,Titre From Campagne');
    Query18.open;
    Tu prend la totalité de la table campagne et vu le if au dessus je doute que c'est ca que tu veuilles.

    sinon version plus simple de ce que tu as ecrit (si la base de données supporte cette ecriture sQL bien sur)

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    if (combobox2.Text='Sélectionnez') then
    begin
       showmessage('Veuillez choisir une campagne!');
       Exit;
    end;
     
    With Query18 do
    begin
      Close;
      SQL.clear;
      SQL.Add('Delete from CampagneItems CI');
      SQL.Add('Where CI.CCode in )';
      SQL.Add('(select C.CCode from Campagne C where LeChampQuiVaBien = :PCampagne)');
      paramCheck := True;
      params.ParamByName('PCampagne').value := combobox2.text;
      try
        ExeqSql;
      Except on e:Exception do
        begin
          Showmessage('Erreur lors de la suppression :' + #13#10 + E.Message);
         exit;
        end;
      end;
     
      Close;
      SQL.Clear;
      SQL.Add('Delete from Campagne');
      SQL.Add('Where LeChampQuiVaBien = :PCampagne');
      Paramcheck := True;
      PArams.paramByName('PCampagne').Value := Combobox.text;
      try
        ExeqSql;
      Except on e:Exception do
        begin
          Showmessage('Erreur lors de la suppression :' + #13#10 + E.Message);
         exit;
        end;
      end;
      Showmessage('Fin de la suppression');
    end;
    Voila, sauf erreur de frappe, en plus logicquement il vaut mieux supprimer la table "campagneitems" avant la table "campagne".

    PS: je te conseil d'aller voir les tutoriels SQL de ce forum, ca ne pourra que te faire du bien ^^
    Modérateur Delphi

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

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

Discussions similaires

  1. pb dans mon script, je sais pas comment faire
    Par gengiskhan72 dans le forum C
    Réponses: 5
    Dernier message: 30/06/2009, 20h16
  2. = NULL, ne marche pas comment faire ?
    Par rad_hass dans le forum MS SQL Server
    Réponses: 20
    Dernier message: 20/11/2008, 09h42
  3. Mon Backoffice ne marche pas pour update et delete ?
    Par vascoII dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 17/07/2008, 23h23
  4. trouve pas comment faire un algo pour mon programme
    Par unknoweb dans le forum Débuter avec Java
    Réponses: 21
    Dernier message: 12/04/2007, 17h17
  5. [IB71] mon Blob ne marche pas correctement
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 2
    Dernier message: 17/09/2003, 14h03

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