このセクションでは、式エディタでの各式要素の使用方を紹介します。
定数は、特定のプロパティでのみ使用可能なフィールドです。たとえば、[背景色]プロパティでは「Transparent」や「Black」などが候補として表示されます。
共通の値は、現在のページ番号やレポートページの総数など、レポート自体に関する情報を取得できる項目が含まれています。
{&ExecutionTime}
:現在の日付と時刻を表示します。
ページ番号は2種類用意されています。
次の式を使用して、グローバルページ番号、またはローカルページ番号を表示できます。
{&PageNumber}
:現在のグローバルページ番号を返します。
{&TotalPages}
:グローバルの総ページ数を返します。
{&PageNumberInSection}
:データ領域、またはグループのローカルページ番号を返します。
{&TotalPagesInSection}
:データ領域、またはグループの総ページ数を返します。 たとえば、「ページ番号、総ページ」を選択すると、次の値が式に追加されます。
{&PageNumber}/{&TotalPages}
レポートをプレビューした場合の出力内容は次のとおりです。
ヒント:
たとえば、[レポート]オブジェクトでグループ化を設定している場合にページ番号(セクション)「{&PageNumberInSection}」、または総ページ(セクション){&TotalPagesInSection}を使用したければ、[レポート]オブジェクトの[グループ毎にページ番号を設定]プロパティを「はい」に設定します。
{&ReportName}
:レポートの名前を表示します。
{User!UserID}
:レポートを出力しているシステムの実行ユーザーを表示します。これはForguncyアプリケーション上のユーザーではなく、システム(OS)のユーザーであることに注意してください。
{User!Language}
:レポートを出力しているシステムの実行ユーザーの言語設定を表示します。
レポートパラメータが定義されている場合、それらのパラメータがこのカテゴリに表示されます。ダブルクリックで追加すると、「{@レボートバラメータ1}」のような値が式入力ボックスに追加されます。これは、実行時にパラメータ値に置き換えられます。
なお、[データ]タブのレポートパラメータをデザイン領域にドラッグ&ドロップすることで、そのパラメータ値を表示する式が設定されたTextBoxコントロールを配置できます。
対象のレポート要素に設定されているデータセットのフィールドの一覧がこのカテゴリ表示されます。
レポートの演算子には、算術、連結、比較、および論理/ビットなどがあります。
算術演算子はオペランド(演算の対象となる値)として数値を受け取り、1つの数値を返します。
+
:数値、または数式を加算します。2つの文字列変数を連結する場合には、&演算子を使用してください。
-
:数値、または数式を減算します。数値の前に使用し、負数を表すこともできます。
*
:数値、または数式を乗算します。
/
:2つの数値、または数式を除算します。除数をゼロにした場合、エラーが発生します。
\
:2つの数値、または数式を除算し、余り部分を破棄して残りの値を返します。たとえば、「7 \ 3」の値は「2」です。
Mod
:2つの数値または数式を除算し、余りのみを返します。たとえば、「7 Mod 3」の結果は「1」です。
^
:第1オペランドを第2オペランドの累乗にした結果を返します。 ヒント:
通常の比較演算子
比較演算子は、オペランドを比較し、その結果をブール値で返します。
結果は、True(1)、False(0)、またはNullになります。 比較演算子は、単独で使用できますし、組み合わせて使用することもできます。 Nullの結果は、第1オペランド、または第2オペランドがNullの場合にのみ生成されます。
上記の構文を組み合わせて、これらの比較操作の結果がTrueまたはFalseの場合に必要な条件を説明します。
>
:左のオペランドが右のオペランドよりも大きい場合はTrueを返します。それ以外の場合、Falseになります。
>=
:左のオペランドが右のオペランド以上の場合はTrueを返します。それ以外の場合、Falseになります。
<
:左のオペランドが右のオペランドよりも小さい場合はTrueを返します。それ以外の場合、Falseになります。
<=
:左のオペランドが右のオペランド以下の場合はTrueを返します。それ以外の場合、Falseになります。
=
:左のオペランドが右のオペランドと等しい場合はTrueを返します。それ以外の場合、Falseになります。
<>
:左のオペランドが右のオペランドと等しくない場合はTrueを返します。それ以外の場合、Falseになります。 比較演算子は、数値だけでなく文字列比較にも使用できます。オペランドの1つが数値で、もう1つが文字列の場合、数値は常に文字列式より小さいと評価されます。両方のオペランドが文字列の場合、文字列の長さが大きいほうが大きいと評価されます。文字列が同じ長さの場合、小文字の方が大文字より大きいと評価されます。
Is演算子
2つのオブジェクト変数が同じオブジェクトを指しているかどうかを判断する演算子です。
左のオペランドと右のぺランドの両方が同じオブジェクトを指している場合、結果はTrueになります。それ以外の場合、結果はFalseになります。
たとえば、データセットのフィールド値がNullであるかどうかを確認するために使用できます。
{IIF(AvatarUrl Is Null, "http://example.com/no-photo.jpg", "http://example.com" + AvatarUrl)}
Like演算子
Like演算子は、指定された文字列が指定されたパターンと一致するかどうかを判断するために使用されます。
ここで、文字列はパターンと比較される文字列であり、文字列が指定されたパターンと一致する場合、結果はTrueになります。それ以外の場合、Falseになります。左のオペランド、または右のオペランドがNullの場合、結果はNullになります。
右側のオペランドには以下のワイルドカード文字を含めることができます。
*
:0文字以上の任意の文字列。
?
:任意の1文字。
#
:任意の数字(0〜9)
[]
:角かっこ内の任意の1文字と一致する文字。「[]」と指定した場合には空文字("")を表します。
[!]
:指定した範囲に含まれない任意の1文字。 角かっこ内の文字列には、数字を含む任意の種類の文字を含めることができます。ハイフン(-)を使用することで、文字の範囲を指定できます。たとえば「 [A-D]」と指定した場合、A、B、C、Dの4文字のいずれも一致します。「[!A-D]」と指定した場合にはAからDまで以外のすべての文字と一致します。また、「[A-D H-J]」などのように半角スペースで区切ることで、複数の範囲指定を行うことも可能です。
なお、「[-HN]」などのように角かっこ内がハイフン(-)で開始されている、もしくは終了している場合には、ハイフンという文字と一致するかどうかという処理になることに注意してください。「?」のようなワイルドカード文字であっても、角かっこ内に騎亜視した場合にはその文字と一致するかどうかという判定になります。
たとえば、次の式は「商品名」フィールド値にアルファベットのa、b、x、y、zが含まれている場合に、文字列「Pink」を返します。から
{IIF(商品名 Like "*[a-b x-z]*", "Pink", 商品名)}
比較演算子の優先順位
複数の比較演算子が同じ式行にある場合、それらは左から右に計算されます。
&
:文字列を連結するために使用します。文字列以外の変数、または式に対して使用した場合、連結処理の前に文字列に変換されます。そのため、結果のデータ型はstring型です。
+
:文字列を連結するために使用することもできますが、加算演算子との見分けがつきにくくなるため連結演算子としての使用はお勧めしません。 以下は、これら2つの連結演算子の例です。
論理演算子の使用方法
論理演算子はブール値で使用されます。論理演算子には、And、Or、Not、Eqv、Imp、Xorが含まれます。
And
:両方のオペランドがTrueである場合はTrueを返します。オペランドの1つがFalseである場合、結果はFalseです。どちらかのオペランドがNullの場合、結果はNullです。
Not
:オペランドがTrueである場合はFalseを返します。オペランドがFalseの場合はTrueを返します。オペランドがNullの場合、Nullを返します。
Or
:いずれかのオペランド、もしくは両方のオペランドがTrueである場合はTrueを返します。両方のオペランドがTrueでない場合にのみ、結果はFalseになります。オペランドがNullの場合、結果もNullになります。
Xor
:オペランドの1つがTrueである場合はtrueを返します。両方のオペランドがTrueまたはFalseの場合は、Falseを返します。2つのオペランドの一方がNullの場合、Nullを返します。
AndAlso
:左のオペランドを評価し、Falseの場合は処理を停止してFalseを返します。それ以外の場合は、右のオペランドを評価し、Trueの場合はTrueを返します。
OrElse
:左のオペランドを評価し、Trueの場合は処理を停止してTrueを返します。それ以外の場合は、右のオペランドを評価し、Trueの場合はTrueを返します。 論理演算子の優先順位
論理演算子の優先順位は次のとおりです。
Not ― And ― Or ― Xor
同じ論理演算子が複数回使用されている場合、評価は左から右に実行されます。
ビット演算子は、バイナリデータに対してシフト演算を実行するために使用されます。
<<
:左のオペランドを、右のオペランドで指定されたビット分だけ左にシフトします。右側には0を埋めます。たとえば、4 << 2は、数値4のバイナリ形式(100)を2ビット左にシフトするため、2進数で10000(10進数で16)となります。
>>
:左のオペランドを、右のオペランドで指定されたビット分だけ右にシフトします。溢れたビットは破棄されます。たとえば、4 >> 2は1になります。 式に複数種の演算子が含まれている場合、優先順位は次のとおりです。
算術演算子 ― 連結演算子 ― 比較演算子 ― 論理演算子
括弧を使用することで優先順位を変更できます。括弧内の式は、常に括弧外の式よりも優先されます。
日付と時刻(DateAddなど)、数学(Absなど)、文字列、検査(IsArrayなど)、プログラムフロー(IIFなど)、集計(Sumなど)、変換(ToStringなど)、およびその他(Lookupなど)に分類されて表示されます。
具体的な使用方法については、共通の関数を参照してください。
目次(見出しマップ)の連番(ナンバリング形式の文字列部分)を出力するフィールドです。
テーマからフォント(フォント名、サイズ、スタイル、太さ)、色、定数、画像を出力するフィールドを提供します。
レポートでは、参照や計算を行うために他のコントロールの値が必要となる場合があります。そのような場合に、次の式を使用してコントロールの値を参照します。
{#TextBox1}
参照可能なレポートアイテムは、[レポートアイテム]の下に一覧が表示されます。
使用例:
名前がそれぞれ「TextBox6」と「TextBox14」であることがわかります。
注意:
レポートアイテムを参照する場合、同じグループまたは外側のグループのアイテムしか参照できません。例えば、Tableの中から外側のグループのアイテムを参照することは出来ますが、Tableの中のアイテムを外側のグループから参照することは出来ません。また、ページもグループで管理されるため別のページのアイテムを参照することは出来ません。