Q4:マスタ登録の「画面編集」で行き詰っております。
Q4-1:
マニュアルで紹介されている「金型履歴管理システム」を改良して使用したいと思いビルダーでいろいろ試しているのですが、マスタ登録の「画面編集」で行き詰っております。
たとえば、「取引先マスタ」の複合コンポーネントで画面編集に入ると、何もコンポーネントがありません(image0.png)。
個々のマスタ登録の画面は、一階層上の複合コンポーネント「マスタ」の画面編集にありました(image1.png)。
ここで、取引先のテーブルのカラムを増やして、「住所」も登録できるようにしたいと思い、ラベルとテキストフィールドを増やしてみました(image2.png)。
ここまでは簡単だったのですが、増やしたコンポーネントの所属場所に戸惑っています。
「取引先マスタ」で増やした項目についての処理を記述しようとしてもコンポーネントが現われてきません。
増えたラベルとテキストフィールドは「取引先マスタ」にではなく、一階層上の「マスタ」にありました。
逆に、「取引先マスタ」内でラベルとテキストフィールドを追加しても、上記編集画面には出てきません。
上記理由で項目追加ができないでおります。このシステムの編集画面の構造は単純ではないように思えます。どのようになっているのでしょうか?どのようにすればテーブルで増やしたカラムをシステムで取り扱うことができるのでしょうか?
関連ファイル:image0.png、image1.png、image2.png
A4-1:
「金型履歴管理システム」は製品生産実績データおよび金型メンテナンスデータの登録と参照を行うアプリケーションです。データはデータベースに登録し一元管理することを前提としています。
今回の顧客マスタの変更については変更箇所は大きく分けて3つあります。
1.MySQLデータベース内のテーブルの変更
2.複合コンポーネント内の画面の変更
3.上記1),2)に伴う設定処理の変更
1)操作説明書P5まで進めるとMySQLデータベース内に「karte」というデータベースが作られます。顧客マスタ用のテーブルは「customer」です(P29参照)。
「id」列と「name」列がありますが、ここに一列(例:address)追加します。
2)[マスタ複合コンポーネント]内のダイアログには[分割パネル]、[パネル]があり、ここに[ツリー]や[テーブル]、[ラベル]と[テキストフィールド]の載った[パネル]等が表示されます。
[ツリー]は変わりませんが、[テーブル]や[パネル]の内容は[ツリー]で選択されたマスタに合わせて変わっています。
これは[パネル(ID4-14 詳細パネル)]上にメソッド「GUIコンポーネント(PFGUIComponent)」を追加する」と「removeAllComponents(PFGUIComponent)」で、各[パネル]を載せ換えているからです。
処理上の工夫として、一つのメソッド処理で複数のコンポーネントを対象とできるよう、一旦[コンポーネント格納変数]に[複合コンポーネント]を設定するようにしてあります。
「住所」用[テキストフィールド]と[ラベル]の追加は、実行画面を全部閉じた後、[取引先マスタ]複合コンポーネント内で行って下さい。「画面編集」には最初[パネル(ID4-3-4 顧客パネル)]は表示されていませんが、編集領域で右クリック>[コンポーネント追加]で選択して編集画面に表示し、通常通り[ラベル]等の配置を行います。
[取引先マスタ]内では見えず、上位の[マスタ]画面にあるように見えていたの
は、この時点では[マスタ]内の[詳細パネル]で利用されていたからです。画面を閉じる(=アプリケーション終了)時に[詳細パネル]から載っていた[パネル]は削除されます。
3)[取引先マスタ]内の処理を変更します。
@MySQL「customer」テーブル変更に伴うもの
1.[ファンクション ID4-3-20 一覧取得]の接続先
[MySQL IF ID4-3-1]の<引数0>を変更
(例:select `id`, `name`,`address` from `customer`)
2.[サブルーチン ID4-3-21 表示用テーブル設定]の接続先に
[テーブル格納変数 ID4-3-14 表示用テーブル]の処理を新規に追加
メソッド:列名を位置指定で設定する(int,String)
<引数0>取得方法:固定値、メソッド/値:1
<引数1>取得方法:固定値、メソッド/値:住所
3.[サブルーチン ID4-3-33 登録処理]の接続先
[MySQL IF ID4-3-1]の<引数0>を変更
(例:insert into `customer` (`name`, `address`) values ('_NAME_','_ADDRESS_') (_ADDRESS_の部分の文字列は任意))
4.[サブルーチン ID4-3-33 登録処理]の接続先に
[文字列格納変数 ID4-3-16 SQL]の処理を新規に追加(上から3番目に配置)
メソッド:正規表現に適合する最初の文字列を置換する(String,String)
<引数0>取得方法:固定値、メソッド/値:_ADDRESS_
<引数1>取得方法:メソッド戻り値、
コンポーネント:[住所用テキストフィールド]
メソッド/値:テキストを取得する
5.[サブルーチン ID4-3-35 更新処理]の接続先
[文字列格納変数 ID4-3-16 SQL]の<引数0>を変更
(例:update `customer` set `name` = '_NAME_' ,`address`='_ADDRESS_'where `id` = '_ID_')
6.[サブルーチン ID4-3-35 更新処理]の接続先
[文字列格納変数 ID4-3-16 SQL]の処理を新規に追加(上から3番目に配置)
メソッド:正規表現に適合する最初の文字列を置換する(String,String)
<引数0>取得方法:固定値、メソッド/値:_ADDRESS_
<引数1>取得方法:メソッド戻り値、
コンポーネント:[住所用テキストフィールド]
メソッド/値:テキストを取得する
A画面構成部品の追加に伴うもの
7.[サブルーチン ID4-3-24 初期化処理]の接続先に
[住所用テキストフィールド]の処理を新規に3つ追加
メソッド:テキストを設定する(String)
編集可否を設定する(boolean)
背景色を設定する(Color)
各引数は[テキストフィールド ID4-3-6 顧客名フィールド]と同じ
(=[顧客名フィールド]の3つの処理をコピー&ペーストし、
接続先で右クリック>[接続コンポーネント選択]
接続先のみ[住所用テキストフィールド]に変更する)
8.[ファンクション ID4-3-25 表示]の接続先に
[住所用テキストフィールド]の処理を新規に3つ追加
メソッド:テキストを設定する(String)
編集可否を設定する(boolean)
背景色を設定する(Color)
操作は上記7と同様
8.[ファンクション ID4-3-26 新規登録]の接続先に
[住所用テキストフィールド]の処理を新規に2つ追加
メソッド:テキストを設定する(String)
編集可否を設定する(boolean)
操作は上記7と同様
9.[ファンクション ID4-3-27 更新処理]の接続先に
[住所用テキストフィールド]の処理を新規に追加
メソッド:編集可否を設定する(boolean) 操作は上記7と同様
10.[サブルーチン ID4-3-34 元に戻す処理]の接続先に
[住所用テキストフィールド]の処理を新規に追加
メソッド:テキストを設定する(String) 操作は上記7と同様
上記ご検討頂き、どうぞお試し下さい。
ご説明が足りない点、ご要望等ございましたら、再度ご連絡頂ければ幸いです。
この「金型履歴管理システム」はチュートリアル、マニュアルのみでは紹介しきれない処理設定を含み、理解しにくい箇所もあるかと存じます。
毎週月・火曜日にMZPlatform講習会を開催しております。
『チュートリアルLesson 4〜Lesson 12』で紹介するアプリケーションを実際に作成しながらMZPlatformの操作に慣れて頂くのが主旨ですが、参加人数が少ない場合には、ご要望に応じた説明なども致しますので、よろしければ講習会への参加もご検討ください。