第9回:データベース(DB)とMZ プラットフォームの連携を学ぼう(UPDATE)

前回の概要

前回は MZPF と DB 連携でデータの取り出し(Insert 文)を説明した。Select文と異なり、データをDBに投入する役割の為、比較的簡素なシステム構築で成立する。データがあればある程、登録項目が増える為セッティングが面倒になるが、逆に言うとそれしか手間がないのでMZの設定も比較的シンプルに完了する。

システム構築で実践的によく用いるSQL文は

・Select(データ参照、取り出し)
・Insert(データ登録)
◎Update(データ更新)

上記3点である。今回はUpdateを解説する。既存データを書き換えるという特性上、MZの組込み方が第7回・第8回と比較すれば最も複雑かつ長くなる。


Update 文の実行方法とMZの連携

Update文とは…以前にInsertされた内容に対して書き換え作業を行う事(データ更新)。生産管理では使用頻度は高い。

使用のイメージ

  • 100個製品を出荷した際に在庫から100マイナスさせる
  • 購入手配した商品が入荷し、入荷日の登録する
  • 担当者の部署が異動になり変更する

1:MZ Platform アプリケーションビルダーを立上げて前回保存した C:\MZPF\bin にある「Select.mzax」を起動する。

2:プログラムの為にコンポーネントを用意する。(前回の Insertプログラムに似ている)

① コンポーネント追加で画面構成部品テキスト「テキストフィールド」と「ラベル」を2つ追加する
② コンポーネント追加で画面構成部品「ボタン」も1つ追加する
③ コンポーネント追加、「文字列格納変数」を1つ追加する
④ コンポーネント追加、「リスト格納変数」を1つ追加する
⑤ これも前回同様、「画面編集」を実施、「テキストフィールド」と「ラベル」を各2つ、ボタンを1つ配置する。
⑥ ラベルの名前を変更し、ボタンの名前も「更新」とする。
⑦ テキストフィールドコンポーネントの ComponentKey も名前を変更し、間違え防止を図る。

3:テーブル情報を選択したらテキストフィールドに選択データが表示される様にする。

① テーブルコンポーネントから「データ選択イベント」を発生させ、リスト格納変数コンポーネントを追加
 メソッド「リストを設定する(PFObjectList)」
 取得方法「メソッド戻り値」
 コンポーネント「テーブル」
 メソッド/値「※getSelectedData
 ※この場合は日本語のメソッド「編集中のセル値を取得する」しか無いので右上にある□全メソッド対象に☑を入れると英語表記ではあるが Java 本来の設定方法が出てくる、この中から「getSelectedData」を選択

② その下に「リスト格納変数コンポーネント」を追加
 メソッド「要素を位置指定で取得する(int)」
 取得方法「固定値」
 メソッド/値「0(ゼロ)」

③ その下に「文字列格納変数コンポーネント」を追加
 メソッド「文字列を設定する(イベント発生なし)(String)」
 取得方法「メソッド処理結果」
 メソッド/値「要素を位置指定で取得する」

④ その下に「リスト格納変数コンポーネント」を追加
 メソッド「要素を位置指定で取得する(int)」
 取得方法「固定値」
 メソッド/値「1

⑤ その下に「テキストフィールドコンポーネント」を追加
 メソッド「テキストを設定する(String)」
 取得方法「メソッド処理結果」
 メソッド/値「※要素を位置指定で取得する」
※②と④で同じ要素を取得しているので2行表示される、上の方が②を指し、下の方が④を指している

⑥ その下に「リスト格納変数コンポーネント」を追加
 メソッド「要素を位置指定で取得する(int)」
 取得方法「固定値」
 メソッド/値「2

⑦ その下に「テキストフィールドコンポーネント」を追加
 メソッド「テキストを設定する(String)」
 取得方法「メソッド処理結果」
 メソッド/値「※要素を位置指定で取得する」
 ※⑤注記同様、選択項目が増えているので間違えて選ばない様に。

4:一旦動作チェック。実行ボタンを押して画面の「開始」ボタンをおしてデータベースから Select 文を実施。テーブルにデータが格納される。(前々回の Select の講座で実施済)

① ここからテーブル上で右クリックしテーブル ⇒ 選択方法 ⇒ 行選択を選ぶ。

② 1行目でも2行目でも構わないが任意のテーブルデータを選択すれば下のテキストフィールドに該当の項目が移る事が確認出来る。

5:「更新」ボタンを押したらデータベースの情報が変更されるプログラムを組む。

① 更新「ボタンコンポーネント」からイベント処理追加 ⇒ アクションイベント ⇒ データベースコンポーネント追加
 メソッド「データベースに接続する(String,String,String,String)」
※詳細設定は上の方で開始「ボタンコンポーネント」で既設済のデータベースアクセスコンポーネントと同様。右クリックでコピーして更新「ボタンコンポーネント」からイベント処理追加 ⇒ アクションイベントの赤丸上で右クリック ⇒ 貼り付けでも構わない。

② その下に「文字列格納変数コンポーネント」追加
 メソッド「文字列を設定する(イベント発生なし)(String)」
 取得方法「固定値」
 メソッド/値「Update staff set `No` = '_NO_',`name` = '_NAME_' Where `ID` = '_ID_'

③ その下に「文字列格納変数」追加。
 メソッド「正規表現に適合する最初の文字列を置換する(String,String)」
 0:取得方法「固定値」
  メソッド/値「_NO_
 1:取得方法「メソッド戻り値」
  コンポーネント「テキストフィールド(社員番号)」
  メソッド/値「テキストを取得する」

④ その下に「文字列格納変数」追加。
 メソッド「正規表現に適合する最初の文字列を置換する(String,String)」
 0:取得方法「固定値」
  メソッド/値「_NAME_
 1:取得方法「メソッド戻り値」
  コンポーネント「テキストフィールド(社員名)」
  メソッド/値「テキストを取得する」

⑤ その下に「文字列格納変数」追加。
 メソッド「正規表現に適合する最初の文字列を置換する(String,String)」
 0:取得方法「固定値」
  メソッド/値「_ID_
 1:取得方法「メソッド戻り値」
 コンポーネント「文字列格納変数(※後から追加した方)」
 メソッド/値「文字列を取得する」

⑥ その下にデータベースアクセスコンポーネント追加
 メソッド「SQL文を実行する(String)」
 取得方法「メソッド戻り値」
 コンポーネント「文字列格納変数」
 メソッド/値「文字列を取得する」

⑦その下にデータベースアクセスコンポーネント追加
 メソッド「データベースとの接続を切断する()」を選択。

6:動作チェック。実行ボタンを押して画面の「開始」ボタンをおしてデータベースからSelect文を実施。テーブルにデータが格納される。

① ID1の行を選択してテキストフィールド:社員名「aaa」を「abc」に変更して更新ボタンを押してみよう。

② 再び開始ボタンをおしてみるとテーブルに格納されたデータが「abc」へ変更されている

まとめ

既存のデータを新しい情報へ書き換えるのが「Update」のやり方である。参照したテーブルの行数に応じてテキストフィールドが必要になってくるので使うコンポーネントの数も比例して増えてくる。MZの設定の仕方としては「Select」したプログラムを「Insert」の要領で更新するという流れが近い、第7回と8回の応用となっている。今回作成したプログラムは「Update.mzax」として保存して欲しい。次回は「Delete文」の使い方を記載する。