J'ai une (autre) question sur l'écriture de OleDbCommand. J'ai une commande de sélection complexe (comprend plusieurs jointures à gauche) et OleDbCommandBuilder est incapable de générer des commandes de mise à jour pour moi. Je ne peux pas sembler saisir la magie derrière l'écriture des commandes de mise à jour.Ecriture personnalisée Commandes OleDbCommand
Je connais la structure de l'instruction de mise à jour SQL, mais je suis un peu perplexe sur la façon dont cela fonctionne avec OleDbDataAdapter. Je sais que quand j'appelle adapter.Update() il ne mettra à jour que les lignes nécessaires de DataTable, mais je ne sais pas comment écrire une commande Update afin qu'il sache quel champ dans quelle table doit mettre à jour.
J'apprécierais vraiment que quelqu'un puisse m'expliquer le processus et me diriger dans la bonne direction.
Modifier: Puisque personne ne répond, je posterai quelques détails au sujet de ma question:
J'ai une instruction select sous cette forme:
select field1, field2, fieldn from table1 left join table2 on condition left join table3 on condition where condition1 and condition2
on me laisse perplexe est comment devrais-je écrire une mise à jour puisque je ne peux pas l'écrire comme ceci:
update table1, table2 set field1 = newvalue where condition1 and condition2
Donc je ne comprends pas comment faire ça, puisque l'instruction update n'accepte qu'un seul argument de table. Est-il même possible d'appeler la méthode OleDbDataAdapter.Update sur ce type de DataTables?
Eh bien, c'est certainement utile, mais il y a toujours un problème. DataRow contient des colonnes de différentes tables et n'importe lequel d'entre eux pourrait être modifié - et je ne comprends toujours pas comment je pourrais écrire une commande de mise à jour qui pourrait modifier n'importe lequel de ces champs. –
Je suis tout à fait sûr que vous devez émettre une instruction de mise à jour pour chaque table puis ... –
Découvrez les déclencheurs INSTEAD OF, peut-être ce que vous cherchez –