Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


ユーザーIDに基づくグリッドカラムの自動非表示機能

(※このトピックスは、Valence開発元(米CNX社)のブログ記事を翻訳・再編集したものとなります。原文記事は、コチラとなります。)

グリッドアプリを作成する場合、社内の誰かが見たいと思うような列をすべて引き込みたくなることがあります。例えば、在庫の項目を表示するグリッドを考えてみましょう。経理担当者はドルを見たいし、倉庫担当者は数量を見たい、購買担当者は日付を見たい…。誰もが、何か特別なものを見たいのです。

グリッドアプリのカラムの配置、非表示、表示はユーザーに任せることができますが、Valence 6 の最新ビルド(6.0.20201222.0)では、ユーザーがカラムを見る前にプログラムでオフにできます。 たとえば、財務情報が倉庫担当者にとって重要ではないことを知っていれば、ロード前に値に関わるカラムを永久に省略するようグリッドアプリを構成することができるわけです。逆に、通常はデフォルトで非表示になっているカラムを、特定のユーザーがアプリを起動したときに「非表示にする」ように設定することもできます。

この処理のポイントは、グリッド・アプリ内に非表示にしたい列を制御する[アプリ変数]を作成し、[アプリ変数]を任意に初期化する簡単なRPG起動プログラムを指定することです。 例として、先月のヒントで作成した顧客リスト・アプリで、「YTD売上」と「最終活動」の列を特定のユーザーに対して非表示にしてみましょう。

まず App Builder を起動し、[アプリケーション]タブに切り替えて DEMOCMAST Edit Grid アプリを選択し、左上の[アプリ変数]ボタンをクリックします。

Listen

次のステップは、右上のAddボタンをクリックして、雑多な列の非表示機能を制御するために、新しい[アプリ変数]を作成することです。ここでは「hideMiscColumns」と呼ぶことにします。

Listen

ここで左上の戻る矢印をクリックし、グリッドにカーソルを合わせて左上に表示される歯車をクリックし、「アプリ変数にリンク」ボタンをクリックします。

Listen

ここでどの列が今作成した[アプリ変数]によって制御されるべきかを示す[Hide Columns]セクションまでスクロールダウンして、隠すべき列を見つけ、[アプリ変数]の “hideMiscColumns “を選択します。

Listen

最後に、アプリを起動したときに必要に応じて[アプリ変数]を設定するために呼び出す、簡単なRPGプログラムの名前をアプリに伝えましょう。アプリケーションページに戻って、[セキュリティ]アイコンをクリックしてください。

Listen

このプログラム名をNABSTARTUPとして、右側のスペースに配置します…

Listen

フロントエンドは完了したので、アプリを保存し、バックエンドの RPG プログラムに焦点を当てます。ソース・エディタで、NABSTARTUP プログラムをコピーし、アプリで指定した名前(この場合は NABSTARTUP)を付けます。 ソースを開き、Process プロシージャまでスクロールします。 ここに、アプリ起動時に変数 hideMiscColumns を設定するコードを追加します。

Listen

このソース例では、ユーザー[JOHNSON]がログインしているかどうかを確認するために、グローバルに利用可能なRPG変数の1つである[gUser]を使用しています。もちろん、ユーザーが所属する部署を決定する、つまりユーザーのマスター・テーブルを作成し、それに応じて[アプリ変数]を設定する、よりエレガントな方法があるはずです。

コンパイルすると、スタートアップRPGプログラムで特定されたユーザーは、[アプリ変数]を「false」に設定することになり、グリッドの対応する列が表示されなくなります。これは、選択したユーザーに対してグリッド・アプリのデータの乱雑さを軽減するための、ほんの小さな方法なのです