おひさしぶりです、kudoです
社内で「ブログを書きます」といっておきながらぜんぜん書いていませんでした・・・
と、とにかくいつも筆が重いので
今回は軽めのネタを投稿します
●Max/Min関数
GeneXusでは前後の項目属性などからベーステーブルを求めSQLのMax/Minと同じ動きをします
たとえば
For Each
Order Report_No
&MaxAmt = Max(Report_Amt)
EndFor
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関数一つで実装することができるのです
まぁ、それだけです
知ってた人はごめんなさい、知らなかった人はつかってみてね