Requete Delete From Where impossible à éxecuter

Résolu
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007 - 8 oct. 2005 à 20:19
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 9 oct. 2005 à 12:52
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

Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
8 oct. 2005 à 22:52
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
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
8 oct. 2005 à 22:54
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
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
8 oct. 2005 à 23:01
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
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
9 oct. 2005 à 10:45
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cispo Messages postés 103 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 10 septembre 2007 3
9 oct. 2005 à 11:03
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 ?
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
9 oct. 2005 à 12:20
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
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
9 oct. 2005 à 12:27
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
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
9 oct. 2005 à 12:52
Pas de quoi

Mx
0
Rejoignez-nous