データベース千夜一夜第15回

プログラミングとSQL(3)
~フィールドの更新とレコードの追加処理
長谷川裕行
有限会社 手國堂

フィールドの更新処理(2)~ソースコードの記述

ソースコードの大部分は、前回の削除処理を流用できます。処理対象のテーブルも、例によってテーブル「商品_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:ユーザーにレコード更新の確認を求める




トップページ
フィールドの更新処理(1)~SQLとアプリの仕様
フィールドの更新処理(2)~ソースコードの記述
対象レコードはグローバル変数に
ExecuteNonQueryメソッドを実行
実行結果を確認する
テレコードの追加処理(1)~SQLとアプリの仕様
レコードの追加処理(2)~商品IDの重複検査
レコードの追加処理(3)~仕入先名の表示
レレコードの追加処理(4)~実際の追加処理
あとがき
Copyright © MESCIUS inc. All rights reserved.