• ベストアンサー

データセットのレコード更新がしたい

VB .Netでデータベースの追加・変更をしています。 データセットのレコードを追加できたのですが、変更がわかりません。 追加は・・・dtrow = dttable.NewRowで始まり、追加したい項目を書いています。 そして終わりは・・・ ''行を追加 dttable.Rows.Add(dtrow) ''データソースを更新 oleDa.Update(dttable) 変更はどうしたらよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>データセットのレコード更新がしたい データセット?データセットにはレコードはありません データテーブルにレコードがあります こんな感じ Dataset └─DataTable   └─DataRowCollection 新規追加ができているなら更新は簡単です まず更新したいレコードを検索する 検索できたら、そのレコードをDataRowにて取得する その後、対象フィールドを上書きしてからDataTableのUpdateメソッドにて更新する [例] Dim dRow As DataRow '主キーにて検索(※123は検索項目値) dRow = dTbl.Rows.Find(New Object() {123}) If Not dRow Is Nothing Then   'フィールド更新   dRow.Item("hogehoge") = "ほげほげ"   dTbl.Update() End If

その他の回答 (2)

回答No.3

こんな感じですかね   Dim strConn As String          '接続文字列   Dim oleConn As OleDbConnection     'コネクション   Dim oleDa As OleDbDataAdapter      'データアダプタ   Dim oleCb As OleDbCommandBuilder    'コマンドビルダ   Dim strSQL As String          'SQL   Dim dttable As DataTable   Dim dtrow As DataRow   strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\test.mdb"   oleConn = New OleDbConnection(strConn)   strSQL = "SELECT * FROM " & TableName   oleDa = New OleDbDataAdapter(strSQL, oleConn)   oleCb = New OleDbCommandBuilder(oleDa)   dttable = New dttable   oleDa.Fill(dttable)   oleDa.FillSchema(dttable)   dtrow = dttable.NewRow   dtrow("日付") = "20050401"   ''行を追加   dttable.Rows.Add(dtrow)   ''データソースを更新   oleDa.Update(dttable) コマンドビルダは、データアダプタの「SelectCommand」を基にして 「InsertCommand」「UpdateCommand」「DeleteCommand」に自動でSQLを設定してくれます まだ慣れないうちは、このコマンドビルダを使用してもよいでしょうが、 慣れてきたら個別に記述するのがよろしいでしょう HOME > VB.NET Tips HOME > コントロール > DataSet http://vbdotnet.fc2web.com/vbnet/control/DataSetMenu.htm

okkomu
質問者

補足

新規作成はできました。 更新は・・・ oleCmd.CommandText = "SELECT * FROM ファイル WHERE 日付 = '20050320';" oleDa.SelectCommand = oleCmd oleDa.Fill(dttable) If dttable.Rows.Count > 0 Then   dtrow.BeginEdit() End if dtrow.BeginEdit()でエラーがでます。 オブジェクト参照がオブジェクト インスタンスに設定されていません。 新規作成ではdtrow = dttable.NewRowとしているので更新の場合もdtrow = ??としなければならないと思いますが・・・何をしたら良いかわかりません。

回答No.2

>Dataset >└─DataTable >  └─DataRowCollection Dataset └─DataTableCollection   └─DataRowCollection 間違えました orz

okkomu
質問者

補足

新規追加できてると思ったらできていなかったです・・・。データソースを更新する時に、 更新には、新しい行を含む DataRow コレクションが渡されたとき、有効な InsertCommand が必要です。 のエラーが出ます。 追加したい項目の書き方は・・・ dtrow = dttable.NewRow dtrow("日付") = "20050401" ''行を追加 dttable.Rows.Add(dtrow) ''データソースを更新 oleDa.Update(dttable) ではダメですか? INSERT文でするのでしょうか?

関連するQ&A