
言語:Microsoft Visual Studio 2008
データベース:SQL Server 2005 非接続型のデータアクセスです。
現在,上記環境で.netを勉強し始めたところです。
そこで簡単なプログラムからと思いDataGridViewを学習し始めたのですがすぐにつまずいてしまいました。
色々調べたのですが思うようにいかないので,アドバイスをいただければと思います。
やりたいことは
(1)フォーム1のDataGridViewコントロールにデータソースをバインドしてデータを表示する。
(2)フォーム1の更新ボタン押下時に、DataGridViewで編集した内容をデータベースに反映する。
つまづいているのは(2)です。
http://japan.internet.com/developer/20070522/26. …
を参考にしたのですが、どうコーディングすればよいかわかりません。
自作したコードは下記の通りです。
Private Sub frmDataGridViewTest_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim strsql As String
Call DBConnect()'---DB接続
strsql = "SELECT ID, 名称, 型式 FROM テーブル ORDER BY ID"
Dim comm As SqlCommand = New SqlCommand(strsql, Con)
Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)
dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
Dim ds As DataSet = New DataSet()
dataadapter.Fill(ds, "テーブル")
dgrview.DataSource = ds
dgrview.DataMember = "テーブル"
Call Disconnect()'---DB切断
End Sub
Private Sub BTN_更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_更新.Click
'---ここに何か必要なのでしょうか?????
このままだとdataadapterとdsに宣言がないとエラーになります。
'---DataGridViewコントロールでの変更をデータベースに戻す
Dim sqlCmdBuilder As New SqlCommandBuilder(dataadapter)
sqlCmdBuilder.GetUpdateCommand()
dataadapter.Update(ds.Tables("テーブル"))
Call Disconnect()'---DB切断
End Sub
No.1ベストアンサー
- 回答日時:
DataSetとDataTableはフォームクラスの変数にしましょう
アダプタは Form_Load
Dim strsql As String
Call DBConnect() '---DB接続
strsql = "SELECT ID, 名称, 型式 FROM テーブル ORDER BY ID"
Dim comm As SqlCommand = New SqlCommand(strsql, Con)
Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)
dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
の部分が必要になります
この回答への補足
早々のお返事ありがとうございます。
会社が週末休みだったのでお返事遅れ申し訳ありません。
さて、回答についてですが
>DataSetとDataTableはフォームクラスの変数にしましょう
>アダプタは Form_Load
の意味がわからなかったのですが、frmDataGridViewTest_Loadはそのままで、BTN_更新_Clickだけ下記のようになるということでよろしかったでしょうか?
Private Sub BTN_更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_更新.Click
Dim strsql As String
Call DBConnect() '---DB接続
strsql = "SELECT ID, 名称, 型式 FROM テーブル ORDER BY ID"
Dim comm As SqlCommand = New SqlCommand(strsql, Con)
Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm)
dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
Dim ds As DataSet = New DataSet()
'---DataGridViewコントロールでの変更をデータベースに戻す
Dim sqlCmdBuilder As New SqlCommandBuilder(dataadapter)
sqlCmdBuilder.GetUpdateCommand()
dataadapter.Update(ds.Tables("テーブル"))
Call Disconnect() '---DB切断
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部キーのリレーションが設定...
-
select文の戻り値を変数に格納...
-
access コンボボックス初期表示...
-
テキストボックスのvalueとtext...
-
VB.NETで DataRow()を利用して...
-
値を返さないコード パス
-
Excelで指定した日付から過去の...
-
ExcelのINDEXとMATCH関数でスピ...
-
POSTやGETの値の取得方法
-
DataGridViewの各セル幅を自由...
-
ListView 項目の選択/選択解除...
-
array関数で格納した配列の型を...
-
[エクセル]連続する指定範囲か...
-
エクセルvbaで、別シートの最下...
-
VB6.0 ファイルの一括読込み
-
VBA初心者です。結合セルを保持...
-
Accessのクエリで、replace関数...
-
DataSetから、DataTableを取得...
-
Excelのハイパーリンクにマクロ...
-
VBA実行後に元のセルに戻りたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSテーブルを RecordSet以...
-
【ACCESS】リレーションを組ん...
-
access コンボボックス初期表示...
-
SQL文(テーブル項目名が特殊文...
-
select文の戻り値を変数に格納...
-
ASP.NET:複数結合テーブルのデ...
-
外部キーのリレーションが設定...
-
DBの読み込み順について
-
accessのフォームを使ってテー...
-
asp.net MVC
-
テーブルというグローバル変数
-
Delphi BDE 複数ユーザによる...
-
フラッシュの画像を合わせるパ...
-
SQL文なんですが
-
DataGridViewで編集した内容を...
-
ASP(VBScript)で自動連番
-
ExcelVBAを使って、値...
-
VB.NETで DataRow()を利用して...
-
Accessのクエリで、replace関数...
-
エクセルで、絶対値の平均を算...
おすすめ情報