ページ読込時にADO.NETでSQLサーバからデータを取得し、夫々のテキストボックスに値を入れ、登録ボタンクリック時そのテキストボックスの内容をサーバに書き込む処理を実施しましたがなかなか書き込めません。どこが悪いのか悪戦苦闘しております。
何方か御教授よろしくお願いいたします。
以下はページ読込時イベントです。
Protected Sub Page_Load _
(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'
'
'
'
'
'
' 読込時、新規追加モード又は修正モードの判断
'
'
'
'
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'************************************************************'
' クッキーの取込
'************************************************************'
Me.txt社員コード.Text = _
Request.Cookies("CookieName1").Value
Me.txt社員名.Text = _
Request.Cookies("CookieName2").Value
Me.txt固定資産コード.Text = _
Request.Cookies("CookieName3").Value
Me.txt入力モード.Text = _
Request.Cookies("CookieName4").Value
Me.txtUPID.Text = _
Request.Cookies("CookieName5").Value
Dim ADDUPFLG As Long
ADDUPFLG = Me.txt入力モード.Text
'************************************************************'
' 前頁でデータが存在する時は修正モード→そのデータを取得する
'************************************************************'
Dim UPID As Long
UPID = Me.txtUPID.Text
'************************************************************'
'************************************************************'
' 修正モードの時、データを取得
'************************************************************'
'************************************************************'
If ADDUPFLG = 1 Then
'//---コネクション
Dim Mycn As New SqlConnection _
("Data Source=anp_sqlserver;" _
& "Initial Catalog=" & "PC固定資産管理システム" _
& ";User ID=sa;password=''")
'//---アダプタ
Dim MyAdapter As New SqlDataAdapter _
("select * from [TA1001_PCマスタ] " _
& "where ID=" _
& Me.txtUPID.Text & "", Mycn)
'//---Datasetオブジェクト
Dim MyDataSet As New DataSet
Mycn.Open()
'//---テーブル
Dim MyTable As DataTable
'************************************************************'
' 接続開始
'************************************************************'
MyAdapter.Fill(MyDataSet, "TA1001_PCマスタ")
MyTable = MyDataSet.Tables("TA1001_PCマスタ")
'------------------------------------------------------------'
' データを追加
'------------------------------------------------------------'
Me.txtPC名.Text = MyTable.Rows(0)("PC名")
Me.cboOS名.SelectedValue = MyTable.Rows(0)("OS名")
Me.txt使用用途.Text = MyTable.Rows(0)("使用用途")
Me.txt社員コード.Text = MyTable.Rows(0)("社員コード")
Me.txt社員名.Text = MyTable.Rows(0)("社員名")
Me.txtJobコード.Text = MyTable.Rows(0)("JOBコード")
Me.txt固定資産コード.Text = MyTable.Rows(0)("固定資産管理コード")
Me.txt納品日.Text = MyTable.Rows(0)("納品日")
Me.cbo資産区分.Text = MyTable.Rows(0)("資産区分ID")
If Not (MyTable.Rows(0)("搭載メモリ容量") Is System.DBNull.Value) Then
Me.txt搭載メモリ容量.Text = MyTable.Rows(0)("搭載メモリ容量")
End If
If Not (MyTable.Rows(0)("搭載HDD容量") Is System.DBNull.Value) Then
Me.txt搭載HDD容量.Text = MyTable.Rows(0)("搭載HDD容量")
End If
If Not (MyTable.Rows(0)("搭載CPU名ID") Is System.DBNull.Value) Then
Me.cbo搭載CPU名.SelectedValue = MyTable.Rows(0)("搭載CPU名ID")
End If
If Not (MyTable.Rows(0)("搭載CPU周波数") Is System.DBNull.Value) Then
Me.txt搭載CPU周波数.Text = MyTable.Rows(0)("搭載CPU周波数")
End If
If Not (MyTable.Rows(0)("機種区分ID") Is System.DBNull.Value) Then
Me.cbo機種区分.SelectedValue = MyTable.Rows(0)("機種区分ID")
End If
Me.txt設置場所.Text = MyTable.Rows(0)("設置場所")
Mycn.Close()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'
'
'
'
'
' Jobコード名を取得
'
'
'
'
'
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim JobCode As Long
If Me.txtJobコード.Text <> "" Then
JobCode = Me.txtJobコード.Text
'//---コネクション
Mycn = New SqlConnection("Data Source=anp_sqlserver;" _
& "Initial Catalog=" & "jinkenhisanteidb" _
& ";User ID=sa;password=''")
Mycn.Open()
'//---アダプタ
MyAdapter = New SqlDataAdapter _
("select * from [TA0002_原価計算グループマスタ] " _
& "where ID=" & JobCode, Mycn)
'//---データセット
MyDataSet = New DataSet
'//---データテーブル
MyTable = New DataTable
'************************************************************'
' 接続開始
'************************************************************'
MyAdapter.Fill(MyDataSet, "TA0002_原価計算グループマスタ")
MyTable = MyDataSet.Tables("TA0002_原価計算グループマスタ")
Me.txtJob.Text = MyTable.Rows(0)("JobName")
End If
Mycn.Close()
End If
End Sub
また、以下が書き込みイベントです。
Protected Sub cmd登録_Click _
(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles cmd登録.Click
Dim ret As Integer
ret = MsgBox("このデータで書き込んでもよろしいですか?", vbYesNo)
If ret = vbNo Then
Exit Sub
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'
'
'
'
'
'
' サーバに書込む
'
'
'
'
'
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'************************************************************'
' 初期処理
'************************************************************'
'//---コネクション
Dim Mycn As New SqlConnection _
("Data Source=anp_sqlserver;" _
& "Initial Catalog=" & "PC固定資産管理システム" _
& ";User ID=sa;password=''")
Mycn.Open()
Dim MyAdapter As SqlDataAdapter
'//---データセット
Dim MyDataSet As DataSet
Dim MyTable As DataTable
Dim Myrow As DataRow
'//---更新したい固定資産ID
Dim KoteishisanID As Long
'//---自動生成コマンド(sqlcommandbuilderオブジェクト)を作成
Dim Mycmd As SqlCommandBuilder
'************************************************************'
'************************************************************'
' 更新モードの時、データを搾り出して更新
'************************************************************'
'************************************************************'
If Me.txt入力モード.Text = 1 Then
KoteishisanID = Me.txtUPID.Text
MyDataSet = New DataSet()
MyAdapter = New SqlDataAdapter _
("select * from [TA1001_PCマスタ] where ID=" _
& KoteishisanID, Mycn)
MyAdapter.Fill(MyDataSet, "TA1001_PCマスタ")
'//---tbに「TA1001_PCマスタ」をセット
MyTable = MyDataSet.Tables("TA1001_PCマスタ")
'--------------------------------------------------------'
' レコードを更新
'--------------------------------------------------------'
'//---行の更新開始
MyTable.Rows(0).BeginEdit()
'//---更新開始
※↓ここの処理が全く反応しません。
例えば「txtPC名」テキストボックスが元は「AA」と言う値が入っていたとします。「txtPC名」を「BB」と更新し、msgbox(me.txtPC名.text)命令を書き込んだ場合「AA」とでます。又、直接「MyTable.Rows(0)("PC名") = Me.txtPC名.Text」を「MyTable.Rows(0)("PC名") ="WWW"」と書き込んだ場合、サーバは更新されております。何か忘れてるコマンドがあるのでしょうか?
MyTable.Rows(0)("PC名") = Me.txtPC名.Text
MyTable.Rows(0)("OS名") = Me.cboOS名.SelectedValue
MyTable.Rows(0)("使用用途") = Me.txt使用用途.Text
MyTable.Rows(0)("社員コード") = Me.txt社員コード.Text
MyTable.Rows(0)("社員名") = Me.txt社員名.Text
MyTable.Rows(0)("JOBコード") = Me.txtJobコード.Text
MyTable.Rows(0)("固定資産管理コード") = Me.txt固定資産コード.Text
If Me.txt納品日.Text <> "" Then
MyTable.Rows(0)("納品日") = CDate(Me.txt納品日.Text)
End If
MyTable.Rows(0)("資産区分ID") = Me.cbo資産区分.Text
If Me.txt搭載メモリ容量.Text <> "" Then
MyTable.Rows(0)("搭載メモリ容量") = Me.txt搭載メモリ容量.Text
End If
If Me.txt搭載HDD容量.Text <> "" Then
MyTable.Rows(0)("搭載HDD容量") = Me.txt搭載HDD容量.Text
End If
MyTable.Rows(0)("搭載CPU名ID") = Me.cbo搭載CPU名.SelectedValue
If Me.txt搭載CPU周波数.Text <> "" Then
MyTable.Rows(0)("搭載CPU周波数") = Me.txt搭載CPU周波数.Text
End If
MyTable.Rows(0)("機種区分ID") = Me.cbo機種区分.SelectedValue
MyTable.Rows(0)("設置場所") = Me.txt設置場所.Text
'//---更新終了
MyTable.Rows(0).EndEdit()
'//---自動生成コマンド
Dim MyCommand As New SqlCommandBuilder(MyAdapter)
'//---SQLDataAdapterオブジェクトに自動生成コマンドをセット
MyAdapter.UpdateCommand = MyCommand.GetUpdateCommand
'//---SQLDataAdapterオブジェクトを更新
MyAdapter.Update(MyDataSet, "TA1001_PCマスタ")
'//---終了メッセージ
MsgBox(Me.txtPC名.Text _
& " の更新処理が完了しました!システムを終了します.")
End If
'************************************************************'
'************************************************************'
' 新規の行を作成(新規追加モードの時)
'************************************************************'
'************************************************************'
If Me.txt入力モード.Text = 0 Then
MyDataSet = New DataSet()
'//---Datasetオブジェクトにデータをバインド
MyAdapter = _
New SqlDataAdapter("select * from [TA1001_PCマスタ]", Mycn)
MyAdapter.Fill(MyDataSet, "TA1001_PCマスタ")
'//---tbに「TA1001_PCマスタ」をセット
MyTable = MyDataSet.Tables("TA1001_PCマスタ")
Myrow = MyTable.NewRow()
'--------------------------------------------------------'
' データを追加
'--------------------------------------------------------'
Myrow("PC名") = Me.txtPC名.Text
Myrow("OS名") = Me.cboOS名.SelectedValue
Myrow("使用用途") = Me.txt使用用途.Text
Myrow("社員コード") = Me.txt社員コード.Text
Myrow("社員名") = Me.txt社員名.Text
If Me.txtJobコード.Text <> "" Then
Myrow("JOBコード") = Me.txtJobコード.Text
End If
If Me.txt固定資産コード.Text <> "" Then
Myrow("固定資産管理コード") = Me.txt固定資産コード.Text
End If
If Me.txt納品日.Text <> "" Then
Myrow("納品日") = CDate(Me.txt納品日.Text)
End If
Myrow("資産区分ID") = Me.cbo資産区分.Text
If Me.txt搭載メモリ容量.Text <> "" Then
Myrow("搭載メモリ容量") = Me.txt搭載メモリ容量.Text
End If
If Me.txt搭載HDD容量.Text <> "" Then
Myrow("搭載HDD容量") = Me.txt搭載HDD容量.Text
End If
Myrow("搭載CPU名ID") = Me.cbo搭載CPU名.SelectedValue
If Me.txt搭載CPU周波数.Text <> "" Then
Myrow("搭載CPU周波数") = Me.txt搭載CPU周波数.Text
End If
Myrow("機種区分ID") = Me.cbo機種区分.SelectedValue
Myrow("設置場所") = Me.txt設置場所.Text
'//---行を更新
MyTable.Rows.Add(Myrow)
Mycmd = New SqlCommandBuilder(MyAdapter)
'//---sqlDataAdapterオブジェクトに自動生成コマンドをセット
MyAdapter.InsertCommand = Mycmd.GetInsertCommand
'//---sqlDataadapterオブジェクトを更新
MyAdapter.Update(MyDataSet, "TA1001_PCマスタ")
MsgBox(Me.txtPC名.Text & " の新規追加処理が完了しました!システムを終了します.")
End If
Mycn.Close()
Response.Redirect("toppage.aspx")
End Sub
リンク張っておきますね。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=26794
別の掲示板で解決いたしました。
ありがとうございます。