ホーム > Magic xpa > 旧Magicバージョン > 連載 Magic V10リッチクライアント

サイト内検索

連載 Magic V10リッチクライアント

第12回 商品選択プログラムの作成

商品選択プログラムは、基本的に顧客選択プログラムと同じ要領で作成することができます。ここでは、商品選択プログラムを追加するとともに、明細入力サブタスクの仕上げも行っておきます。

丹田 昌信 (プロフィール

商品選択プログラムの実行画面

画面1は、完成後の商品選択プログラムの実行画面です。明細入力フォームの「商品番号」の欄からズーム(F5キーまたはダブルクリック)すると、この選択テーブルがオープンされます。

画面 1 商品選択プログラムの実行画面
画面 1 商品選択プログラムの実行画面

目的の商品を選択するにはレコードを選んで「選択」ボタンを押すか、あるいはEnterキーを押します。選択操作を取り消してウィンドウを閉じるには、ESCキーを押すか、「キャンセル」ボタンを押すか、あるいはウィンドウの閉じるボタンを押します。操作法は顧客選択プログラムの場合とまったく同じです。

商品選択プログラムの作成

商品選択プログラムも顧客選択プログラムの場合と同じく、Magic V10の「選択テーブル」の機能を用いて作成します。

プログラムリポジトリを開き、4行目に新しい行を作成してAPGを起動します。

「オプション」欄を「C=リッチクライアント」とし、「メインソース」を商品ファイルとします(画面2)。

画面 2 APGで商品選択プログラムを作成
画面 2 APGで商品選択プログラムを作成

「カラム」欄からズームしてカラム選択テーブルを開き、「商品番号」と「商品名」だけを選択します(画面3)。

画面 3 カラムの選択
画面 3 カラムの選択

APGダイアログのOKボタンを押してAPGを実行し、プログラムリポジトリ上でプログラムの名前を「商品選択」とし、公開名を「SelectProduct」とします。このプログラムも外部から単体で呼ばれることはありませんので、「外部」のチェック欄は空白のままにしておきます(画面4)。

画面 4 プログラム名と公開名の設定
画面 4 プログラム名と公開名の設定

タスクをズームしてデータビューエディタを開き、受注入力プログラムからパラメータを受け取るためのパラメータ変数を「P_顧客番号」として定義します(画面5)。

画面 5 パラメータの設定
画面 5 パラメータの設定

前回同様、このパラメータで商品ファイルの商品番号を位置付け設定(位置付:最小)します。これにより、明細入力画面においてすでに商品が登録されている場合は、その値で選択テーブル側のレコードが位置付けされることになります(画面6)。

画面 6 顧客番号をパラメータの値で位置付け
画面 6 顧客番号をパラメータの値で位置付け

次にフォームエディタを開き、「ウィンドウタイプ」が「M=モーダル」となっていることを確認します(画面7)。

画面 7 ウィンドウタイプ「M=モーダル」の確認
画面 7 ウィンドウタイプ「M=モーダル」の確認

「商品選択」のフォームをズームしてフォームを開き、前回の顧客選択プログラムの場合とまったく同じ要領でフォームを定義します(画面8)。

 

画面 8 商品選択フォームの定義
画面 8 商品選択フォームの定義

そして最後に、レコード後処理でパラメータ(P_商品番号)に商品ファイルの商品番号の値を返すための設定を行います(画面9)。

画面 9 パラメータ更新処理の設定
画面 9 パラメータ更新処理の設定

これで、商品選択プログラム側の設定は完了です。

明細入力プログラムの変更

商品選択プログラムが完成したら、次に明細入力プログラム側に、この商品選択プログラムをコールするための処理を追加します。こちらも、前回の顧客選択プログラムの場合とほぼ同じ要領で作成します。

受注入力プログラム側の明細入力サブタスクを開き、ロジックエディタにズームイベントを定義します。イベントの対象となるコントロールは「商品番号」とします(画面10)

画面 10 ズームイベントの設定
画面 10 ズームイベントの設定

ハンドラ行を1行追加し、商品選択プログラムをコールする設定を行います(画面11)。

画面 11 商品選択をコールするハンドラの設定
画面 11 商品選択をコールするハンドラの設定

パラメータ欄からズームしてパラメータテーブルを開き、明細ファイルの「商品番号」をコール先の「P_商品番号」パラメータと対応させます(画面12)。

画面 12 プログラムコール時のパラメータの設定
画面 12 プログラムコール時のパラメータの設定

次に、商品選択プログラムから戻ったときに、パラメータによって明細ファイルの商品番号が更新されたら、それにともなって明細ファイルの「商品タイプ」、「単価」、「合計」欄を自動更新する処理を施します。これには、データビューエディタの「代入」欄を使用します。

明細入力サブタスクのデータビューエディタを開き、「商品タイプ」の代入欄に照会リンク先の商品ファイルの商品タイプを指定します(画面13)。

画面 13 商品タイプの代入設定
画面 13 商品タイプの代入設定

同様に、「単価」の代入欄に商品ファイルの単価を、そして「合計」の代入欄に明細ファイルの「数量」×「単価」を設定します(画面14)。

画面 14 単価と合計の代入設定
画面 14 単価と合計の代入設定

これで明細行の自動計算は完了です。

最後に、明細行の合計欄の値が更新されたときに、親タスクである受注ファイルの「明細合計額」の値を更新する処理を追加しておきます。この処理は、Magicの旧バージョンでは通常、レコード後処理レベルに記述していましたが、ここではV10新機能の勉強をかねてコントロールの「検証」レベルの記述で行ってみたいと思います。

明細入力サブタスクのロジックエディタを開き、コントロール検証レベルを追加します。対象となるコントロールは「合計」とします。(画面15)。

画面 15 コントロール検証レベルの追加
画面 15 コントロール検証レベルの追加

項目更新コマンドを登録し、受注ファイルの「明細合計額」を明細ファイルの「合計」の値で更新します。ただし、加算モードの更新としますので、項目更新の特性シート上で「加算」欄をYesに設定します(画面16)。

画面 16 コントロール検証レベルの追加
画面 16 コントロール検証レベルの追加

これでほぼ完成となりますが、ただしこの状態では受注ファイルの明細合計額は更新されても、その他の「受注割引額」、「消費税額」、「受注合計額」の値はまだ更新されません。さらに、1件の受注処理が完了したときに、顧客ファイルの「受注累計額」、「取引回数」の値も更新されません。これらの処理は比較的、簡単な定義式の記述で作成できますので、自習をかねて作成してみてください。

では、ここまでの状態でプログラムを実行してみることにしましょう。プログラムを保存してプログラムリポジトリに戻り、F7キーを押して受注入力プログラムを実行します(画面17)。

画面 17 受注入力プログラムの実行
画面 17 受注入力プログラムの実行

カーソルを明細行の商品番号の欄に移動し、ズーム(F5キー、またはダブルクリック)します(画面18)。

画面 18 受注入力プログラムの実行
画面 18 受注入力プログラムの実行

商品や数量の変更とともに、明細行の「合計」の値や、親タスクの「明細合計額」の値も連動して変更されることを確認してください。

これにて連載は一旦、終了です。ご講読をありがとうございました。

(以上、2008年4月15日号)