Dataset et dataAdaptater, mauvaise mise à jour...

gusrom86 Messages postés 6 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 30 mai 2006 - 29 mai 2006 à 17:41
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Derniè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...
if(supprElCl(repClasse))
                {
                         ds.Clear;
                    da.Fill(ds, "Classes");
                    ds.Tables["Classes"].Rows.RemoveAt(chiffre);    
                    da.Update();
                }

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.

8 réponses

Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
29 mai 2006 à 18:26
le fait de supprimer ta classe dans le dataset signifie a ton dataadapter de le supprimer dans la base

MAIS  si tu n'a pas supprimer tes etudiants lie a ta classe la suppression ne peut ce faire

try
{
ds.Clear;
                    da.Fill(ds, "Classes");
                    ds.Tables["Classes"].Rows.RemoveAt(chiffre);   
                    da.Update();
}
catch(Exception xcp)
{
    MessageBox.Show(xcp.Message);
}

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...

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
0
gusrom86 Messages postés 6 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 30 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 ^^ )
0
georgeduke Messages postés 167 Date d'inscription dimanche 6 février 2005 Statut Membre Dernière intervention 13 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
0
gusrom86 Messages postés 6 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 30 mai 2006
30 mai 2006 à 06:44
Il n'y a pas un moyen de la faire avec un ALTER TABLE ?
Je sais je suis chiant :p...
Merci en tout cas
0

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

Posez votre question
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
30 mai 2006 à 08:44
alter table ETUDIANT
   drop constraint FK_ETUDIANT_REFERENCE_CLASSE
go

alter table ETUDIANT
   add constraint FK_ETUDIANT_REFERENCE_CLASSE foreign key (code)
      references CLASSE (code)
      on delete cascade
go

Ou FK_ETUDIANT_REFERENCE_CLASSE est le nom de ta reference valable sous sql..

c une prof de quoi oO

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
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é

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
0
gusrom86 Messages postés 6 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 30 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
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
30 mai 2006 à 17:02
felicitation :)

et good luck avec tes profs ^^

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
0
Rejoignez-nous