• 締切済み

DataGridViewで変更した値を反映させたい。

VB2005、SqlServer2005環境です。 デザイナ上で、DataTableをドラッグしてやると、自動的に バインドされたDataGridViewが出てくれるので、その方法で DataGridViewを1つ設置しました。 このDataGridViewの表の値を変えた時、それを実際のDBのテーブルにも 反映させたいなと思ってます。 これを実現するための方法を教えていただけないでしょうか? バインドされているので、保存できればそのまま更新されるような イメージなのですが…その方法がわかりません。 宜しくお願いします。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.4

ビューからだとUpdateやDeleteなど元のテーブル対する操作は自動生成されないようです フォームに張り付いているデータセットにクエリを追加して テーブルを操作できるようにします 表示されているテーブルアダプタをアクティブにして データ > 追加 > Queryを実行 SQLステートメントを使用するにチェック で次へ UPDATE で次へ ここで クエリビルダ もしくは 直接SQLを編集し『完了』をクリック フォームに更新用ボタンを配置 そのクリックイベントに dim row as DataRow for each row in DS.DaTable.Rows   if row.RowState = DRowState.Modified then     TableAdapter.UpdateQuery( Row("Name"), Row("ID") )   end if next といった具合で更新を掛けます # 変数名などは適宜修正してください # DS.DaTable.Rows、TableAdapter、Row("Name"), Row("ID")などです

すると、全ての回答が全文表示されます。
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

データソースに設定したテーブルをドラッグアンドドロップして作成したのでしょうか? それならば フォームの上部にバインディングナビゲータが設定されていると思います ここのフロッピィーディスクのようなアイコンをクリックすると更新(または新規登録)の必要があるデータを更新するようにするためのスケルトンコードが作成されていますよ このアイコンをクリックしないとデータベースへの反映はなされません また作成したテーブルに主キーが設定されていない場合も更新がうまくいかない場合もあります スケルトンコードは   Private Sub MyTable04BindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyTable04BindingNavigatorSaveItem.Click     Me.Validate()     ' 編集中のセルの編集モードを終了させる     Me.MyTable04BindingSource.EndEdit()     ' テーブルアダプターのUpdateメソッドを使ってデータの更新     Me.MyTable04TableAdapter.Update(Me.SampleDBDS2.myTable04)   End Sub といった具合になっていると思います 上記の例では SampleDBSD2のmyTable04が対象になっています フォームクラス以外に VB2005が生成した SampleDBDS2というデータセットクラスがあります

ginfix
質問者

お礼

回答ありがとうございます。 仰るとおり、ボタンがありますが、更新が出来ない(ボタンを 押下できない)のです。 大事なことを書き忘れていたのですが、ドラッグしたのがビューでした。 この場合はグリッドの値をそのまま反映させるのは難しいでしょうか?

すると、全ての回答が全文表示されます。
  • unamana19
  • ベストアンサー率62% (56/89)
回答No.2

http://msdn2.microsoft.com/ja-jp/library/xzb1zw3x(VS.80).aspx が参考になるのではないでしょうか?

ginfix
質問者

お礼

回答ありがとうございます。 参考にします。

すると、全ての回答が全文表示されます。
  • sineminna
  • ベストアンサー率31% (118/370)
回答No.1

テーブルアダプタのUpdateメソッドを使用して更新します。 デザイナを使用して作成したオブジェクトにはテーブルアダプターが自動的にできていると思うので TableAdapter.update(Dataset.DataTable)

ginfix
質問者

お礼

回答ありがとうございます。 設置したのがビューだったので、うまくいかないようです。 大事なことを書き忘れていて申し訳ありません。

すると、全ての回答が全文表示されます。

関連するQ&A