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

前回の概要

前回は MZPF と DB 連携でデータの取り出し(Select 文)を非常に基礎的な部分だけ説明した。Select文はデータ抽出を担っているだけあって、条件分岐して算出したり特定条件で検索する事が多く、最終的に一番複雑になる。奥が深いのでまずは初歩的な使い方をマスターして欲しい。

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

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

上記3点である。今回はInsertを解説する。


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

Insert文とは…データベースに情報を登録する際に用いる構文。

使用のイメージ

  • 受注した仕事の受注日・納期・金額・品名などを入力
  • 新人が入社し、社員情報を登録
  • 発注する商品のデータを入力

使用頻度は高いが内容シンプルな為に難度は低い。しかし、登録項目が多くなりがちで、MZでプログラムを組む際にコンポーネントの数が増えていくので間違えない様に区分けが必要。

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

2:プログラムの為にコンポーネントを撤去・追加する

①コンポーネント追加で画面構成部品テキスト「テキストフィールド」2つ追加
②コンポーネント追加で画面構成部品テキスト「ラベル」2つ追加
③テーブルコンポーネントは今回不要な為、外す。ボタンから連結している右側のテーブルコンポーネントにカーソルを合わせ、右クリック「削除」を選択、左側にあるテーブルコンポーネントも同じく右クリックで「削除」
④テーブル格納変数コンポーネントも③同様、削除
⑤画面編集でコンポーネントの配置を変えるMZ画面の下側にある、「画面編集」ボタンを押して、黄色画面の所で右クリックコンポーネント追加を選択し「テキストフィールド」と「ラベル」を各2つ計4つ配置する。このまま閉じて実行を押すと横に一列に配列されており、使い勝手も悪い。画面編集の画面下側に配置とあるのでここで「手動配置」を選ぶと、個別のコンポーネントを配置換え出来るので、図の様に変更すると見やすくなる。

⑥識別およびユーザへ項目を判り易くする。
・画面編集を閉じて、実行を押すと先ほど設定した画面が表示される。<ラベル>もそのままだと意味不明なので画面上でラベルの所にカーソルを移動し右クリック、テキストで「社員番号」と変更し、右側のラベルも同様に「社員名」と変更。

・テキストフィールドも2つ同じのが存在するため、Keyの名前を変更して識別出来る様にする。ビルダー上で左側にある、テキストフィールドコンポーネントでWクリックしてコンポーネント属性情報という画面が開く、ここでComponentKey にテキストフィールド7など初期値が記載されているので各々「社員番号」と「社員名」へ変更する

3:起動メソッドの設定を行う

①ボタンから繋がっている「データベースアクセスコンポーネント」はそのまま変更しない

②「文字列格納変数」のメソッド変更
メソッド「文字列を設定する(イベント発生なし)(String)」
取得方法「固定値」
メソッド/値「Insert into staff (`No`,`name`) values ('_NO_','_NAME_')

③文字列格納変数コンポーネント追加(アクションイベントで左クリック、灰色の空枠が出るのでダブルクリックして「文字列格納変数」を選択)
メソッド「正規表現に適合する最初の文字列を置換する(String,String)」
0:取得方法「固定値」
 メソッド/値「_NO_」
1:取得方法「メソッド戻り値」
 コンポーネント「テキストフィールド(社員番号)」
 メソッド/値「テキストを取得する」

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

⑤追加した2つの文字列格納変数コンポーネントの順番を入れ替える新たに追加した文字列格納コンポーネントをドラッグして2番目にある文字列を設定する(イベント発生なし)の下へ移動しドロップもう一点の文字列格納コンポーネントも同様に移動する。図の様に構成されていれば OK。ここで一旦、ファイルを保存しファイル名を「Insert」とする。

4:動作チェック。

画面下の「実行」ボタンをおしてプログラムを起動、社員番号を「2」、社員名を「bbb」と記載して開始ボタンをおしてみよう。エラーが発生しなかったら、もう一つ MZ のビルダーを立ち上げて、前回の「Select.mzax」を展開し実行を押してみよう。図の様にさきほど登録した値が出てくれば、データを登録する「Insert」としてのプログラムは成功。

5:設定プログラムの解説(表題3について)

今回も最後にちょっと解説。InsertもSelect 同様 MZ を使う特性上、方程式の様な物でこれで覚えて下さい。

① 毎度の事だがデータベースへアクセスするための準備をするコマンドが入っている、必ず最初に実施。

② SQL文を宣誓している。今回は「Insert into staff (`No`,`name`) values ('_NO_','_NAME_')」と実行しており、「スタッフテーブルに「No へは ‘_NO_’」と「Nameへは ‘_NAME_’」を登録する」という意味。Select同様、Insertもこの場所を変更して登録したテーブルへ登録したい内容を宣言する事になる。

③&④ ここでは置換という作業を実施している。ユーザが登録したいデータをデータベースへ入力しないといけないので②では社員番号の「No」と「Name」を仮に「’_NO_’」と「’_NAME_’」で指示している。このままSQLが実行されると「’_NO_’」と「’_NAME_’」が登録されてしまう。その為、社員番号はテキストフィールド:社員番号に記載された値と「_NO_」を入れ替えて下さいね、と指示している。④は社員名を同様の事を実施している。

※登録項目がある数の分、この作業を実施しないといけない。今後、入社日やセクション(部・課)など管理項目が増えた場合は、日付情報やセクション情報を入力出来る様にMZを変更しなければならない。

⑤ は ② でSQLを宣言した後とデータベースアクセスコンポーネントの「SQLを実行する」の間に置換作業が入らないとプログラムが成立しない為、入替作業を実施しているだけ。

まとめ

如何だろうか?基礎的なデータ登録説明はこれで完了となる。前回の「Select」と比較しても ②~④ 番以外は変更してない。特に③と④は登録項目が「社員番号」と「社員名」と2種類あるため、テキストフィールドや文字列格納変数が2つあるが各々設定していると理解出来れば、実質プログラムとして設定しているポイントは②のSQL文と③(および④)の2カ所しか違いがない。今回の「Insert」もこの形をキープしておけばあらゆる場面で応用が効く。今回作成したプログラムは「Insert.mzax」ファイルとして保存して欲しい。

次回は MZ 上でデータを登録する「UPDATE」のやり方を記載する。