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

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

Votre réponse

28 réponses

Meilleure réponse
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
8 oct. 2005 à 22:45
3
Merci
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

Merci MorpionMx 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de MorpionMx
Meilleure réponse
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
9 oct. 2005 à 12:25
3
Merci
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

Merci MorpionMx 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de MorpionMx
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
9 oct. 2005 à 10:10
1
Merci
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
Messages postés
103
Date d'inscription
mardi 9 novembre 2004
Dernière intervention
10 septembre 2007
8 oct. 2005 à 21:43
0
Merci
Bonsoir,



Si tu englobes ce bout de code dans un try / catch, quelle erreur t'est retournée ?
Commenter la réponse de cispo
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
8 oct. 2005 à 22:08
0
Merci
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
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Dernière intervention
4 juillet 2007
8 oct. 2005 à 22:14
0
Merci
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
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
8 oct. 2005 à 22:18
0
Merci
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
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Dernière intervention
4 juillet 2007
8 oct. 2005 à 22:20
0
Merci
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
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
8 oct. 2005 à 22:23
0
Merci
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
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Dernière intervention
4 juillet 2007
8 oct. 2005 à 22:25
0
Merci
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
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Dernière intervention
4 juillet 2007
8 oct. 2005 à 22:27
0
Merci
Resultat des courses :

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

Maiku
Commenter la réponse de Maiku
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
8 oct. 2005 à 22:30
0
Merci
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
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Dernière intervention
4 juillet 2007
8 oct. 2005 à 22:31
0
Merci
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
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
8 oct. 2005 à 22:33
0
Merci
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
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
8 oct. 2005 à 22:33
0
Merci
Donc il y a bien une exception qui est levée, non ?

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

Mx
Commenter la réponse de MorpionMx
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Dernière intervention
4 juillet 2007
8 oct. 2005 à 22:38
0
Merci
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
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
8 oct. 2005 à 22:40
0
Merci
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
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
8 oct. 2005 à 22:41
0
Merci
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
Messages postés
190
Date d'inscription
dimanche 10 avril 2005
Dernière intervention
4 juillet 2007
8 oct. 2005 à 22:44
0
Merci
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.