Salut à tous,
Je viens d'exploser une première souris sur un problème que je n'arrive pas à résoudre (après y avoir passé 4 jours, et épluché des milliers de sites/forums...).
J'ai une base de données assez simple :
Mon DataSet est bien en mode "mise à jour hiérarchique". Au niveau de mes adapter, j'ai bien coché la case "Actualiser la table de données" afin qu'il ajoute un "select" après le insert pour actualiser les PK. Concernant ma relation, elle est bien de type "relation + clé étrangère" avec une mise à jour en cascade pour la modification et la suppression.
Sur ma Windows Form, la procédure que j'ai employé est la plus basique possible :
- A partir de la fenêtre source de données, j'ai glissé ma table "documents" (en mode détails),
- Puis j'ai glissé ma table "documentslignes" (en mode datagridview)
Sur ma form, les éléments suivants se sont créés automatiquement :
- 2 BindingSource pour mes 2 tables (avec AllowNew à TRUE),
- Les 2 TableAdapter correspondants,
- Un TableAdapterManager,
- Un DataSet.
La source de mon DocumentsLignesBindingSource est bien DocumentsBindingSource avec comme DataMembert la clé étrangère qui le lie à la table Documents.
Au chargement de ma form, j'ai les lignes suivantes :
Et sur le clic de mon bouton "valider" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 this.documentSource.AddNew(); this.lignesSource.AddNew(); //Sans cette ligne, même problème this.dComptaSQL.EnforceConstraints = false; //Sans cette ligne, même problème
Jusque là : tout semble en ordre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 this.Validate(); this.documentSource.EndEdit(); this.lignesSource.EndEdit(); this.dComptaSQL.EnforceConstraints = true; this.dComptaSQL.GetChanges(); //Rajouté en espérant arranger les choses, en vain this.DataManager.UpdateAll(this.dComptaSQL);
J'exécute maintenant la machine. J'obtiens la fenêtre suivante (avec "-1" dans les champs de clé, fonctionnement normal puisque les clés sont normalement alimentées par le TableAdapterManager) :
En cliquant sur "Valider", le -1 au niveau de l'en-tête de ma form passe bien à "1". En revanche, les lignes disparaissent et le message suivant s'affiche :
Et là, je me tape la tête contre le mur en espérant remettre les idées en ordre et trouver la solution...
Alors si quelqu'un de généreux passe par là, et souhaite secourir une âme charitable (et suicidaire), je lui en serai reconnaissant...
Merci
Partager