第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文」の使い方を記載する。