gusrom86
Messages postés6Date d'inscriptionsamedi 5 février 2005StatutMembreDernière intervention30 mai 2006
-
29 mai 2006 à 17:41
Arthenius
Messages postés1182Date d'inscriptionmercredi 21 janvier 2004StatutMembreDernière intervention 6 septembre 2011
-
30 mai 2006 à 17:02
Bonjour tout le monde,
J'ai un gros probleme avec ma PTI (bts ig2) de C# de gestion de base de donnée...
Alors voila j'ai 2 tables :
ETUDIANTS : CLASSE:
indice code
nom description
prénom
classe(clé étrangère de classe.code)
J'ai mis la table CLASSE dans le dataset, seulement celle-ci et pas celle d'ETUDIANT pour montrer les possibilités avec et sans dataset, et finalement faire un mix des 2.
Je veux supprimer une classe, alors je vire d'abord tous les étudiants de la classe choisi en direct (par requete direct), et ensuite je veux mettre à jour le dataset pour lui montrer qu'il n'y a plus lieu de se préoccuper des liens avec ETUDIANTS.
Ensuite je tente de supprimer la ligne où contient la classe (ex : IG2, info gestion 2e annee), puis je fais une mise à jour de la base de donnée avec le dataAdaptater...
Le probème cest que la dataset vire bien la ligne de classe, mais la ligne n'est pas viré sur la BDD...
J'ai essayé plusieurs variantes, j'ai bien ajouté le "da.MissingSchemaAction = MissingSchemaAction.AddWithKey;" mais rien à faire...
Pour l'ajout de classes, il n'y a aucun probleme, et le dataset ainsi que la base de donnée se mettent correctement à jour.
Ma prof galère comme moi, alors s'il vous plait, abrégez notre mal de crâne et aidez nous.
Je vous remercie énormément.
Essaie deja de catcher l'erreur tu devrais avoir un message de ta bdd qui te dis qu'une contrainte n'a pas ete respecter
les solutions :
- faire une boucle avant ton da.Update qui va supprimer tout les etudiants appartenant a ta classe
- dans ta base de données modifies la contrainte d'intégrité entre ta table CLASSE et ETUDIANT en mettant un delete cascade...
gusrom86
Messages postés6Date d'inscriptionsamedi 5 février 2005StatutMembreDernière intervention30 mai 2006 29 mai 2006 à 18:39
Je te remercie de t'interesser à mon cas...
J'ai deja catcher les erreurs, aucuns problèmes apparents...
Dans mon dataset je n'ai mis que les classes, pas les étudiants, les étudiants je les supprime autrement :strSql "DELETE FROM Etudiants WHERE Etudiants.classe '" + classe + "'";
SqlCommand cmdSuppr = new SqlCommand(strSql, cn);
cmdSuppr.ExecuteNonQuery();
C'est pour cela que je fais un fill sur mon da...
J'ai entendu parler de la contrainte d'intégrité, mais je n'arrive pas a créer la requête :/.
Pourrais-tu m'éclaircir sur ce point? Ce serais royale si tu me l'a donnais (ici aussi ma prof n'a pas su ^^ )
georgeduke
Messages postés167Date d'inscriptiondimanche 6 février 2005StatutMembreDernière intervention13 avril 2007 30 mai 2006 à 00:49
Pour les contraintes d'intégrité :
Lors de la requete SQL de construction de tes tables, il suffit de mettre ça juste apres la reference à la clef étrangère 'FK_Classe':
ON DELETE RESTRICT
Arthenius
Messages postés1182Date d'inscriptionmercredi 21 janvier 2004StatutMembreDernière intervention 6 septembre 201114 30 mai 2006 à 09:11
on delete cascade : supprime automatiquement les etudiant qd tu supprime une classe
on delete restrict : empeche la suppression d'une classe si des etudiants y sont rataché
gusrom86
Messages postés6Date d'inscriptionsamedi 5 février 2005StatutMembreDernière intervention30 mai 2006 30 mai 2006 à 16:57
Ouf merci beaucoup, je pourrais tester ca que jeudi (parce que j'ai pas accès a la BDD).
Je pense que ca va pas mal m'aider...
Euh...c'est une prof d'algo, de prog et de merise (pas SQL, seulement MCD, MCT etc...).
Merci en tout cas (encore).
P.S: je viens d'apprendre que je suis accepté en apprentissage en MIAGE a creteil (paris XII), YOUPI!!!! :p