ソースコードの大部分は、前回の削除処理を流用できます。処理対象のテーブルも、例によってテーブル「商品_dmy」を使うことにしましょう。
- 対象レコードはグローバル変数に - ユーザーの入力した「仕入単価」はテキストボックス“txtBuyPrice”、「販売単価」はテキストボックス“txtSalePrice”のTextプロパティでそれぞれ参照できます。
さらに、更新対象となるレコードの「商品ID」を、前回と同じようにレコードの検索処理でグローバル変数“strTargetId”に保存するようにしておきます。すると、更新処理のためのSQLは以下のように記述できます。
"UPDATE 商品_dmy SET" & _ " 仕入単価 = " & txtBuyPrice.Text & _ ", 販売単価 = " & txtSalePrice.Text & _ "WHERE 商品ID = " & strTargetId
ユーザーに対する確認のメッセージは、String型変数“strMessage”に保存します。この部分も、削除処理とは若干異なります。
strMessage = "商品ID:" & strTargetId & vbCrLf & _ "品名:" & strTargetName & vbCrLf & _ "のデータを更新します。よろしいですか?"
- ExecuteNonQueryメソッドを実行 - 生成したSQLをCommandオブジェクトのCommandTextに代入し、同じくCommandオブジェクトのExecuteNonQueryメソッドを実行すれば、レコードが書き換えられます。
objCommand.CommandText = strSql ---- SQLを設定 If objCommand.ExecuteNonQuery >= 1 Then ---- 更新実行 MsgBox("商品データを更新しました。", MsgBoxStyle.OKOnly, "更新完了") InitForm() ---- テキストボックスとグローバル変数を初期化 Else ---- 更新に失敗した場合 MsgBox("該当する商品が見つかりません。", MsgBoxStyle.OKOnly, "更新エラー") Exit Sub End If
- 実行結果を確認する - 出来上がったex01.exeを実行してみましょう。ここでは
商品ID=13518/品名=オルゴール付き宝石箱(A)
の仕入単価が2,150円から2,050円に下がったので、併せて販売単価3,600円から3,500円に値下げすることにします。
商品IDを入力して[検索]ボタンをクリックすると、画面2のようになります。仕入単価と販売単価を書き換えて[更新]ボタンをクリックすると、画面3のような確認のメッセージが表示されます。[はい]をクリックすればSQLが実行され、レコードが書き換えられます。
処理結果は画面4のとおりです。ソースコード全体は“ex01Source.txt”で確認してください。
画面3:ユーザーにレコード更新の確認を求める
|
|
|