begin process at 2008 09 06 18:30:00
1 237 887 membres
272 nouveaux aujourd'hui
14 314 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Dataset et dataAdaptater, mauvaise mise à jour... [ Base de données / SQL Server ] (gusrom86)

Dataset et dataAdaptater, mauvaise mise à jour... le 29/05/2006 17:41:21

gusrom86
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...
[code]if(supprElCl(repClasse))
                {
                    ds.Clear;
                    da.Fill(ds, "Classes");
                    ds.Tables["Classes"].Rows.RemoveAt(chiffre);   
                    da.Update();
                }[/code]

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.







Re : Dataset et dataAdaptater, mauvaise mise à jour... le 29/05/2006 18:26:12

Arthenius
Membre Club

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



Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."


Re : Dataset et dataAdaptater, mauvaise mise à jour... le 29/05/2006 18:39:03

gusrom86
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 ^^ )

Re : Dataset et dataAdaptater, mauvaise mise à jour... le 30/05/2006 00:49:34

georgeduke
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


Re : Dataset et dataAdaptater, mauvaise mise à jour... le 30/05/2006 06:44:30

gusrom86
Il n'y a pas un moyen de la faire avec un ALTER TABLE ?
Je sais je suis chiant :p...
Merci en tout cas

Re : Dataset et dataAdaptater, mauvaise mise à jour... le 30/05/2006 08:44:38

Arthenius
Membre Club


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



Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."


Re : Dataset et dataAdaptater, mauvaise mise à jour... le 30/05/2006 09:11:28

Arthenius
Membre Club
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é



Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."


Re : Dataset et dataAdaptater, mauvaise mise à jour... le 30/05/2006 16:57:02

gusrom86
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

Re : Dataset et dataAdaptater, mauvaise mise à jour... le 30/05/2006 17:02:41

Arthenius
Membre Club
felicitation :)

et good luck avec tes profs ^^



Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."



Classé sous : base, dataset, jour, classe, dataadaptater

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS