GrapeCity ActiveReports for .NET 16.0J
共通の関数
ActiveReportsユーザーガイド > 概念 > ページレポート/RDLレポートの概念 > > 共通の関数

データ領域のコントロールやグループ、データセット内でデータを操作するために、式に関数を使用することができます。これらの関数は[式エディタ]ダイアログで確認できます。式を設定できるプロパティについて、[プロパティ]ウィンドウのドロップダウンから<式...>を選択するとダイアログが表示されます。

[式エディタ]ダイアログでは、設定可能なフィールドがツリービュー形式で表示されています。[共通の関数]ノードを展開すると使用できる関数が表示されます。次の表は、式に設定できる関数の一覧です。

日付と時刻

以下のメソッドは、全て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*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")

CrossAggregate 指定された行と列のクロスで、指定された式を引数として指定された関数を計算します。

CrossAggregate(<Expression>, <FunctionName>, <ColumnGroupName>, <RowGroupName>)

=CrossAggregate(Fields!Count.Value, "Sum", "MonthGroup", "ProductGroup")

CumulativeTotal

式に返された現在と以前のページのグループ内の集計を表示します。
※集計対象のグループは、ページ(FixedLayoutオブジェクト)のGroupingプロパティでグループ化したものが対象となります。

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())
カスタム関数(コードタブを貼り付けます)
コードのコピー
この関数はコードタブ内に追加します。

Public Function DisplayAccountID( flds as Object) as Object

  If flds("FieldType").Value = "ParentAccount" Then

    Return flds("AccountID").Value

  Else

    Return flds("ParentAccountID").Value

  End If

End Function

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)

GroupIndex 現在のグループ内の要素のインデックスを返します。 =GroupIndex()
GroupIndex(スコープ) 指定されたグループ内の要素のインデックスを返します。 =GroupIndex(<Group>)

スコープ

CumulativeTotalを除くすべての関数には、集計の対象となるスコープがあります。スコープで、その関数の集計の対象とするグループやデータ領域、データセットを決定します。
スコープパラメータを指定しない場合(デフォルト)、スコープはレポートのコントロールが属する最も内側のグループになります。
スコープパラメータを指定する場合、パラメータには別のグループやデータセット、データ領域の名前を指定できます。ただし、スコープパラメータには、関数を設定するレポートコントロールよりも外側のグループしか指定できません。

関連トピック