- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Visual Basic初心者です。)
Visual Basic初心者のためのData Grid View更新方法
このQ&Aのポイント
- Visual Basic初心者のため、Button1を使用してData Grid Viewを表示し、Data Grid Viewから更新したデータをButton2でmdbファイルに保存する方法について教えてください。
- 参考にしたブログでは、Button1でData Grid Viewの表示はできるが、更新(Button2)の際にDataAdapter.SelectCommandプロパティを初期化する必要があると書かれています。
- 具体的な実行コードは提供されていますので、このコードによってデータを更新する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
SqlDataAdapter型の変数 AdapterがどこかでDisposeとかされてしまったのではありませんか? または フォームのPrivate変数ではなくて Button1_Clickのローカル変数とかになっていませんか VBの設定で変数の宣言を強制するためのOption Explicitを Offの設定にしたりしていませんか 変数adapterが Notthingのままだと 質問のようなエラーが表示されます もう一度ソースをよく確認しましょう > Dim builder As SqlCommandBuilder = New SqlCommandBuilder(adapter) にブレークポイントを張って実行して止まったときにIDEの 自動変数ウオッチウィンドウの adapterがどうなっているのか確認しましょう
その他の回答 (1)
- vbhanatyan
- ベストアンサー率79% (70/88)
回答No.2
補足分に掲載されたコードは、サイトのサンプルコードを無断で掲載されたものですよね。 (サポートに申し出て削除してもらって下さい) グローバル変数とローカル変数の使い分けや意味を理解されていないようですが、特に他人の コードを使用する場合は、よく理解してから使用しないと、変数名がダブっていたり、意味を 理解していないとバグの元になります。 今一度、基本的な事なので、変数の扱い方やUsing 等について調べなおして下さい。 その辺を理解されないといつまでたっても解決できませんよ。
補足
変数adapterはNothingになっていました。 ただ、どこが原因なのかが掴めません。 下記のコードが上記コード以外の部分です。 Imports System.Data.SqlClient Public Class Form1 Private connection As SqlConnection Private adapter As SqlDataAdapter Private ds As DataSet Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Using cn As New System.Data.OleDb.OleDbConnection Using cm As New System.Data.OleDb.OleDbCommand Using da As New System.Data.OleDb.OleDbDataAdapter Dim ds As New DataSet 'EXE と同じフォルダーにデータも入れておく Dim FileName As String = System.IO.Path.Combine(Application.StartupPath(), "Test.mdb") Dim TableName As String = "sample" '指定のテーブル名(上記ファイル内に存在する事) '接続文字列については、WEB上で、[接続文字列]をキーに検索して見て下さい。 cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & FileName & ";" 'パスワード等があれば続けて記入 'コネクションの設定 cm.Connection = cn 'データソースで実行するSQL文の設定 cm.CommandText = "SELECT * from " & TableName 'データソース内のレコードを選択するためのSQLコマンドの設定 da.SelectCommand = cm 'データを取得する da.Fill(ds, TableName) 'データグリッドに表示するデータソースを設定 DataGridView1.DataSource = ds 'グリッドを表示するための、DataSource 内のリストを設定 DataGridView1.DataMember = TableName 'データソースへの接続を閉る End Using End Using End Using End Sub