dポイントプレゼントキャンペーン実施中!

VB2005、SqlServer2005環境です。

デザイナ上で、DataTableをドラッグしてやると、自動的に
バインドされたDataGridViewが出てくれるので、その方法で
DataGridViewを1つ設置しました。

このDataGridViewの表の値を変えた時、それを実際のDBのテーブルにも
反映させたいなと思ってます。
これを実現するための方法を教えていただけないでしょうか?
バインドされているので、保存できればそのまま更新されるような
イメージなのですが…その方法がわかりません。

宜しくお願いします。

A 回答 (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")などです
    • good
    • 1

データソースに設定したテーブルをドラッグアンドドロップして作成したのでしょうか?


それならば フォームの上部にバインディングナビゲータが設定されていると思います
ここのフロッピィーディスクのようなアイコンをクリックすると更新(または新規登録)の必要があるデータを更新するようにするためのスケルトンコードが作成されていますよ
このアイコンをクリックしないとデータベースへの反映はなされません
また作成したテーブルに主キーが設定されていない場合も更新がうまくいかない場合もあります

スケルトンコードは
  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というデータセットクラスがあります
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

仰るとおり、ボタンがありますが、更新が出来ない(ボタンを
押下できない)のです。

大事なことを書き忘れていたのですが、ドラッグしたのがビューでした。
この場合はグリッドの値をそのまま反映させるのは難しいでしょうか?

お礼日時:2007/10/05 00:08

http://msdn2.microsoft.com/ja-jp/library/xzb1zw3 …
が参考になるのではないでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/10/05 00:06

テーブルアダプタのUpdateメソッドを使用して更新します。


デザイナを使用して作成したオブジェクトにはテーブルアダプターが自動的にできていると思うので
TableAdapter.update(Dataset.DataTable)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

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

お礼日時:2007/10/05 00:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています