データ領域のコントロールやグループ、データセット内でデータを操作するために、式に関数を使用することができます。これらの関数は[式エディタ]ダイアログで確認できます。式を設定できるプロパティについて、[プロパティ]ウィンドウのドロップダウンから<式...>を選択するとダイアログが表示されます。
[式エディタ]ダイアログでは、設定可能なフィールドがツリービュー形式で表示されています。[共通の関数]ノードを展開すると使用できる関数が表示されます。次の表は、式に設定できる関数の一覧です。
日付と時刻
以下のメソッドは、全てVisual BasicのDateAndTimeクラスのメソッドと同じメソッドです。詳細については、MSDNの「DateAndTime クラス」を参照してください。
関数 | 説明 | 構文と例 |
---|---|---|
DateAdd | 指定された時間間隔を加算した日付と時刻を含む値を返します。 |
DateAdd(<DateInterval>,<Number>,<DateTime>) =DateAdd("d", 5, Fields!SaleDate.Value); =DateAdd(DateInterval.Day, 5, Fields!SaleDate.Value) |
DateDiff | 2つの日時の間隔を返します。 |
DateDiff(<DateInterval>,<DateTime1>,<DateTime2>[,<DayOfWeek>[,WeekOfYear]])) =DateDiff("yyyy"), Fields!SaleDate.Value,"1/1/2015");=DateDiff(DateInterval.Year,Fields!SaleDate.Value,"1/1/2015") |
DatePart | 指定された日付の指定された部分を表す整数値を返します。 |
DatePart(<DateInterval>,<DateTime1>[,<FirstDayOfWeek>[,FirstWeekOfYear]])) =DatePart("m", Fields!SaleDate.Value) |
DateSerial | 指定された年、月、日を表す日付値を返し、時刻情報は午前 0 時 (00:00:00) に設定されます。 |
DateSerial(<Year Number>,<Month Number>,<Day Number>) =DateSerial(DatePart("yyyy", Fields!SaleDate.Value)-10, DatePart("m", Fields!SaleDate.Value)+5, DatePart("d", Fields!SaleDate.Value)-1) |
DateString | システムの現在の日付を表す文字列値を返します。 |
DateString() =DateString() |
DateValue | 文字列で表した日付情報を含む日付値を返します。時刻情報は午前 0 時 (00:00:00) に設定されます。 |
DateValue(<StringDate>) =DateValue("December 12, 2015") |
Now | システムに従った現在の日付と時刻を返します。 |
Now() =Now() |
Today | システムに従った現在の日付を含む日付値を返します。 |
Today() =Today() |
Day | 日付を表す1から31の整数値を返します。 |
Day(<DateTime>) =Day(Fields!SaleDate.Value) |
Hour | 時刻を表す0から23の整数値を返します。 |
Hour(<DateTime>) =Hour(Fields!SaleDate.Value) |
Minute | 時間の分を表す0から59の範囲の整数値を返します。 |
Minute(<DateTime>) =Minute(Fields!SaleDate.Value) |
Month | 年の月を表す0から12の整数値を返します。 |
Month(<DateTime>) =Month(Fields!SaleDate.Value) |
MonthName | 指定した月を示す文字列を返します。 |
MonthName(<Month Number>[,<Abbreviate>]) =MonthName(Fields!SaleDate.Value) |
Second | 時刻の秒を表す0から59の整数を返します。 |
Second(<DateTime>) =Second(Fields!SaleDate.Value) |
TimeSerial | 1年1月1日を基準に設定された日付情報を使用して、指定された時、分、秒を表す日付値を返します。 |
TimeSerial(<Hour Number>, <Minute Number>, <Second Number>) =TimeSerial(DatePart("h", Fields!SaleDate.Value), DatePart("n", Fields!SaleDate.Value), DatePart("s", Fields!SalesDate.Value)) |
TimeValue | 1年1月1日を基準に設定された日付情報を使用して、指定された時、分、秒を表す日付値を返します。 |
TimeValue(<StringTime>) =TimeValue("15:25:45"); TimeValue(Fields!SaleDate.Value) |
TimeOfDay | システムに従った現在の日付と時刻を含む日付型の値を返します。 |
TimeOfDay() =TimeOfDay() |
Timer | 午前0時から経過した秒数を表す倍精度浮動小数点数型(Double)の値を返します。 |
Timer() =Timer() |
TimeString | システムの現在の時刻を表す文字列値を返します。 |
TimeString() =TimeString() |
Weekday | 曜日を表す数値を含む整数値を返します。 |
Weekday(<DateTime[,<DayOfWeek>]) =Weekday(Fields!SaleDate.Value,0) |
WeekdayName | 指定された曜日の名前を含んでいる文字列値を返します。 |
WeekdayName(<WeekDay>[,<Abbreviate[, <FirstDayOfWeek>]]) =WeekdayName(3, True, 0); =WeekDayName("w", Fields!SaleDate.Value), True, 0) |
Year | 年を表す1から9999の整数値を返します。 |
Year(<DateTime>) =Year(Fields!SaleDate.Value) |
Quarter | 四半期を表す1〜4までの数値を返します。 |
Quarter(<DateTime>) =Quarter(Fields!SaleDate.Value) |
QuarterName | 四半期名を表す文字列値(Q1〜Q4)を返します。 |
QuarterName(<DateTime>) =QuarterName(Fields!SaleDate.Value) |
数学
以下のメソッドは、全てSystem.Mathクラスのメソッドと同じメソッドです。詳細については、MSDNの「Math クラス」を参照してください。
関数 | 説明 | 構文と例 |
---|---|---|
Abs | 指定した値の絶対値を返します。 |
Abs(<Number>) =Abs(-5.5);=Abs(Fields!YearlyIncome.Value-80000) |
Acos | 数値の逆余弦を返します。 |
Acos(<Number>) =Acos(.5); =Acos(Fields!Angle.Value) |
Asin | 数値の逆正弦を返します。 |
Asin(<Number>) =Asin(.5); =Asin(Fields!Angle.Value) |
Atan | 数値の逆正接を返します。 |
Atan(<Number>) =Atan(.5); =Atan(Fields!Angle.Value) |
Atan2 | XおよびY座標から逆正接を返します。 |
Atan2(<Number1>,<Number2>) =Atan2(3,7); =Atan2(Fields!CoordinateY.Value,Fields!CoordinateX.Value) |
BigMul | 2つの32ビット数値の完全な積を生成します。 |
BigMul(<Number1>,<Number2>) =BigMul(4294967295,-2147483647); =BigMul(Fields!Int32Value.Value, Fields!Int32Value.Value) |
Ceiling | 指定した数以上の数のうち、最小の整数値を返します。 |
Ceiling(<Number>) =Ceiling(98.4331); =Ceiling(Fields!AnnualSales.Value /6) |
Cos | 指定された角度のコサインを返します。 |
Cos(<Number>) =Cos(60) |
Cosh | 指定された角度のハイパーボリック コサインを返します。 |
Cosh(<Number>) =Cosh(60) |
E | Eの値である2.71828182845905を返します。 |
E =E*2 |
Exp | 指定した値でeを累乗した値を返します。 |
Exp(<Number>) =Exp(3); =Exp(Fields!IntegerCounter.Value) |
Fix | 数値の整数部分を返します。 |
Fix(<Number>) =Fix(-7.15); =Fix(Fields!AnnualSales.Value /-5) |
Floor | 指定した数以下の数のうち、最大の整数値を返します。 |
Floor(<Number>) =Floor(4.67); =Floor(Fields!AnnualSales.Value/ 12) |
IEEERemainder | 指定した数を別の指定数で除算した結果の剰余を返します。 |
IEEERemainder(<Number1>,<Number2>) =IEEERemainder(9,8) |
Log | 指定した数の対数を返します。 |
Log(<Number>) =Log(20.5); =Log(Fields!NunberValue.Value) |
Log10 | 10 を底とする数値の対数を返します。 |
Log10(<Number>) =Log10(20.5); =Log10(Fields!NumberValue.Value) |
Max | 指定された2つの数のうち、大きい方を返します。 |
Max(<Value>) =Max(Fields!OrderTotal.Value) |
Min | 2つの数のうち、小さい方を返します。 |
Min(<Value>) =Min(Fields!OrderTotal.Value) |
PI | 円周率πの近似値である数値3.14159265358979を返します。 |
PI =2 * PI * Fields!Radius.Value |
Pow | 指定の数値を指定した値で累乗した値を返します。 |
Pow(<Number1,<Number2>) =Pow(Fields!Quantity.Value, 2) |
Round | 最も近い整数または指定した小数点以下の桁数に値を丸めます。 |
Round(<Number>) =Round(12.456); =Round(Fields!AnnualSales.Value / 12.3) |
Sign | 8ビット符号付き整数の符号を示す整数を返します。 |
Sign(<Number>) =Sign(Fields!AnnualSales.Value-60000) |
Sin | 指定された角度のサインを返します。 |
Sin(<Number>) =Sin(60) |
Sinh | 指定された角度のハイパーボリック サインを返します。 |
Sinh(<Number>) =Sinh(60) |
Sqrt | 指定された数値の平方根を返します。 |
Sqrt(<Number>) =Sqrt(121) |
Tan | 指定された角度のタンジェントを返します。 |
Tan(<Number>) =Tan(60) |
Tanh | 指定された角度のハイパーボリック タンジェントを返します。 |
Tanh(<Number>) =Tanh(60) |
検査
以下のメソッドは、全てVisual BasicのInformationクラスのメソッドと同じメソッドです。詳細については、MSDNの「Information クラス」を参照してください。
関数 | 説明 | 構文と例 |
---|---|---|
IsArray | 変数が配列の場合はTrueを返します。 |
IsArray(<Expression>) =IsArray(Parameters!Initials.Value) |
IsDate | 式が日付であるか、有効な日付または時刻として認識可能な場合には rueを返します。 |
IsDate(<Expression>) =IsDate(Fields!BirthDate.Value); =IsDate("31/12/2010") |
IsDBNull | 式がnullに評価される場合はTrueを返します。 |
IsDBNull(<Expression>) =IsDBNull(Fields!MonthlySales.Value) |
IsError | 式の引数がエラーを示す場合にTrueを返します。 |
IsError(<Expression>) =IsError(Fields!AnnualSales.Value = 80000) |
Isnothing | 式にオブジェクトが割り当てられていない場合にTrueを返します。 |
IsNothing(<Expression>) =IsNothing(Fields!MiddleInitial.Value) |
IsNumeric | 式が数値として評価できる場合にTrueを返します。 |
IsNumeric(<Expression>) =IsNumeric(Fields!AnnualSales.Value) |
プログラムフロー
以下のメソッドは、全てVisual BasicのInteractionクラスのメソッドと同じメソッドです。詳細については、MSDNの「Interaction クラス」を参照してください。
関数 | 説明 | 構文と例 |
---|---|---|
Choose | 引数のリストから値を選択し、返します。 |
Choose(<Index>,<Value>[, <Value2>,...[, <Value N>]]) =Choose(3, "10", "15", "20", "25") |
IIF | 式がTrueの場合、特定の値を返します。Falseの場合、別の値を返します。 |
IIF(<Condition>, <TruePart>, <FalsePart>) =IIF(Fields!AnnualSales.Value >= 80000, "Above Average", "Below Average") |
Partition | ある数値が含まれる計算済み範囲を表す文字列を返します。 |
Partition(<Value>, <Start>, <End>, <Interval>) =Partition(1999, 1980, 2000, 10) |
Switch | 式のリストを評価し、リスト内で最初にObjectに評価された式に対応するTrue値を返します。 |
Switch(<Condition1>, <Value1>[, <Condition2>, <Value2>,...[,<ConditionN>, <ValueN>]]) =Switch(Fields!FirstName.Value = "Abraham", "Adria", Fields!FirstName.Value = "Charelotte", "Cherrie") |
集計
レポートコントロールに表示するデータを取得するために、式内に集計関数を使用することができます。ActiveReportsでは、RDL 2005(SQL Server 2005 におけるレポート定義言語)で定義されている集計関数といくつかの独自の拡張セットをサポートしています。これらの関数では、CumulativeTotalを除き、<スコープ>パラメータを追加することができます。
使用できる集計関数は以下の通りです。
関数 | 説明 | 構文と例 |
---|---|---|
AggregateIf | ブール式に基づいて、式によって返された値のデータプロバイダからカスタム集計を計算するかどうかを決定します。 |
AggregateIf(<Condition>, <AggregateFunction>, <AggregateArguments>) =AggregateIf(Fields!Discontinued.Value=True, Sum, Fields!InStock.Value) |
Avg | 式に返されたNullでない値の平均を計算します。 |
Avg(<Values>) =Avg(Fields!Cost.Value, Nothing) |
Count | 式に返されたNullでない値の数を計算します。 |
Count(<Values>) =Count(Fields!EmployeeID.Value, Nothing) |
CountDistinct | 式に返された、重複しない値の数を計算します。 |
CountDistinct(<Values>) =CountDistinct(Fields!ManagerID.Value, "Department") |
CountRows | 式に返された、スコープにある行数を計算します。 |
CountRows() =CountRows("Department") |
CumulativeTotal |
式に返された現在と以前のページのグループ内の集計を表示します。 1つ目のパラメータに集計対象のフィールド名、2つ目のパラメータには集計関数を指定します。なお、サポートしている集計関数は、Sum, DistinctSum, Avg, Min, Max, Count, CountDistinct, StDev, StDevP, Var, VarP, Median, Mode, ToArrayです。 |
CumulativeTotal(<Expression>, <Aggregate>) =CumulativeTotal(Fields!OrderID.Value, Count) |
DistinctSum | 式に返された、指定した列について重複を除いた行の値の合計を計算します。 |
DistinctSum(<Values>, <Value>) =DistinctSum(Fields!OrderID.Value, Fields!OrderFreight.Value, "Order") |
First | 式に返された最初の値を表示します。 |
First(<Values>) =First(Fields!ProductNumber.Value, "Category") |
Last | 式に返された最後の値を表示します。 |
Last(<Values>) =Last(Fields!ProductNumber.Value, "Category") |
Max | 式に返されたNullでない値の最大値を表示します。 |
Max(<Values>) =Max(Fields!OrderTotal.Value, "Year") |
Median | 式に返された値の中値である値を表示します。集計対象の値の内、半分はこの値より大きく、残りの半分はこの値より小さくなります。 |
Median(<Values>) =Median(Fields!OrderTotal.Value) |
Min | 式に返されたNullでない値の最小値を表示します。 |
Min(<Values>) =Min(Fields!OrderTotal.Value) |
Mode | 式に返された値の間、最も良く表示される値を表示します。 |
Mode(<Values>) =Mode(Fields!OrderTotal.Value) |
RunningValue | 指定した集計関数の実行中の集計結果を表示します。 |
RunningValue(<Values>, <AggregateFunction>) =RunningValue(Fields!Cost.Value, Sum, Nothing) |
StDev | 式に返されたNullでない値の母標準偏差を計算します。 |
StDev(<Values>) =StDev(Fields!LineTotal.Value, "Order") |
StDevP | 式に返されたNullでない値の母標準偏差を計算します。 |
StDevP(<Values>) =StDevP(Fields!LineTotal.Value, "Order") |
Sum | 式に返された、値の合計を計算します。 |
Sum(<Values>) =Sum(Fields!LineTotal.Value, "Order") |
Var | 式に返されたNullでない値の分散を計算します。 |
Var(<Values>) =Var(Fields!LineTotal.Value, "Order") |
VarP | 式に返されたNullでない値の母分散を計算します。 |
VarP(<Values>) =VarP(Fields!LineTotal.Value, "Order") |
変換
以下のメソッドは、全て.NETフレームワークのConvertクラスのメソッドと同じメソッドです。詳細については、MSDNの「Convert クラス」を参照してください。
関数 | 説明 | 構文と例 |
---|---|---|
ToBoolean | 指定した値を等価のブール値に変換します。 |
ToBoolean(<Value> =ToBoolean(Fields!HouseOwnerFlag.Value) |
ToByte | 指定した値を8ビット符号なし整数に変換します。 |
ToByte(<Value>) =ToByte(Fields!ProductNumber.Value) |
ToDateTime | 指定した値を等価の日付と時刻の値に変換します。 |
ToDateTime(<Value>) =ToDateTime(Fields!SaleDate.Value); =ToDateTime("1 January, 2017") |
ToDouble | 指定した値を倍精度浮動小数点数に変換します。 |
ToDouble(<Value>) =ToDouble(Fields!AnnualSales.Value); =ToDouble(535.85 * .2691 * 67483) |
ToInt16 | 指定した値を16ビット符号付き整数に変換します。 |
ToInt16(<Value>) =ToInt16(Fields!AnnualSales.Value); =ToInt16(535.85) |
ToInt32 | 指定した値を32ビット符号付き整数に変換します。 |
ToInt32(<Value>) =ToInt32(Fields!AnnualSales.Value) |
ToInt64 | 指定した値を64ビット符号付き整数に変換します。 |
ToInt64(<Value>) =ToInt64(Fields!AnnualSales.Value) |
ToSingle | 指定した値を単精度浮動小数点数に変換します。 |
ToSingle(<Value>) =ToSingle(Fields!AnnualSales.Value); =ToSingle(15.857692134) |
ToUInt16 | 指定した値を16ビット符号なし整数に変換します。 |
ToUInt16(<Value>) =ToUInt16(Fields!AnnualSales.Value) |
ToUInt32 | 指定した値を32ビット符号なし整数に変換します。 |
ToUInt32(<Value>) =ToUInt32(Fields!AnnualSales.Value) |
ToUInt64 | 指定した値を64ビット符号なし整数に変換します。 |
ToUInt64(<Value>) =ToUInt64(Fields!AnnualSales.Value) |
その他
ActiveReportsは、データを集計する以外にもいくつかの機能を提供しています。これらの関数とIIf関数と組み合わせることで、どのデータをどのように表示するかを指定することができます。
次の一連の関数のうち、最初の4つはRDL2005仕様にもとづいた関数です。GetFieldsは、RDLの仕様を拡張する独自の機能です。
関数 | 説明 | 構文と例 | ||||
---|---|---|---|---|---|---|
InScope | 現在の値が指定したスコープ内にあるかどうかを判定します。 | InScope(<Scope>) =InScope("Order") |
||||
Level | 再帰型階層の現在の深さのレベルを返します。 | Level() =Level() |
||||
Previous | 指定したスコープの1つ前の値を返します。 | Previous(<Value>) =Previous(Fields!OrderID.Value) |
||||
RowNumber | 式に返されたスコープ内の実行中の行数を表示します。 | RowNumber() =RowNumber() |
||||
GetFields |
Fieldsコレクションの現在の内容を格納しているIDictionary<string,Field>オブジェクトを返します。データ領域内で使用される場合にのみ有効です。この関数は、複雑な条件を扱うコードを書くことができます。GetFields()なしで同等の関数を記述するには、メソッドに照会されたフィールドの各値を渡すことが必要になり、多くのフィールドを参照する場合には著しく複雑な記述になる可能性があります。 |
GetFields() =Code.DisplayAccountID(GetFields())
|
||||
Lookup | 名前と値のペアを含むデータセットから、指定された名前に最初に一致した値を返します。 |
Lookup(<SourceExpression>, <DestinationExpression>, <ResultExpression>, <LookupDataset>) =Lookup(Fields!ProductID.Value, Fields!ProductID.Value, Fields!Quantity.Value, "DataSet2") |
||||
LookupSet | データセットに1 対多のリレーションシップが存在する場合、このデータセットから複数の値を返します。 |
LookupSet(source_expression, destination_expression, result_expression, dataset) =LookupSet(Fields!CategoryID.Value, Fields!CategoryID.Value, Fields!UnitsInStock.Value, "Products") |
||||
MapPoint | Map ポイントレイヤーを使用してMapに簡単なデータを直接表示することができます。 |
MapPoint(<Latitude>, <Longitude>) =MapPoint(Fields!Latitude.Value, Fields!Longitude.Value) |
CumulativeTotalを除くすべての関数には、集計の対象となるスコープがあります。スコープで、その関数の集計の対象とするグループやデータ領域、データセットを決定します。
スコープパラメータを指定しない場合(デフォルト)、スコープはレポートのコントロールが属する最も内側のグループになります。
スコープパラメータを指定する場合、パラメータには別のグループやデータセット、データ領域の名前を指定できます。ただし、スコープパラメータには、関数を設定するレポートコントロールよりも外側のグループしか指定できません。