掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
レコードを更新したいのですが行きづまりました。 (ID:145317)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ページ読込時に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
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.