【GxTips】最近気がついたGeneの機能(Max/Min)


おひさしぶりです、kudoです

社内で「ブログを書きます」といっておきながらぜんぜん書いていませんでした・・・

と、とにかくいつも筆が重いので
今回は軽めのネタを投稿します

●Max/Min関数

GeneXusでは前後の項目属性などからベーステーブルを求めSQLのMax/Minと同じ動きをします
たとえば

For Each
Order Report_No
&MaxAmt = Max(Report_Amt)
EndFor

であれば「Report_Amt」の最大値を取得することができます

また、条件や初期値を指定できるので

&MaxAmt = Max(Report_Amt, Report_Date < ‘2017/02/01’, 0)

と記述すれば「Report_Date」が2017年2月1日より前のデータの中で
もっとも大きい「Report_Amt」を返却します
もし、レコードがなければ、「0」を返却します

ここまではよく使っている内容なのですが
久し振りにGeneXusWikiを見直したら、第4引数を指定することでかなり便利になることに気がつきました

&LastAmt = Max(Report_Date, Report_Date < ‘2017/02/01’, 0, Report_Amt)

上記に出る「Report_Date」はユニークな項目とします
その場合、この記述は以下のような内容になります

Report_Dateが2017年2月1日以前の中でもっとも大きいReport_Dateを持つレコードの「Report_Amt」を返却する
対応するレコードが無い場合は「0」を返却する

用は、MaxとFindを組み合わせて行うようなデータの取得を
Max関数一つで実装することができるのです

まぁ、それだけです
知ってた人はごめんなさい、知らなかった人はつかってみてね