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

Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 8 oct. 2005 à 20:19 - Dernière réponse : MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention
- 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
Afficher la suite 

28 réponses

Répondre au sujet
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 8 oct. 2005 à 22:45
+3
Utile
coq -> non, pas forcement besoin du *
Maiku -> Ca prouve bien qu'avec un Try /Catch, tu pourrais controler ton exception.

Tu as plus d'infos dans ton message d'erreur ?



essaie

try

{

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

}

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


Mx
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de MorpionMx
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 9 oct. 2005 à 12:25
+3
Utile
La suppression en cascade, ca veut dire que ca va aller supprimer dans
les autres tables tout ce qui fait reference au champ que tu as
supprimé.



Exemple : un resto qui aurait plusieurs menus, et plusieurs plats. (donc une table Menu, et une table Plat)

Un plat peut faire parti de plusieurs menus.

Cependant, si tu supprimes un plat, chaque menu aura un plat qui n'existe plus dans la base

La suppression en cascade va faire qu'Access supprimera dans la table
Menu toutes les lignes qui concernent le plat que tu auras supprimé



Dans ton cas, ca va enlever automatiquement dans ta table composer, la recette que tu as supprimé dans la table recettes

Mx
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de MorpionMx
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 9 oct. 2005 à 10:10
+1
Utile
Le probleme c'est que tu as du mettre des contraintes d'integrité referentielle dans Access.

As-tu vraiment besoin de les mettres ? (meme si le MLD l'indique). Je veux dire, est-ce une obligation ?



Si tu dois les mettre, alors vas dans access, et choisis ta relation
entre tes tables Recettes et Composer. Click Droit -> Modifier une
relation, et clic "Effacer en cascade les enregistrements
correspondants", et reteste ton code (sans la requete "DELETE FROM
Composer") pour voir.



Cependant, je trouve ca bizarre que meme avec les 2 requetes enchainées, il n'y arrive pas

Mx
Commenter la réponse de MorpionMx
cispo 103 Messages postés mardi 9 novembre 2004Date d'inscription 10 septembre 2007 Dernière intervention - 8 oct. 2005 à 21:43
0
Utile
Bonsoir,



Si tu englobes ce bout de code dans un try / catch, quelle erreur t'est retournée ?
Commenter la réponse de cispo
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 8 oct. 2005 à 22:08
0
Utile
Controle aussi la string equivalent a la requete, pour voir si elle ne contient pas une erreur.

Il pourrait par exemple avoir des espaces a la fin de recettesup (a ce
propos, tu pourrais pas plutot utiliser un identifiant ?)

Et execute la dans ton SGBD pour voir si elle reagit comme tu veux.


Mx
Commenter la réponse de MorpionMx
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 8 oct. 2005 à 22:14
0
Utile
Rebonjour

Alors pour le contrôlé du string, ben j'affiche la requete avant de l'executer, elle m'affiche bien le nom de la recette.
Pourquoi pas utilisé un identifiant ?
Bonne question, je n'en voyais pas le besoin vu que j'ai le nom de la recette dans la feuille.
Quand au try catch ben ......je sé vraiment l'utiliser en fait.
Donc si tu pouvais m'expliquer cispo.....
Parce que j'ai deja essayé d'en faire mais ca marchait pas T_T

Maiku

PS : La requete dans le SGBD marche parfaitement.
Commenter la réponse de Maiku
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 8 oct. 2005 à 22:18
0
Utile
Basiquement, englobe tout le contenu de la fonction bd.Connection() par Try/Catch



void Connection()

{

try

{

// ton code

}

catch(Exception e){ System.Windows.Forms.MessageBox.Show(e.ToString()); }

}


Si une quelconque erreur est levée, tu auras toute sa trace dans un MessageBox


Mx
Commenter la réponse de MorpionMx
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 8 oct. 2005 à 22:20
0
Utile
Euh.....
désolée de dire ça mais j'en vois pas l'intêret ce n'est pas bdConnection qui pose problème puisque toutes mes requetes fonctionne avec cette méthode.
Pourquoi faire un try/catch dedans ?

Maiku
Commenter la réponse de Maiku
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 8 oct. 2005 à 22:23
0
Utile
Tu as raison. De toutes facons, si il y avait une erreur, tu serais au courant par un plantage.

As-tu essayé le mode pas a pas dans ta fonction ?

Mx
Commenter la réponse de MorpionMx
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 8 oct. 2005 à 22:25
0
Utile
Lol

Ben y a pas vraiment de mode pas a pas, si tu vois ce que je veux dire, c'est juste une requete que je fais ds cette fonction.
Pourtant ds mon logiciel, je fais plein d'otre requetes : insert, update, select et y a que le delete qui marche pas et j'en ai besoin ds deux feuilles.
T_T

Je vais essayé de faire un delete sans where pour voir, c'est la seule chose que je peux tenter.

Maiku
Commenter la réponse de Maiku
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 8 oct. 2005 à 22:27
0
Utile
Resultat des courses :

Meme sans un where, impossible de supprimer.
Je vais bientot m'arracher les cheveux !!!!!

Maiku
Commenter la réponse de Maiku
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 8 oct. 2005 à 22:30
0
Utile
Oui c'est tres bizarre.



MessageBox.Show("Une Si Belle Recette T_T, j'espère que tu m'en
proposera des meilleurs ^^ "); <- Ca s'affiche bien ca ?

Mx
Commenter la réponse de MorpionMx
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 8 oct. 2005 à 22:31
0
Utile
Non il ne peut s'afficher puisqu'il s'agit de la ligne situé apres la requete, et puisque la requete plante, elle ne s'affiche pas

Maiku
Commenter la réponse de Maiku
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 8 oct. 2005 à 22:33
0
Utile
Ca veut rien dire ca.

Par contre, ca voudrait peut etre tout simplement dire que ce bout de code, que tu nous a presenté, n'est pas executé.

Mets un MessageBox de test avant la Connection, pour voir.

Mx
Commenter la réponse de MorpionMx
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 8 oct. 2005 à 22:33
0
Utile
Donc il y a bien une exception qui est levée, non ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 8 oct. 2005 à 22:34
0
Utile
coq -> il parait que non

Mx
Commenter la réponse de MorpionMx
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 8 oct. 2005 à 22:38
0
Utile
Alors j'ai remis le même MessageBox mais cette fois ci avant la requete, celle ci s'est bien affichée, ce qui est logique car il ne doit rentrer dans le else que si j'ai selectionné une recette.
Je vous met le message d'erreur qu'il me donne sur la ligne de ma requete :

Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans system.data.dll

Maiku

PS : j'ai deja eu le même genre d'erreur au debut quand mes requetes foiraient mais la cette requete elle commence a me peser.

Maiku
Commenter la réponse de Maiku
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 8 oct. 2005 à 22:40
0
Utile
ah.

Sinon sous acces ce n'est pas plutot
bd.Connection("Delete * From Recettes " + " where NomRecette='"+recettesup+"'");

?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 8 oct. 2005 à 22:41
0
Utile
Nous y voilà, c'est ça qu'on appelle une exception.
Peut tu nous sortir le restant du message stp ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Maiku 190 Messages postés dimanche 10 avril 2005Date d'inscription 4 juillet 2007 Dernière intervention - 8 oct. 2005 à 22:44
0
Utile
Alors pour te repondre coq :
le * je viens de le tester mais je ne vois pas ce que ca aurait changer car sous access sous le * il marchait.
Quand au restant du message : que veut tu dire par la ?
Je n'ai eu que ce message d'erreur : que je connais d'ailleurs par coeur lol puisqu'il s'affiche tjrs lors d'erreur de requete.

Maiku

PS : Tu viens de m'apprendre ce qu'est un exception, merci, dsl je me suis mis au c# mode graphique que depuis debut septembre ^^°. Et pour l'instant je me contente de ce que je dois faire ds mon prog.
Commenter la réponse de Maiku

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Requete Delete From Where impossible à éxecuter - page 2