Bonjour à tous,
J’ai un programme lié à une base de données par le biais d’un dataset. Dans ce programme j’ai une GridView qui permet d’éditer une table et plus précisément l’identifiant métier « LOT.Numero_lot » qui est aussi clé primaire de ma table….
PS : Je n’ai pas conçu la base de donnée, on m’a dis de faire avec.
Imaginez alors les modifications suivantes que fait l’utilisateur dans ma gridview ; et le résultat à l’enregistrement (update) du dataset :
Violation de la contrainte PRIMARY KEY 'PK_LOT'. Impossible d'insérer une clé en double dans l'objet 'LOT'.
L'instruction a été arrêtée.
Le plantage est évident.
La solution pour corriger ce problème l’est moins étant donné que je ne souhaite pas modifier à ce stade du projet la structure de la base et que le programme compte 20000 lignes de code avec des références des re-calculs et des tables/parents enfant, des exports dans tous les sens…
La chance c’est que pour l’instant il n’y a que cette table qui pose problème.
Et si on regarde le problème de près, la solution la plus simple serait peut de simplement stocker l’ordre des modifications effectués dans une liste et d’appeler un update sur chacun des datarow de la liste, dans l’ordre. Le tout avant que j’appelle TableAdapterManager.UpdateAll sur tout le dataset.
Mes questions sont :
- avez-vous déjà rencontré le problème ?
- qu’est ce que vous pensez de la solution ?
- pouvez-vous me proposer quelque chose ?
Merci d'avance,
Partager