- PR -

DataTable に行を追加したい

1
投稿者投稿内容
Cheese
会議室デビュー日: 2006/07/20
投稿数: 5
投稿日時: 2006-07-25 09:35
テキストボックスに数字(西暦)を入力して、追加ボタン(登録)で入力した値をOracleのデータベースに送りたいのですが、DataSetで表には追加されるのですが、データベースに値が送られず、再度登録しても反映されません。なにかが足りないとは思っているのですが、なかなか気づくことができませんでした。
登録の仕方で、何か良い方法はないでしょうか?

使用環境:ASP.NET、Oracle10g、VisualStudio.NET2003

本文
'登録ボタンが押されたとき
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click

'MS_NENDO_Tはテーブル名 NENDOはテーブルの中身
Dim newMS_NENDO_TRow As DataRow = DataSet31.Tables("MS_NENDO_T").NewRow()

'入力した値の代入
newMS_NENDO_TRow("NENDO") = CheckBox1.Text

'DataSetで行を追加
DataSet31.Tables("MS_NENDO_T").Rows.Add(newMS_NENDO_TRow)

Dim changedRecords As DataSet = DataSet31.GetChanges()

DataBind()
End Sub

動作例)
チェックボックスに2000と入れ、登録ボタンを押すとデータセットに値が代入され、データテーブルに2000のテーブルが1行追加されますが、SQLで中を見てみると値が代入されずに更新されません。

[ メッセージ編集済み 編集者: Cheese 編集日時 2006-07-25 10:10 ]
Cheese
会議室デビュー日: 2006/07/20
投稿数: 5
投稿日時: 2006-07-25 15:43
問題が解決したので報告します。
先ほどのソースにコマンドの自動作成(INSERT文)、データベースの更新を追加したところデータベースに登録できるようになりました。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'MS_NENDO_Tはテーブル名 NENDOはテーブルの中身
Dim newMS_NENDO_TRow As DataRow = DataSet11.Tables("MS_NENDO_T").NewRow()

'入力した値の代入
newMS_NENDO_TRow("NENDO") = CheckBox1.Text

'DataSetで行を追加
DataSet11.Tables("MS_NENDO_T").Rows.Add(newMS_NENDO_TRow)

Dim OraclCon As New OracleConnection
Dim ds As New DataSet

'コマンドを自動作成(INSERT文)
Dim OCB As New OracleCommandBuilder(OracleDataAdapter1)

'データベースの更新
OracleDataAdapter1.Update(DataSet11, "MS_NENDO_T")

DataBind()

End Sub

無事、解決しました。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)