DataGridViewの更新がうまくいきません。
投稿者 (削除されました)  ()
投稿日時
2013/6/10 22:03:04
(削除されました)
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2013/6/10 22:07:07
> DataGridViewの更新がうまくいきません。
DataGridView は、表示と編集を行いますが、データベースの読み書きとは無関係です。
データベース操作に必要なのは、「TableAdapter」や「DataAdapter」なので、
DataGridView についてではなく、ADO.NET について調査を進めてみてください。
> エラー「更新には、変更された行を含むDataRowコレクションが渡されたとき
> 有効な UpdateCommand が必要です。」と表示されます。
型付DataSet を使っておられますよね。
そのデザイナを開き、補修歴の方のTableAdapter に対して、
UpdateCommand / InsertCommand / DeleteCommandプロパティが
正しく設定されているかを確認してみてください。
http://support.microsoft.com/kb/310376/ja
UpdateCommand には、行更新のための UPDATE SQL、
DeleteCommand には、行削除のための DELETE SQL、
InsertCommand には、行追加のための INSERT SQL が
それぞれ必要となります。
> (基礎全データ)は正しく更新されています。
おそらく、基礎全データの方の TableAdapter は正しく設定されているのでしょう。
DataGridView は、表示と編集を行いますが、データベースの読み書きとは無関係です。
データベース操作に必要なのは、「TableAdapter」や「DataAdapter」なので、
DataGridView についてではなく、ADO.NET について調査を進めてみてください。
> エラー「更新には、変更された行を含むDataRowコレクションが渡されたとき
> 有効な UpdateCommand が必要です。」と表示されます。
型付DataSet を使っておられますよね。
そのデザイナを開き、補修歴の方のTableAdapter に対して、
UpdateCommand / InsertCommand / DeleteCommandプロパティが
正しく設定されているかを確認してみてください。
http://support.microsoft.com/kb/310376/ja
UpdateCommand には、行更新のための UPDATE SQL、
DeleteCommand には、行削除のための DELETE SQL、
InsertCommand には、行追加のための INSERT SQL が
それぞれ必要となります。
> (基礎全データ)は正しく更新されています。
おそらく、基礎全データの方の TableAdapter は正しく設定されているのでしょう。
投稿者 J  (社会人)
投稿日時
2013/6/11 09:55:08
魔界の仮面弁士 さん、再びお世話になります。
>そのデザイナを開き、補修歴の方のTableAdapter に対して、
>UpdateCommand / InsertCommand / DeleteCommandプロパティが
>正しく設定されているかを確認してみてください。
ご指摘の通りでした。
>おそらく、基礎全データの方の TableAdapter は正しく設定されているのでしょう。
これも、ご指摘の通りです。(ただし、自分で設定した記憶はないのですが、)
1点、お伺いします。
補修歴の方のTableAdapter に対して、UpdateCommand / InsertCommand / DeleteCommandプロパティを設定したのですが
DeleteCommand設定時のクエリビルダーで
上部の テーブル補修歴の表に各フィールド名がリストされてます。
しかし、その下の、リスト部分の列には、なにも表示されず
その下のコマンド欄には Delete From 補修歴 とだけ表示されています。
これは、正しいでしょうか?
よろしくお願いいたします。
よろしくお願いいたします。
>そのデザイナを開き、補修歴の方のTableAdapter に対して、
>UpdateCommand / InsertCommand / DeleteCommandプロパティが
>正しく設定されているかを確認してみてください。
ご指摘の通りでした。
>おそらく、基礎全データの方の TableAdapter は正しく設定されているのでしょう。
これも、ご指摘の通りです。(ただし、自分で設定した記憶はないのですが、)
1点、お伺いします。
補修歴の方のTableAdapter に対して、UpdateCommand / InsertCommand / DeleteCommandプロパティを設定したのですが
DeleteCommand設定時のクエリビルダーで
上部の テーブル補修歴の表に各フィールド名がリストされてます。
しかし、その下の、リスト部分の列には、なにも表示されず
その下のコマンド欄には Delete From 補修歴 とだけ表示されています。
これは、正しいでしょうか?
よろしくお願いいたします。
よろしくお願いいたします。
投稿者 Jptaro  (社会人)
投稿日時
2013/6/11 21:41:30
先の投稿で J とあったのは、私で Jptaro です
>1点、お伺いします。
>補修歴の方のTableAdapter に対して、
は、私のミスでした。
補修歴の方のTableAdapter を再見直しして修正したら直りました。
解決とさせていただきます。
魔界の仮面弁士 さん、再びお世話になりました。
VB2010は、奥行きが広いのか?難解なのか?よくわかりませんが
勉強の仕方について、アドバイスをいただけたらと思っています。
最近は、HELPやMSのMSDNを見に行くようになりましたが
行き着くまで、まだ、大変です。
ありがとうございました。
また当サイトの運営者さんにも、感謝いたします。
>1点、お伺いします。
>補修歴の方のTableAdapter に対して、
は、私のミスでした。
補修歴の方のTableAdapter を再見直しして修正したら直りました。
解決とさせていただきます。
魔界の仮面弁士 さん、再びお世話になりました。
VB2010は、奥行きが広いのか?難解なのか?よくわかりませんが
勉強の仕方について、アドバイスをいただけたらと思っています。
最近は、HELPやMSのMSDNを見に行くようになりましたが
行き着くまで、まだ、大変です。
ありがとうございました。
また当サイトの運営者さんにも、感謝いたします。
DataGridViewの更新がうまくいきません。
データべースとしてAccessを利用しています。
DataGridView1は、テーブルの基礎全データを表示しています。
DataGridView2は、テーブルの補修歴を表示しています。
2つのテーブルは、管理番号でリンク設定されています。
[更新ボタン]に下記のコードを記述したのですが
クリックすると、DataGridView1は、更新されていますがDataGridView2が更新されずに
エラー「更新には、変更された行を含むDataRowコレクションが渡されたとき
有効な UpdateCommand が必要です。」と表示されます。
この意味が判りません。何をチェックすればよいか、ご指導をお願いいたします。
(デバッグの方法が、わからないのです)
現象の詳細
①DataGridView1側だけ修正して、[更新ボタン]をクリックすると、Accessのテーブル
(基礎全データ)は正しく更新されています。
②DataGridView2側を変更すると、上記のエラーが発生します。
③エラーは、 補修歴TableAdapter.Update(台帳DataSet1.補修歴)
で発生しています。
Win 7 Pro
VB2010
Access2010
--------------------------
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 削除変更を有効.Click
Try
基礎全データTableAdapter1.Update(台帳DataSet1.基礎全データ)
補修歴TableAdapter.Update(台帳DataSet1.補修歴)
ShowList()
Catch ex As Exception
MessageBox.Show(ex.Message, "更新できません")
End Try
End Sub
--------------------------------