Requete Delete From Where impossible à éxecuter [Résolu]

Signaler
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007
-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
-
Bonjour


Je developpe actuellement un logiciel de cuisine en relation avec une base de données access 2000, je l'ai quasiment terminé à l'exception d'une requete sql qui refuse de marcher, il s'agit d'une requete de suppression DELETE , voici le code concernés :


Détails : Recettes.Text est une combobox qui contient la recette selectionnée par l'utilisateur, ce bout de code sert a supprimer une recette qui est consultée, result est un tableau ArrayList dont je me sert pour traiter les resultats de mes requetes sql, Connection est une méthode que j'ai declarée dans une bibliothèque de classe (un fichier dll si vous preferez et dont je peut me servir pour n'importe quel requete).


if( this.Recettes.Text == "")
{


MessageBox.Show("Vous ne pouvez supprimer une recette sans l'avoir selectionée et consultée");


}


else


{


string recettesup = this.Recettes.Text;


this.Recettes.Text = "";


bd.Connection("Delete From Recettes " + " where NomRecette='"+recettesup+"'");


MessageBox.Show("Une Si Belle Recette T_T, j'espère que tu m'en proposera des meilleurs ^^ ");


}

J'espere que qq pourra me dire pourquoi la requete ne fonctionne pas T_T
Merci d'avance
Maiku

28 réponses

Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Alors je suis en train de règler l'erreur:
en fait l'erreur logique le message m'a dit qu'il ne pouvait supprimer la ligne de la table car le coderecette de cette table est repris dans une table composer.
Maintant il s'agit de faire un delete supplémentaire et de voir s'il acceptera les 2.

Maiku
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Petite question , une chose que je ne sais pas si on peut le faire :
peut on supprimer sur deux tables ? qui ont un identifiant en commum ?

Maiku
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Alors mon code a un petit peu changé, en raison de mes tables : j'ai 4 tables en tout :
Famille, Ingrédients,Recettes,Composer
Le MLD si vous voulez ca donne a peu pres ça :
Famille(RefF,NomF)
Ingrédients(RefI,NomI,#RefF)
Recettes(CodeRecette,NomRecette,Details)
Composer(#CodeRecette,#RefI)

Le code modifié donne ceci :


if ( this.Recettes.Text == "")


{


MessageBox.Show("Vous ne pouvez supprimer une recette sans l'avoir selectionée et consultée");


}


else


{


MessageBox.Show("Une Si Belle Recette T_T, j'espère que tu m'en proposera des meilleurs ^^ ");


string recettesup = this.Recettes.Text;


this.Recettes.Text = "";


try


{


this.champ = bd.Connection("Select CodeRecette From Recettes" + " where NomRecette='"+recettesup+"'");


int result = int.Parse(this.champ[0].ToString());


MessageBox.Show("result :"+result);


//Cette Requete s'effectue bien, il supprime bien la ligne concernée de la table composer
bd.Connection("Delete From Composer " + " where CodeRecette="+result);


//Cette requete plante : le message dit qu'il ne peut supprimer la ligne car il y a des enregistrement connexes dans la table composer
bd.Connection("Delete From Recettes " + " where CodeRecette="+result);


}


catch(OleDbException ode){ MessageBox.Show(ode.ToString()); }

Conclusion : ça c'est amelioré mais on est pas au bout de nos peines T_T

Maiku
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
Ok, donc je viens de faire un test avec la réponse de mon dernier post, et ca fonctionne.

Sois tu enleve les relations avec tes tables, et là plus d'erreur (mais base de données devient incohérente)

Sois directement dans acces, tu demandes une suppression en cascade.



Par contre, j'ai testé en enchainant 2 requetes DELETE comme toi tu le fais, et je n'obtiens pas d'erreur, tout se passe bien.

Mx
Messages postés
103
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
10 septembre 2007
3
Il est normal que ta requete SQL ne fonctionne pas si la ligne que tu veux supprimer contient des enregistrements connexes.



Tu dois tout d'abord supprimer les enregistrements qui dépendent de l'enregistrement que tu souhaites supprimer.



Si tu prends l'exemple d'un forum, tu ne peux pas supprimer un
utilisateur avant d'avoir supprimer tous ses messages, sinon à quoi ses
messages feraient-ils référence dans la base de données ?
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Hello Mx

Désoler pour moi le reveil c'est a partir de 12h.
Alors pour te repondre : je ne peux supprimer les relations car j'ai pas de mal de jointures avec plusieurs de mes requetes.
Quand a ta deuxieme solution : eh bien ca marche nikel^^.
Je t'en remercie d'ailleurs.
Mais ca veut dire koi supprimer en cascade les enregistrements correspondants , parce que moi et le français ca fait deux, qu'est ce que ca fait concretement ?

Maiku
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Statut
Membre
Dernière intervention
4 juillet 2007

Merci de tes explications , maintenant j'ai tout compris.
Grâce à toi ,j'ai resolu mon problème, il ne me reste qu'a generer un document word pour imprimer une recette, et mon logicile sera terminée.
Encore Merci Mx

Maiku
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
Pas de quoi

Mx