第10回:データベース(DB)とMZ プラットフォームの連携を学ぼう(DELETE)
前回の概要
前回は MZPF と DB 連携でデータの取り出し(Update文)を説明。
既存データを変更・編集するという特性上、やや複雑な内容である。
システム構築で実践的によく用いるSQL文は
・Select(データ参照、取り出し)・Insert(データ登録)・Update(データ更新)とお伝えしたが、
もう一点準レギュラーがある。
◎Delete(データ削除)
今回はこれを解説する。既存データを削除(抹消)するという特性の為、あまり使う事が無い。
(一時的に見えなくなるのではなく、完全に消し去ってしまう)
Delete 文の実行方法と MZ の連携
Delete 文とは…データの削除を行う「Delete」は生産管理では使用頻度は低く、ほとんど使わない。
使用のイメージ
- 手違いで発行してしまった受注指示番号を削除する
- 購入手配した商品がキャンセルになり、注文自体を取り消す時
Deleteは特性上、既にに登録してあるデータを削除するという構造になる為、MZ の組み方は「Update」に非常に似ている
1:MZ Platform アプリケーションビルダーを立上げて前回保存した C:\MZPF\bin
にある「Update.mzax」を起動する。
2:プログラムの為にコンポーネントを変更する。(前回のUpdateプログラムを応用する)
① ボタン「更新」から繋がる上から2番目「文字列格納変数コンポーネント」を変更する。
メソッド/値「Update staff set `No` = '_NO_',`name` = '_NAME_' Where `ID` = '_ID_'
」を
「Delete from staff Where ID = '_ID_'
」へ変更
② 文字列格納変数コンポーネントの「正規表現に適合する最初の文字列を置換する」の部分でNoとNAME の置換部を削除し外す
③ 【ここから以降は Deleteプログラムに必要ない部分を削除や変更する説明】
テーブルコンポーネントから繋がっているリスト格納変数コンポーネント(要素を指定位置で取得する)の指定位置「1」以降は不要(Delete 構文に必要とする置換文字はIDのみの為、その他の情報は取得する必要がない)
④ ボタン「更新」のタイトルを「削除」へ変更する
3:動作チェック。実行ボタンを押して画面の「開始」ボタンを押してデータベースからSelect 文を実施。テーブルにデータが格納される。(前々回のSelectの講座で実施済)
① テーブルに格納されたデータを好きな行を選択しボタン「削除」を押す。
② 再び「開始」ボタンを押すと選択したデータが削除されている。
※冒頭に記載したがDeleteはほとんど使う事がない。(存在自体が抹消される為に出番が少)
ナゼか?⇒例えば社員マスターがあって、仮にAが退社しても削除する事はない、Aの名前で登録していた作業日報や発注した注文履歴の担当者などで使われる事が多い為、
登録自体を消してしまうとシステム全体に影響を及ぼすので削除しないのが普通である。
出番があるとすれば、誤って発行した請書指示書や外部に出した注文をキャンセルする場合で、そのもの自体が無くなって良いケースに限られる。
類似のSQLで
「Drop」:テーブルそのものを削除(例:スタッフテーブル自体を抹消)
「Truncate」:テーブルの登録情報すべてを削除(テーブルの行列データ自体は残る)
など存在するが、まぁ使う事は無いの覚えなくとも良い。
まとめ
既存のデータを削除する事が「Delete」のやり方である。
ユーザ側に削除するデータを選択させて、その後処理をするという流れになっている為、基本的な構造は「Update」と同じである。
ID から削除してしまうので、そこにぶら下がっている情報は根こそぎ消えてしまう。
今回作成したプログラムは「Delete.mzax」として保存して欲しい。