PHPQUERYはクエリーを作成する際にメンバーを指定することも可能です。
ただ、ファイルの作成画面でメンバーを指定してしまうとクエリーとメンバーが密に1対1の関係になってしまいます。
そこで、検索条件でメンバー名を渡して動的にメンバーを変更する方法をご案内します。
クエリー単体だと出来ないのですが、CL連携を使用して検索条件を工夫することで可能となります。
~大まかな流れ~
①CL作成(IBM i (AS400) 側で実行)
②クエリー作成(PHPQUERY側で実行)
③CL連携の設定(PHPQUERY側で実行)
今回は以下のファイルのメンバーを使用し、実際にどのように実行するかのサンプルを紹介します。
ファイル:KABE/ZAIMSTM
メンバー:KABE/ZAIMSTM/M1
メンバー:KABE/ZAIMSTM/M2
メンバー:KABE/ZAIMSTM/M3
①CL作成(IBM i (AS400)側)
PHPQUERYの検索条件からパラメータで渡されたKABE/ZAIMSTMのメンバーをQTEMP/ZAIMSTMにコピーするCLです。
PGM PARM(&MBR)
DCL VAR(&MBR) TYPE(*CHAR) LEN(10)
CPYF FROMFILE(KABE/ZAIMSTM) TOFILE(QTEMP/ZAIMSTM) +
FROMMBR(&MBR) MBROPT(*REPLACE) CRTFILE(*YES)
ENDPGM
※サンプルではこのCLをKABEライブラリーに「MBRCHG」としてコンパイルしておきます
②クエリー作成(PHPQUERY側)
・ライブラリー・リスト編集
ライブラリー・リストをQTEMP⇒KABE(QTEMPを上に指定してCLで作成されたQTEMPのファイル方を先に参照するように設定します)
・ファイルの選択
ライブラリー「*LIBL」、ファイル「ZAIMSTM」とします。
・出力フィールドの選択
「結果フィールド追加」からメンバーというフィールドを任意の文字列で作成します。(今回は'@@@@@@@@@@'とします)
検索に使いたいだけなので、出力フィールドのSEQはブランクにします。
・選択条件の入力
結果フィールドで追加した「メンバー」を条件タイプが必須条件と非表示条件の2つで作成します。
※主条件追加を押したら"OR"で指定します。
※条件タイプが非表示の方は条件データに"@@@@@@@@@@"を入力します。
・保存してクエリー作成は完了です。
③CL連携の設定(PHPQUERY側)
メニュー>管理>CL連携 から②で作成したクエリーの「実行前プログラム」をクリックします。
①でKABEライブラリーにコンパイルした「MBRCHG」を実行前プログラムに指定します。
②の選択条件の入力で設定した「メンバー」の条件タイプが必須条件の方を紐づけるように設定します。
メンバー名を検索条件としてCLに渡すようにすると、クエリーとしての仕様上、CLで出来上がったQTEMP/ZAIMSTMに対してメンバー名で検索しないといけない動きになるため、検索されても関係ない動きにする為の対策です。
以上で設定が完了となります。
作成したクエリーを実行してみます。
・実行画面(検索条件を入力)
・実行結果
コメント
0件のコメント
サインインしてコメントを残してください。