0

SQL Server データベースのデータを表示する DataGridView があります。ユーザーはデータを編集してデータベースに保存することができます。

データがデータベースに保存される方法は、次のようなものです。

Dim da As New SqlDataAdapter
Dim cmdBuilder As New SqlCommandBuilder(da)

da.SelectCommand = New SqlCommand(sql, conn)

da.InsertCommand = cmdBuilder.GetInsertCommand

da.UpdateCommand = cmdBuilder.GetUpdateCommand

Dim cb As SqlCommandBuilder = New SqlCommandBuilder(da)
da.Update(dt)

これは、通常のテーブルに保存するときにうまく機能します。ただし、挿入、更新、および削除時に起動する INSTEAD OF トリガーを持つビューにも保存したいと考えています。このビューで上記を使用しようとすると、エラーが発生します。

UpdateCommand の動的 SQL 生成は、キー列情報を返さない SelectCommand に対してはサポートされていません。

このビューに保存するにはどうすればよいですか? トリガーを起動したいので、基になるテーブルに直接保存したくありません。

ありがとう!

編集: InsertCommand と UpdateCommand を手動で生成しようとしましたが、同じエラーが発生しました。

EDIT 2:手動でコマンドを生成したときに、コマンドが間違っていることがわかりました。正常に機能することを修正したら、ビューが更新され、トリガーが期待どおりに起動します。SqlCommandBuilder を使用してビューのコマンドを自動生成することはできないと思います。

4

1 に答える 1

0

簡単な Google 検索では、テーブルに主キー値がない場合にこの問題が発生する可能性があることが示されています。選択クエリは、更新クエリに対してその値を返す必要があります (主キー列がない場合は返されません)。

http://social.msdn.microsoft.com/Forums/en-NZ/Vsexpressvcs/thread/5dec5633-ac84-48d9-8fd6-5c7601be4ccd

于 2011-04-11T15:20:38.693 に答える