複数テーブルから作ったデータセットをアップデートしたい
- 題名: 複数テーブルから作ったデータセットをアップデートしたい
- 著者: Ken-Ko
- 日時: 2003/10/25 9:14:32
- ID: 1129
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 複数テーブルから作ったデータセットをアップデートしたい
- 著者: fuku
- 日時: 2003/10/25 10:27:06
- ID: 1130
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: .Added と .Deleted
- 著者: Ken-Ko
- 日時: 2003/10/25 16:14:55
- ID: 1131
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: .Added と .Deleted
- 著者: fuku
- 日時: 2003/10/25 19:11:03
- ID: 1133
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: .Added と .Deleted
- 著者: Ken-Ko
- 日時: 2003/10/26 0:19:46
- ID: 1134
- この記事の返信元:
- この記事への返信:
- ツリーを表示
いつもお世話になります。
以下のようにして複数のテーブルから作ったデータセット "D_CURRENT" があります。
(2つのテーブルにあるフィールド "F_NO" は 1:1 の関係になっています)
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
Dim oleDaMain As OleDb.OleDbDataAdapter
Dim dtSetMain As DataSet
Dim dtTableMain As DataTable
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' 接続文字列を作成して接続を開始する
Dim oleCnMain As OleDb.OleDbConnection = New OleDb.OleDbConnection
oleCnMain.ConnectionString = _
"Provider=" & "Microsoft.Jet.OLEDB.4.0" & ";" & _
"Data Source=" & "C:\Documents and Settings\Administrator\My Documents\Test.mdb" & ";" & _
"Persist Security Info=False"
' SQL文を作成してレコードを取得
oleDaMain = New OleDb.OleDbDataAdapter("SELECT T_MAIN.F_NAME, T_SUB.F_INTEGER FROM T_MAIN INNER JOIN T_SUB ON T_MAIN.F_NO = T_SUB.F_NO", oleCnMain)
dtSetMain = New System.Data.DataSet
oleDaMain.Fill(dtSetMain, "D_CURRENT")
DataGrid1.DataSource = dtSetMain
End Sub
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
これをイベント発生時に以下のコードによりアップデートしようとすると、
「複数のベース テーブルに対する動的 SQL の生成はサポートされません。」
というメッセージが表示され、アップデートができないままに終了してしまいます。
Dim oleCbEdit = New OleDb.OleDbCommandBuilder(oleDaMain)
oleDaMain.Update(dtSetMain, "D_CURRENT")
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
複数テーブルからもってきたデータセットの内容をデータベースに更新させる方法はありませんでしょうか?
一度のアップデートしたいデータは1つのテーブル上に置くよりないのでしょうか?
すっかり行き詰まっています...。
どなたかアドバイスをよろしくお願いいたします。