|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : avril 2008 Messages : 96 ![]() |
Bonjour
j'essaye d'éliminer les doublons dans une table dans la BD alors j'ai fait ce code Code :
mais la mise a jour vers la table ne fonctionne pas qu'est ce que manque dans mon code ? Merci d'avance |
||
|
|
00
|
|
|
#2 |
![]() ![]() |
![]() Peux-t-on voir l'implémentation de ta fonction base.RemoveDuplicates ?
__________________
Consultant .Net chez SoftFluent Découvrir notre produit CodeFluent Entities Adhérer à l'association Fier d'être développeur ![]() Les FAQs sur les technologies .Net voir ici Les cours et tutos sur les technologies .Net voir ici Les critiques sur les livres parlant des technologies .Net voir ici Pensez à la balise [CODE] Pensez au tag si votre problème est résolu
|
|
00
|
|
|
#3 | ||
|
Futur Membre du Club
![]() Inscription : avril 2008 Messages : 96 ![]() |
D'accord mais, je crois c'est pas ladans prob
voila les fonctions : Code C# :
|
||
|
|
00
|
|
|
#4 |
![]() ![]() |
Bah la méthode Remove sur la DataRowCollection table.Rows ne modifie pas l'état de la ligne mais la retire uniquement de la collection. ADO.Net se base sur l'état des lignes pour mettre à jour, ajouter ou supprimer des données sur la base de données cible. Pour que ton code marche il faut que tu utilises la méthode Delete de la ligne elle-même qui modifiera l'état de celle-ci. En gros tu remplaces la ligne tbl.Rows.Remove(dup); par dup.Delete();
__________________
Consultant .Net chez SoftFluent Découvrir notre produit CodeFluent Entities Adhérer à l'association Fier d'être développeur ![]() Les FAQs sur les technologies .Net voir ici Les cours et tutos sur les technologies .Net voir ici Les critiques sur les livres parlant des technologies .Net voir ici Pensez à la balise [CODE] Pensez au tag si votre problème est résolu
|
|
00
|
|
|
#5 | ||
|
Futur Membre du Club
![]() Inscription : avril 2008 Messages : 96 ![]() |
Citation:
il m'affiche l'exeption suivante Citation:
retVal = retVal && sourceRow[column].Equals(targetRow[column]); de la methode isDup() |
||
|
|
00
|
|
|
#6 |
![]() ![]() |
Alors pour faire simple, au lieu de retirer les lignes dupliquées, tu les stockes dans une collection qui te sera retourner par ta méthode base.RemoveDuplicates. Ensuite tu parcours cette collection pour faire appel à la méthode Delete de chaque DataRow dupliquée.
__________________
Consultant .Net chez SoftFluent Découvrir notre produit CodeFluent Entities Adhérer à l'association Fier d'être développeur ![]() Les FAQs sur les technologies .Net voir ici Les cours et tutos sur les technologies .Net voir ici Les critiques sur les livres parlant des technologies .Net voir ici Pensez à la balise [CODE] Pensez au tag si votre problème est résolu
|
|
00
|
|
|
#7 | |||||
|
Futur Membre du Club
![]() Inscription : avril 2008 Messages : 96 ![]() |
Citation:
Code :
Code :
|
|||||
|
|
00
|
|
|
#8 |
![]() ![]() |
J'ai comme l'impression que c'est l'instruction Dtables.AcceptChanges(); qui fout la merde. Cette instruction doit être appelée une fois que la mise à jour vers la BDD est effectuée.
Normalement tu n'as pas à effectuer l'appel à cette fonction vu qu'elle sera appelée par l'adaptateur. Si tu veux toujours l'appeler alors fais le après l'instruction adapter.Update(Dtables);.
__________________
Consultant .Net chez SoftFluent Découvrir notre produit CodeFluent Entities Adhérer à l'association Fier d'être développeur ![]() Les FAQs sur les technologies .Net voir ici Les cours et tutos sur les technologies .Net voir ici Les critiques sur les livres parlant des technologies .Net voir ici Pensez à la balise [CODE] Pensez au tag si votre problème est résolu
|
|
00
|
|
|
#9 | |
|
Futur Membre du Club
![]() Inscription : avril 2008 Messages : 96 ![]() |
Citation:
y'a rien que se change ! |
|
|
|
00
|
|
|
#10 |
![]() ![]() |
Si ça ne marche pas cela veut tout simplement dire que les lignes mises à jour ne sont pas celles de la DataTable sur laquelle est appelée la méthode Update de ton adaptateur.
En regardant l'implémentation de ta fonction FindDups tu ne récupérés pas la ligne de ta DataTable qui est sourceRow mais plutôt targetRow. Donc par la suite tu n'agis pas sur l'état de la ligne de ta DataTable mais sur la copie qui ne trouve pas dans cette même objet DataTable. Bref ta ligne suivante retVal.Add(targetRow); devrait être retVal.Add(sourceRow); si t'es sûr que les modifications apportées doivent s'appliquer sur le contenu de ton objet Dtables
__________________
Consultant .Net chez SoftFluent Découvrir notre produit CodeFluent Entities Adhérer à l'association Fier d'être développeur ![]() Les FAQs sur les technologies .Net voir ici Les cours et tutos sur les technologies .Net voir ici Les critiques sur les livres parlant des technologies .Net voir ici Pensez à la balise [CODE] Pensez au tag si votre problème est résolu
|
|
00
|
|
|
#11 | |
|
Futur Membre du Club
![]() Inscription : avril 2008 Messages : 96 ![]() |
Citation:
source c'est l'enregistrement source q'on doit pas modifier puisque c'est la 1ère et target contient chq fois l'enregistrement dupliqué q'on doit le supprimer cad source contient la 1ere ebregistrement à garder et target les autres enregistrement duliqués |
|
|
|
00
|
|
|
#12 |
![]() ![]() |
Alors je peux plus t'aider
__________________
Consultant .Net chez SoftFluent Découvrir notre produit CodeFluent Entities Adhérer à l'association Fier d'être développeur ![]() Les FAQs sur les technologies .Net voir ici Les cours et tutos sur les technologies .Net voir ici Les critiques sur les livres parlant des technologies .Net voir ici Pensez à la balise [CODE] Pensez au tag si votre problème est résolu
|
|
00
|
|
|
#13 |
|
Futur Membre du Club
![]() Inscription : avril 2008 Messages : 96 ![]() |
|
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Analyste / Programmeur / DBA Inscription : juillet 2006 Messages : 1 935 ![]() |
Apparemment, tu travailles sur base de type sql server.
A moins d'être vraiment obliger de faire cela par code dans le cadre d'une application (mais pourquoi créerait-elle des doublons en premier lieu dans ce cas 0_0), pourquoi ne pas le faire directement en sql ? Si c'est envisageable, voilà un article détaillé sur la manière de procédé : http://sqlpro.developpez.com/cours/doublons/
__________________
Kropernic (anciennement Griftou). |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com