[C#][Web 2.0] Verification de la possibilité d'une suppression

Résolu
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006 - 17 mai 2006 à 10:28
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 - 17 mai 2006 à 18:16
Bonjour, voila j'ai un souci.
J'ai dans mon GridView un requête permettant de supprimer la ligne selectionné(dans mon cas un projet) (cela avec le SqlDataSource), je voudrais qu'avant cela, il verifie si le projet que je souhaite supprimer n'est pas utiliser dans une autre table, s'il n'est pas dans l'autre table il peux supprimer sinon il ne peux pas.

if (e.CommandName ==
"Delete") //ou la propriété rowDeleting{

SqlConnection oConnection;oConnection =

new
SqlConnection();

String sConnectionString;sConnectionString =

"Server=CHRISTOPHE\\SQLEXPRESS; Initial Catalog=ldap;Integrated Security = True;";oConnection.ConnectionString = sConnectionString;

oConnection.Open();

SqlCommand oCommand;

SqlDataReader oDataReader;
String sSQL;sSQL "SELECT COUNT(*) FROM cra WHERE projet @projet";oCommand =

new
SqlCommand(sSQL, oConnection);oDataReader.Read();

int num = oDataReader.GetInt32(0);oDataReader.Close();

if (num != 0 ){

Response.Write(

"<script>alert("" +
" D‚sol‚ mais nous ne pouvez supprimer ce projet! " +
"");</script>
");}

Dans la requete, dans le WHERE, je sais pas quoi mettre pour dire qu'il compte les lignes du projets qsue j'ai selectionné :s j'ai mis @projet mais bon...
Et sinon je sais pas comment faire pour lui dire que si c'est different de 0 il n'execute pas la requete!

Merci

12 réponses

cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
17 mai 2006 à 18:11
C'est bon, j'ai trouvé un moyen de faire sa!
J'ai simplement modifié ma requete suppression comme tu me l'avais indiqué...
Pourquoi j'y ai pas pensé avant à la place de toujours rechercher les solution les plus compliquées!!!!
Voici ce que j'ai fais pour ce qui souhaiterais faire la meme chose :

DELETE FROM proact
WHERE (projet = @original_projet)
AND projet not in (SELECT projet FROM cra)
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mai 2006 à 13:46
Bonjour,

ne serait-ce pas plutot un problème de sql (www.sqlfr.com) ou alors j'ai rien compris au problème :)

<hr />Cyril - MVS - MCP
0
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
17 mai 2006 à 16:09
Bah je pense que c'est juste une commande a mettre pour dire au GridView de ne pas executer la suppression.
Ei sinon pour le @projet c'est jpas un probleme de requete qui ne marche pas mais plutot d'attribuer a @projet une valeur selectionnée
Enfin peut etre je me trompe :d
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mai 2006 à 16:12
Oui, mais d'aprés le debut de ta question, tu vérifies au niveau de SQL, donc pourquoi ne pas le faire dans ta requete de suppression ?

sinon pour mettre un paramètre il faut faire :

cmd.commandType = StoredProcedure
cmd.parameters.add(new SqlParameters("@Project", value))

<hr />Cyril - MVS - MCP
0

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

Posez votre question
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
17 mai 2006 à 16:22
Je vais voir mais j'ai cru que par exemple, pour ma requete de selection, il aurait suffit de faire sa :
sSQL "SELECT COUNT(*) FROM cra WHERE projet'" + projet_selectionne_du_gridview  + "'";
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
17 mai 2006 à 17:20
Salut,

Tu ne peux justement pas faire comme ça pour ta requête, à cause de problèmes d'injection SQL (cf cet excellent article), il est donc toujours préférable d'utiliser les objets SqlParameter comme cyril l'a montré...
...bien qu'il ai oublié les ; à la fin (d'anciennes habitudes du VB, cyril ? )

<hr size="2" width="100%" />Nurgle (Antoine)
0
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
17 mai 2006 à 17:34
Comment sa??? Je dois avant sa mettre une valeur à @projet pour dire que @projet est le projet que je viens de selectionné...mais comment je fais....

?cmd?.commandType = StoredProcedure;
?cmd?.parameters.add(new SqlParameters("@projet", ?value?));
sSQL "SELECT COUNT(*) FROM cra WHERE projet @projet";
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
17 mai 2006 à 17:48
Comme tu es sans doute dans l'évènement RowDeleting, tu peux utiliser e.Values["Projet"] ou e.Keys["Projet"] (me souviens plus lequel...) pour récupérer le nom du champ "Projet" de la ligne en cours de suppression (si évidemment ton champ s'appelle "Projet"...)
et ensuite :

oCommand.Parameters.Add(new SqlParameter("@projet", leNomDuProjet));

<hr size="2" width="100%" />Nurgle (Antoine)
0
cnguyen Messages postés 81 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 12 juillet 2006
17 mai 2006 à 17:50
Au faites, au niveau de la requete de suppression , tu veux que je mette sa sinon a la place de me casser la tete a faire un count sur la table CRA :

UPDATE    proact
SET              projet = @projet
FROM         proact CROSS JOIN
                      cra
WHERE     (proact.projet = @original_projet) AND (cra.projet IS NULL)
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 mai 2006 à 18:13
c'est ce que je disais de faire depuis le début ... :p

<hr />Cyril - MVS - MCP
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
17 mai 2006 à 18:15
et bah voilà...
(pense aussi à aller sur sqlfr.com pour fermer le post que tu as posté vu que tu viens de résoudre ton problème...)

A+ et bonne continuation !

<hr size="2" width="100%" />Nurgle (Antoine)
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
17 mai 2006 à 18:16
ah, il faut croire que j'explique mieux que toi cyril ...

<hr size="2" width="100%" />Nurgle (Antoine)
0
Rejoignez-nous