Project Siena で関数を作成する

 

Project Siena では、このトピックで説明される演算子と関数を使用できます。

次の例で使用するデータの参照はすべて架空のものです。このリファレンスに付属するデータ サンプルはありません。

演算子

Project Siena は、次の演算子をサポートしています。

シンボル

演算子の型

構文

説明

( )

かっこ

Filter(T, A < 10)

(1 + 2) * 3

優先順位を適用し、より大きな式の中の部分式をまとめます

+

算術演算子

1 + 2

加算

-

2 - 1

減算と符号

*

2 * 3

乗算

/

2 / 3

除算

^

2 ^ 3

指数演算

%

20%

パーセント ("* 1/100" に等しい)

=

比較演算子

Price = 100

等しい

Price > 100

より大きい

>=

Price >= 100

以上

Price < 100

より小さい

<=

Price <= 100

以下

<> 

Price <> 100

等しくない

&

文字列の連結演算子

"hello" & " " & "world"

連結

&&

論理演算子

Price < 100 && slider!value = 20

論理積

||

Price < 100 || slider!value = 20

論理和

!

!(Price < 100)

論理否定

exactin

メンバーシップの演算子

gallery!Selected exactin SavedItems

コレクションまたはテーブルに属します

exactin

"Windows" exactin “To display windows in the Windows operating system...”

部分式の検査 (大文字と小文字の区別あり)

in

gallery!Selected in SavedItems

コレクションまたはテーブルに属します

in

"The" in "The keyboard and the monitor..."

部分式の検査 (大文字と小文字の区別なし)

@

あいまいさ解消演算子

MyTable[@fieldname]

フィールドのあいまいさ解消

[@MyTable]

グローバルあいまいさ解消

;

式の連鎖

Collect(T, A); Navigate(S1, "")

動作プロパティの関数の各呼び出しを区切ります

in および exactin 演算子

in および exactin 演算子を使用して、コレクションやインポートしたテーブルなどのデータ ソースの中で文字列を検索できます。in 演算子は大文字/小文字を区別せずに一致を識別し、exactin 演算子は大文字化が同一の場合にのみ、一致として識別します。

これらの演算子の働きの非常に単純な例として、以下のステップに従ってください。

  1. ボタンの OnSelect プロパティをこの関数に設定することにより、Instruments という小さなコレクションを作成し、F5 キーを押してから、次のボタンをクリックします。

    Collect(Instruments, “Violins”, “Trombones”, “Bongos”)

  2. Esc キーを押してデザイン ワークスペースに戻り、Alt-F を押し、[アプリのデータ] をクリックしてから [コレクション] をクリックします。

    作成したコレクションのプレビューが表示されます。

  3. ラベルの Text プロパティを次のような式に設定します。

    “Violins” in Instruments

    ラベルは “true” を表示して、コレクションに Violins という項目が含まれていることを示します。

  4. ラベルの Text プロパティを次のような式に設定します。

    “Trumpets” in Instruments

    ラベルは “false” を表示して、コレクションに Trumpets という項目が含まれていないことを示します。

  5. ラベルの Text プロパティを次のような式に設定します。

    “violins” exactin Instruments

    ラベルは “false” を表示して、コレクションに violins というすべて小文字の項目が含まれていないことを示します。

これらの演算子の動作を示すより複雑な例として、以下のステップに従ってください。

  1. 次の表に類似するようにデータをインポートするかデータの収集し、データ ソースに RevenueLedger という名前を付けます。

    製品

    Year

    Revenue

    Violins

    2014

    $28,000

    Violins

    2013

    $26,000

    ボンゴ

    2014

    $23,000

    Violins

    2012

    $21,000

    Trombones

    2014

    $21,000

    ボンゴ

    2013

    $19,000

    Trombones

    2013

    $17,000

    Trombones

    2012

    $15,000

    ボンゴ

    2012

    $14,000

  2. テキスト入力コントロールを追加し、SearchString という名前を付けます。

  3. し、その Items プロパティに以下の関数を設定します。

    Filter(RevenueLedger, SearchString!Text in Product)

  4. SearchString ボックスに “v” (引用符は含めない) を入力します。

    ギャラリーは、バイオリンに関する情報だけを表示します。

  5. ギャラリーの Items プロパティで inexactin に変更します。

    ギャラリーは空になります。コレクション内のどの項目も、SearchString ボックス内の小文字を含んでいないからです。

ギャラリー用の ThisItem 演算子 - CustomGallery など

カスタム ギャラリーはテーブルまたはコレクションにバインドできます。このコントロールは、ユーザー定義テンプレート (CustomGallery テンプレートに各種のコントロールを追加することにより、何を表示するかをユーザーが決定する) の十分なインスタンスを作成し、バインドされるテーブルやコレクションのすべての行を表示します。ThisItem 参照演算子を使用して、テンプレート インスタンスから個々のテンプレート インスタンスがバインドされた行を参照します。

たとえば、FirstName、LastName、Organization、および OfficeLocation 列が含まれている Employees テーブルにカスタム ギャラリーをバインドできます。さらに、それぞれの列の値を表示するために、4 つのラベルをギャラリー テンプレートに追加できます。この場合、ラベルのテキスト プロパティを次のように設定できます。

  • ThisItem!FirstName

  • ThisItem!LastName

  • ThisItem!Organization

  • ThisItem!OfficeLocation

入れ子になったギャラリーの場合、ThisItem は最も内側のギャラリーの項目を参照します。内側のギャラリーと外側のギャラリーの行フィールドが競合しないと仮定した場合は、非修飾フィールド (列) の名前を直接使用することもできます。これにより、内側のギャラリーのルールが外側のギャラリーの項目を参照できるようになります。

関数

Project Siena は、次の関数をサポートしています。Excel の関数を使用しているなら、これらの多くを知っていることでしょう。

注意

このトピックの構文セクションでは、斜体は汎用テキストを示し、使用しているアプリに固有の値と置き換えます。また、角かっこで囲まれているのはオプションの引数です。オプション引数の前にコンマが示されている場合、その引数を使用するときにはその前にコンマを含める必要があります。

カテゴリ別の関数

Boolean -- And、If、IsBlank、IsEmpty、Not、Or

コレクション -- Clear、Collect、LoadData、Remove、RemoveIf、SaveData

日付と時刻 -- Date、DateAdd、DateDiff、DateTimeValue、DateValue、Day、Hour、Minute、Month、Now、Second、時間、TimeValue、Today、Year

算術 -- Abs、Average、Max、Min、Rand、Round、RoundDown、RoundUp、Sqrt、StdevP、Sum、VarP

その他 -- ColorFade、ColorValue、Disable、Enable、Launch、Language、Navigate、更新、RGBA、 UpdateContext

文字列 -- Char、Concat、Concatenate、EncodeUrl、Find、 HashTags、Len、Left、Lower、PlainText、Proper、 Right、Substitute、テキスト、Trim、Upper、Value

テーブル -- AddColumns、Count、CountA、CountIf、 CountRows、Distinct、DropColumns、Filter、First、 FirstN、Last、LastN、LookUp、RenameColumns、 Replace、Sort、Shuffle、ShowColumns、テーブル、 Update、UpdateIf

Abs

構文

Abs(Number)

Abs(ColumnExpression)

説明

数値の絶対値、つまり、符号のない数字を返します。

  • Abs(Number) は、数値の絶対値を返します。

  • 1 列の数値のテーブルがある場合、Abs(ColumnExpression) はその数値に対応する絶対値が入った、列が 1 列のテーブルを返します。

Abs(-55) は 55 を返します。

たとえばテーブルに Trend という名前の列が含まれている場合、Trend 列のそれぞれの数値の絶対値を戻すには、結果列で Abs(Trend) を使用できます。

絶対値を計算する Abs 関数

AddColumns

構文

AddColumns(Table, Column1, Expression1[, Column2, Expression2, ...])

説明

指定した式を元の入力テーブルの行に照らして評価した結果を含む、1 行以上の列が追加されたテーブルを返します。

Sales テーブルがあり、そのテーブルに CostPerUnit 列と UnitsSold 列が含まれているとすると、これら 2 つの列に加えて、TotalSales という名前で、最初の 2 つの列の値の乗算結果を示す 3 番目の列が入った 2 番目のテーブルを作成できます。

AddColumns(Sales, "TotalSales", CostPerUnit * UnitsSold)

AddColumns が新しい列に計算された結果を配置します

注意

この関数は、元のテーブルを変更することはありません。

Employees テーブルがあり、そのテーブルに FirstName 列と LastName 列が含まれているとすると、これら 2 つの列に加えて、FullName という名前で、最初の 2 つの列の文字列の連結結果を示す 3 番目の列が入った 2 番目のテーブルを作成できます。

AddColumns(Employees, "FullName", FirstName & " " & LastName)

And

構文

And(LogicalExpression1[, LogicalExpression2, ...])

説明

1 つ以上のブール値または部分式がすべて true かどうかを判別します。(インライン && 演算子と同じ結果になります。)

次の関数は、スライダーの値が 50 と 100 の間にあるかどうかを判別します。

And(Slider1!Value > 50, Slider1!Value < 100)

テーブルに Dept 列と Salary 列が含まれているとすると、結果列で次の関数を使用し、Dept 列の値が HR で、Salary 列の値が 200000 より大きいすべての行に True を示すことができます。

And(Dept = "HR", Salary > 200000)

すべての条件が True の場合、Add は True を返します

こうした関数で && 演算子を使用しても、前の例と同じ結果が戻ります。

Slider1!Value > 50 && Slider1!Value < 100

Dept = HR && Salary > 200000

Average

構文

Average(Table, Expression)

Average(Expression1[, Expression2, …])

説明

引数の平均 (算術平均) を返します。次のようなコンテキストでこの関数を使用できます。

  • テーブルで、この関数は指定した式の評価結果の数値の平均を返します。

  • 複数のスカラー数値入力、またはスカラー数値を評価する式がある場合、この関数はそれらの平均を返します。

CostPerUnit 列と UnitsSold 列が含まれている Sales テーブルがある場合、次の関数は平均売上を計算します。

Average(Sales, CostPerUnit * UnitsSold)

3 つのスライダーがある場合、次の関数はそれらの値の平均を計算します。

Average(Slider1!Value, Slider2!Value, Slider3!Value)

Char

構文

Char(Number)

説明

指定した値に基づいて、プラットフォームに応じた適切な ASCII 文字を返します。

使用例

Char(65) は次を返します。

A

Char(105) は次を返します。

i

Char(35) は次を返します。

#

Clear

構文

Clear(Collection)

説明

コレクションからすべての項目を消去し、空のコレクションを返します。

重要

この関数は基になるコレクションを変更します。

使用例

  1. Collect 関数の最初の例で説明されているように OrderHistory コレクションを作成します。

  2. ボタンを追加して、その Text プロパティを "Clear" に設定し、その OnSelect プロパティを以下の関数に設定します。

    Clear(OrderHistory)

  3. F5 キーを押し、[Clear] ボタンをクリックしてから、Esc キーを押してデザイン画面に戻ります。

コレクションが空であることを確認するため、コントロールでもボタンでもない場所を右クリックし、[アプリのデータ] をクリックしてから [コレクション] をクリックします。

別の例については、「」をご覧ください。

Collect

構文

Collect(CollectionName, Item1[, Item2,...])

説明

表、表内の列、または 1 つ以上の個々の項目をコレクションに追加します。指定したコレクションが存在しない場合、この関数はコレクションを作成して項目を追加します。

重要

この関数は基になるコレクションを変更します。

  • インポートされた表からコレクションを作成するには:

    1. ボタンを 1 つ追加し、その OnSelect プロパティに次の構文に従う関数を設定します。

      Collect(CollectionName,TableName)

    2. F5 キーを押し、ボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。

  • インポートされた表の列からコレクションを作成するには:

    1. ボタンを 1 つ追加し、その OnSelect プロパティに次の構文に従う関数を設定します。

      Collect(CollectionName,TableName!ColumnName)

    2. F5 キーを押し、ボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。

  • 楽器の名前のような、ハードコーディングされた値の単一列コレクションを作成するには:

    1. ボタンを 1 つ追加し、その OnSelect プロパティに以下の関数を設定します。

      Collect(Products, "violins", "trombones", "bongos")

    2. F5 キーを押し、ボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。

  • スライダーのような、コントロールの値から、単一列コレクションを作成するには:

    1. コントロールの OnChange プロパティを、次の構文に従う関数に設定します。

      Collect(CollectionName,ControlName!Value)

      たとえば、OnChange プロパティを次の関数に設定すると、SalaryPercent というスライダーの値から、Contribution401K というコレクションを作成できます。

      Collect(Contribution401K, SalaryPercent!Value)

    2. F5 キーを押し、スライダー ボタンを別の値にドラッグしてから、Esc キーを押します。

      注意

      スライダー ボタンをある値にドラッグしてから別の値にドラッグすると、コレクションには両方の値が含まれることになります。最新の値だけを保持する場合には、先に Collect 関数を Clear(CollectionName) と共に使用し、セミコロンでそれらの関数を分離します。

  • 3 つのスライダーなど、同じ型の複数のコントロールの値から、単一列コレクションを作成するには:

    1. 複数のコントロールと 1 つのボタンを追加してから、ボタンの OnSelect プロパティを、次の構文に従う関数に設定します。

      Collect(CollectionName,ControlName1!Value,ControlName2!Value,ControlNameN!Value)

      たとえば、Contributions というコレクションを、Percent401KPercentStockPercentCharity というスライダーの値から作成できます。そのためには、ボタンの OnChange プロパティを次の関数に設定します。

      Collect(Contributions, Percent401K!Value, PercentStock!Value, PercentCharity!Value)

    2. F5 キーを押し、各スライダー ボタンを異なる値にドラッグし、ボタンをクリックしてから、Esc キーを押します。

  • 手動で入力したデータから、複数の列を持つコレクションを作成するには、以下のようにします。

    1. ProductQuantity という 2 つのテキスト入力コントロールを追加します。

    2. ボタンを追加して、その Text プロパティを "Collect" に設定し、その OnSelect プロパティを以下の関数に設定します。

      Collect(OrderHistory, {Products:Product!Text, Quantities:Quantity!Text})

    3. F5 キーを押し、各テキスト入力コントロールにテキストを入力してから、[Collect] ボタンをクリックします。

    4. 前述のステップを 2 ~ 3 回繰り返し、その都度異なる情報を入力します。それから、Esc キーを押してデザイン画面に戻ります。

  • コレクションが作成されたことを確認するには、Alt-F キーを押し、[アプリのデータ] をクリックしてから、[コレクション] をクリックします。

  • コレクションをアプリに表示するには、します。

    ユーザー設定ギャラリーにサンプル コレクションを表示します
  • コレクションから 1 つまたはすべての項目を削除するには、このトピックの Remove 関数と Clear 関数を参照してください。

  • アプリを閉じた後で使えるようにコレクションを保存し、後でアプリを再び開くときにそのデータを読み込むには、このトピックの SaveData 関数と LoadData 関数を参照してください。

ColorFade

構文

ColorFade(Color, FadeDelta)

説明

-1 から 1 の範囲 (両端を含む) のフェード デルタに基づいて、色のフェード バージョンを返します。

ColorFade(Color!AliceBlue, -1)

ColorFade(Color!DarkBlue, 1)

ColorFade(RGBA(255, 255, 255, 1), 1)

ColorValue

構文

ColorValue(ColorText)

説明

CSS (カスケード スタイル シート) のカラー文字列に対応する色の値を返します。

ColorValue("Blue")

ColorValue("Fuschia")

Concat

構文

Concat(CollectionName, Expression)

説明

指定のデータ ソースで指定した列のすべての文字列を連結します。コレクション内のデータまたは、たとえば、Excel あるいは SharePoint リストからインポートしたデータを連結できます。

1.ボタンを 1 つ追加し、その OnSelect プロパティに以下の関数を設定します。

Collect(Products, {String:"Violin", Wind:"Trombone", Percussion:"Bongos"}, {String:"Cello", Wind:"Trumpet", Percussion:"Tambourine"})

2.F5 キーを押し、ボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。

3.ラベルを追加し、その [テキスト] プロパティを以下の関数に設定します。

Concat(Products, String & " ")

ラベルは「Violin Cello」を表示します。

Concatenate

構文

Concatenate(Text1[, Text2, ...])

Concatenate(ColumnExpression1[, ColumnExpression2, ...])

説明

複数のテキスト文字列を結合して 1 つの文字列にします。または、テキストを返すがテーブルの別々の列に表示される、複数の式の出力を連結し、連結されたテキストを独自の列に返します。

AuthorName という名前の入力テキスト コントロールを作成した場合、次の関数は、ユーザーがコントロールに入力したテキストの前に "By" を付加します。

Concatenate("By ", AuthorName!Text)

FirstName 列と LastName 列が含まれている Employees テーブルがある場合、次の関数は、それらの列の各行にあるデータを連結します。

Concatenate(Employees!FirstName, " ", Employees!LastName)

Count

構文

Count(Column)

説明

数値だけが入っているテーブルの列のセルを数えます。

使用例

  1. Collect 関数の最初の例の説明に従ってコレクションを作成します。ただし、ボタンの OnSelect プロパティを以下の関数に設定します。

    Collect(OrderHistory, {Products:Product!Text, Quantities:Value(Quantity!Text)})

  2. ユーザー設定ギャラリーの Items プロパティを OrderHistory に設定することにより、コレクションをギャラリーに表示します。

    「」を参照してください。

  3. ギャラリーの外側にラベルを追加し、その Text プロパティを以下の関数に設定します。

    Count(Value(OrderHistory!Quantities))

CountA

構文

CountA(Column)

説明

あるテーブルの列で、空ではないセルの数を数えます。この関数では、カウントにエラーの値および空のテキスト ("") も含みます。

使用例

  1. Collect 関数の最初の例で説明されているように OrderHistory コレクションを作成します。

  2. ラベルを追加してから、その Text プロパティを以下の関数に設定します。

    CountA(OrderHistory!Products)

    コレクションに入っている製品の数がラベルに表示されます。

CountIf

構文

CountIf(Table, Expression)

説明

テーブル内で、指定された条件を満たす行を数えます。

使用例

Salary という名前の列が含まれている Employees という名前のテーブルがある場合、次の関数は給与が 100,000 を超える社員の数を数えます。

CountIf(Employees, Salary > 100000)

CountRows

構文

CountRows(Table)

説明

テーブル内の行を数えます。

使用例

Employees という名前のテーブルがある場合、次の関数はそのテーブル内の行数を数えます。

CountRows(Employees)

Date

構文

Date(Year, Month, Day)

説明

指定した日付を表す、連続した通し番号を返します。DateValue 関数を使用して日付表示をカスタマイズできます。

  • Year

    • Year」が 0 以上 1899 以下の場合、関数はその値を 1900 に加えて年を計算します。

    • Year」が 1900 以上 9999 以下の場合、関数はその値を年として使用します。

    • Year」が 0 未満、または 10000 より大きい場合、関数はエラー値を返します。

  • Month

    • Month」が 12 より大きい場合、関数は指定した年の最初の月に、その月数を加えます。

    • Month」が 1 未満の場合、関数は指定した年の最初の月から、その月数だけ差し引きます。

  • Day

    • Day」が指定した月の日数よりも大きい場合、関数は月の最初の日にその日数分を加え、翌月の該当する日付を返します。

    • Day」が 1 未満の場合、関数は指定した月の最初の日から、その日数だけ差し引きます。

使用例

ユーザーが、HireYear という名前の入力テキスト コントロールに 1979、HireMonth という名前の入力テキスト コントロールに 3、HireDay という名前の入力テキスト コントロールに 17 を入力した場合、この関数は 3/17/1979 を返します。

Date(Value(HireYear!Text), Value(HireMonth!Text), Value(HireDay!Text))

DateAdd

構文

DateAdd(Date, NumberOfUnits[, Units])

説明

指定された日付に指定された数の時間単位 (日、四半期、月、または年) を足した日付を返します。最初の引数は元の日付を指定し、2 番目の引数は加算する時間単位の数を指定します。既定では、この関数は Days を加算しますが、3 番目の省略可能な引数を使用して、元の日付に MonthsQuarters、または Years を加算できます。

今日の日付が 7/15/2013 の場合:

  • DateAdd(Now(), 3) は 7/18/2013 を返します。

  • DateAdd(Today(), 1, Days)DateAdd(Today(), 1) は、両方とも 7/16/2013 を返します。

  • DateAdd(Today(), 1, Months) は 8/15/2013 を返します。

DateDiff

構文

DateDiff(StartDate, EndDate[, Units])

説明

2 つの日付の差を返します。既定では、この関数は結果を Days で返しますが、3 番目の省略可能な引数を指定して結果を YearsQuarters、または Months で返すことができます。

今日の日付が 7/15/2013 の場合:

DateDiff(Now(), 1/1/2014)DateDiff(Now(), 1/1/2014, Days) は、両方とも 170 日を返します。

DateDiff(Now(), 1/1/2014, Months) は 6 か月を返します。

DateTimeValue

構文

DateTimeValue(DateTimeText)

DateTimeValue (DateTimeText, "LanguageCode")

説明

日付と時刻のテキスト表現を、2 つの日付の比較などの算術演算または Boolean 演算を実行できる値に変換します。また、スラッシュで区切られた日付が MM/DD/YYYY や DD/MM/YYYY のように、適切に解釈されるよう、言語コードを指定することもできます。

Start というテキスト入力コントロールに「10/11/2014 1:50:24.765 PM」と入力し、ラベルの Text プロパティを次の関数に設定した場合:

  • Text(DateTimeValue(Start!Text), DateTimeFormat!LongDateTime)

    コンピューターのロケールが "en" に設定されていた場合には、ラベルは「Saturday, October 11, 2014 1:50:24 PM」を表示します。

    DateTimeFormat パラメーターでは、LongDateTime 以外にいくつかのオプションを使用できます。これらのオプションの一覧を表示するには、パラメーターの直後に感嘆符を付けて関数のボックスに入力します。

  • Text(DateTimeValue(Start!Text, "fr"), DateTimeFormat!LongDateTime)

    ラベルは「Monday, November 10, 2014 1:50:24 PM」を表示します。

  • Text(DateTimeValue(Start!Text), "dddd, mmmm dd, yyyy hh:mm:ss.fff AM/PM")

    コンピューターのロケールが "en" に設定されていた場合には、ラベルは「Saturday, October 11, 2014 01:50:24:765 PM」を表示します。

    または、hh:mm:ss.f または hh:mm:ss.ff を指定して、時刻を少数第 2 位または小数第 3 位で四捨五入することもできます。

DateValue

構文

DateValue(DateText)

DateValue (DateText, "LanguageCode")

説明

日付のテキスト表現を、2 つの日付の比較などの算術演算または Boolean 演算を実行できる値に変換します。ソース データは、次のいずれかのパターンに従っている必要があります。

  • MM/DD/YYYY

  • DD/MM/YYYY

  • DD Mon YYYY

  • Month DD, YYYY

また、スラッシュで区切られた日付が MM/DD/YYYY や DD/MM/YYYY のように、適切に解釈されるよう、言語コードを指定することもできます。

Startdate というテキスト入力コントロールに「10/11/2014」と入力し、ラベルの Text プロパティを次の関数に設定した場合:

  • Text(DateValue(Startdate!Text), DateTimeFormat!LongDate)

    コンピューターのロケールが "en" に設定されていた場合には、ラベルは「Saturday, October 11, 2014」を表示します。

    DateTimeFormat パラメーターでは、LongDateTime 以外にいくつかのオプションを使用できます。これらのオプションの一覧を表示するには、パラメーターの直後に感嘆符を付けて関数のボックスに入力します。

  • Text(DateValue(Startdate!Text, "fr"), DateTimeFormat!LongDate)

    ラベルは「Monday, November 10, 2014」を表示します。

2014 年 10 月 20 日に同じことをした場合:

  • DateDiff(DateValue(Startdate!Text), Today())

    コンピューターが en 言語コードに設定されていた場合、ラベルは 9 を表示します。これは 10 月 11 日と 10 月 20 日の間の日数を示しています。また、DateDiff は月数、四半期数、年数で差を示すこともできます。

Day

構文

Day(DateTime)

説明

DateValue 関数の日を返します。戻り値の範囲は 1 ~ 31 です。

使用例

Text1 という名前の入力テキスト コントロールを追加した場合、ユーザーがそのコントロールに次のいずれかの文字列を入力すると、Day(DateValue(Text1!Text)) は、15 を返します。

07/15/2013

15 July 2013

July 15, 2013

Disable

構文

Disable(Signal)

説明

信号データ ソースを無効にして、アプリがそこから信号 (データ) をプルできないようにします。このリリースでサポートされている信号データ ソースは、位置だけです。

使用例

Disable(Location)

Distinct

構文

Distinct(Table, Expression)

説明

テーブルの 1 つ以上の列について式を評価し、式の評価で得られる異なる値を内容とする 1 列のテーブルを返します。

使用例

Department 列が含まれている Employees テーブルがある場合、次の関数はその列にある各部門の一意の名前を一覧表示します。個々の名前がその列に出現する回数は問題ではありません。

Distinct(Employees, Department)

DropColumns

構文

DropColumns(Table, Column1[, Column2, …])

説明

指定したテーブルに基づくが、指定した列を含まないテーブルを返します。

使用例

FirstName 列、LastName 列、および Address 列が含まれている Employees テーブルがある場合、次の関数はこれらの列を含まないという点だけが異なる同じテーブルを返します。

DropColumns(Employees, "FirstName", "LastName", "Address")

Enable

構文

Enable(Signal)

説明

信号データ ソースを有効にして、アプリがそこからデータ (信号) をプルできるようにします。このリリースでサポートされている信号データ ソースは、位置だけです。

使用例

Enable(Location)

EncodeUrl

構文

EncodeUrl(Text)

説明

URL を表す文字列内にある英数字以外の文字のすべてのインスタンスをエンコードします。たとえば、「差出人:」、「宛先:」、「件名:」、「本文:」フィールドを含む文字列をマージしてメール リンクを作成するために、この関数を使用できます。

使用例

EncodeUrl("'http://example/page/url.aspx") は次を返します。

%27http%3A%2F%2Fexample%2Fpage%2Furl.aspx

Filter

構文

Filter(Table, Condition1[, Condition2, ...])

説明

指定した条件を満たす、指定したテーブル内の行を返します。既定では、複数の条件を指定した場合は、And (つまり、&&) 結合が使用されます。

使用例

Salary 列が含まれている Employees テーブルがある場合、次の関数は給与が 100,000 を超える社員を識別します。

Filter(Employees, Salary > 100000)

この関数の使用方法について詳しくは、「」をご覧ください。

Find

構文

Find(FindText, WithinText[, StartNum])

説明

1 つの文字列が別の文字列内で最初に出現する位置を識別します。最初の引数は、別の文字列内で検索する対象の文字列を指定します。2 番目の引数は、検索するための文字列を指定します。3 番目の省略可能な引数を含めることによって、検索している文字列内の特定の位置より前のインスタンスをすべて無視できます。この関数は大文字と小文字を区別し、検索している文字列内に検索対象の文字列が出現しない場合は、何も返しません。

使用例

Find("me", "time") は、"time" 内の 3 文字目から "me" が出現するため、3 を返します。

Find("my", "time") は、"time" 内のどこにも "my" が出現しないため、何も返しません。

Find("in", "Honorificabilitudinitatibus", 4) は 18 を返します。

Find("in", "Honorificabilitudinitatibus", 19) は、18 文字目より後で一致が見つからなかったため、何も返しません。

First

構文

First(Table)

説明

指定したテーブルの最初の行を返します。

使用例

Employees テーブルがある場合、次の関数はそのテーブルの最初の行を返します。

First(Employees)

FirstN

構文

FirstN(Table[, NumRows])

説明

指定したテーブルの最初から指定した分の行数を返します。NumRows 引数はオプションです。指定しない場合は、最初の行だけが返されます。

使用例

Employees テーブルがある場合、この関数はそのテーブルの最初の 10 行を返します。

FirstN(Employees, 10)

HashTags

構文

HashTags(Text)

説明

ポンド記号 (#) で始まり、以下の種類の文字の任意の組み合わせを含むハッシュタグのリストを作成します。

  • 英大文字および小文字

  • 数字

  • 下線 (_)

  • 通貨記号 ($ など)

リストされるハッシュタグには、他の特殊文字は含められません。

使用例

  1. テキスト入力コントロールを追加し、それを Tweet と名付け、次の文をそれに入力します。

    This #app is #AMAZING and can #coUnt123 or #123abc but not #1-23 or #$*(#@")

  2. 縦方向のユーザー設定ギャラリーを追加し、その Items プロパティに以下の関数を設定します。

    HashTags(Tweet!Text)

  3. ギャラリー テンプレートにラベルを追加します。

    ラベルは以下のハッシュタグを表示します。

    • #app

    • #AMAZING

    • #coUnt123

    • #123abc

    • #1

Hour

構文

Hour(DateTime)

説明

指定された TimeValue の「時間」を、0 (12:00:00 A.M.) 以上 23 (11:00:00 P.M.) 以下の数字で返します。

使用例

EventTime という入力コントロールの Text プロパティを Hour(TimeValue(EventTime!Text)) に設定した場合、このコントロールに「10:20:30 PM」と入力すると、ラベルに 22 と表示されます。

If

構文

If(Condition1, Result1[, Condition2, Result2, ConditionN, ResultN, DefaultResult])

説明

一致した最初の条件に対応する結果を返します。いずれの条件も一致しない場合、Default 結果が返されます。文字列を結果として指定する場合は、その文字列を引用符で囲む必要があります。

手動で入力したデータでこの関数を使用するには、以下のようにします。

  1. 2 つのテキスト入力コントロールを追加し、それぞれに MyShare および YourShare という名前を付けます。

  2. ラベルを追加し、その Text プロパティを以下の関数に設定します。

    If(MyShare!Value + YourShare!Value < 100, "Not enough", MyShare!Value + YourShare!Value > 100, "Too much", "Just right")

    自分と友人で割り勘にした場合、スライダーのパーセンテージに従って各自が支払うと、間違いなく全額支払われたかどうかがラベルに示されます。

コレクションでこの関数を使用するには、以下のようにします。

  1. Collect 関数の最初の例に従ってコレクションを作成します。ただし、量が 5 未満のエントリを最低 1 つ設けます。

  2. ユーザー設定ギャラリーの Items プロパティを OrderHistory に設定することにより、コレクションをギャラリーに表示します。

    「」を参照してください。

  3. ギャラリー テンプレートにラベルを追加し、その Text プロパティを以下の関数に設定します。

    If(Value(ThisItem!Quantities) < 5, "Order more!")

    量が 5 未満の行だけにメッセージが表示されます。

IsBlank

構文

IsBlank(Expression)

説明

その式が空白 (値なし) と評価された場合は true を返し、それ以外の場合は、false を返します。たとえば、この関数を If 関数と組み合わせて使用することにより、ユーザーが必須フィールドを空白にした場合に通知を出すことができます。

使用例

オーダー フォームに Quantity というテキスト入力コントロールを作成し、ラベルを追加して Text プロパティを If(IsBlank(Quantity!Text), "Please add a quantity.") に設定すると、そのフォームで量を指定し忘れた場合に注意喚起がなされます。

IsEmpty

構文

IsEmpty(Source)

説明

テーブルまたはコレクションにデータが含まれているかどうかを識別します。

使用例

Employees という名前のテーブルにデータが含まれている場合、IsEmpty(Employees) は false を返し、それ以外の場合、この関数は true を返します。

Language

構文

Language()

説明

未公開のアプリの場合、優先する言語から現在アクティブな言語を返します。Project Siena が開いている間に優先する言語を変更した場合、変更がこの関数で反映されるようにするために、Project Siena を再起動する必要があります。

公開済みのアプリの場合、この関数は、公開される直前にアプリのブランド化に使用された言語を返します。

使用例

Language() は、構成に基づいて en-US などを返します。

Last

構文

Last(Table)

説明

指定したテーブルの最後の行を返します。

使用例

Employees という名前のテーブルがある場合、次の関数はそのテーブルの最後の行を返します。

Last(Employees)

LastN

構文

LastN(Table[, NumRows])

説明

テーブルの最後から指定した分の行数を返します。NumRows 引数はオプションです。指定しない場合、この関数は最後の行だけを返します。

使用例

Employees という名前のテーブルがある場合、次の関数はそのテーブルの最後の 15 行を返します。

LastN(Employees, 15)

Launch

構文

Launch(Hyperlink)

説明

指定したハイパーリンクに関連付けられたアプリを実行し、ハイパーリンクそのものを開きます。

使用例

Launch("http://www.bing.com")

別の例については、「Project Siena アプリで RSS フィードを表示する」を参照してください。

Left

構文

Left(Text, NumChars)

Left(ColumnExpression, NumericExpression)

説明

指定した文字列の最初から指定した数の文字を返します。

手動で入力したデータでこの関数を使用するには、以下のようにします。

  1. テキスト入力コントロールを追加し、PhoneNumber という名前を付けます。

  2. ラベルを追加し、その Text プロパティを以下の関数に設定します。

    Left(PhoneNumber!Text, 3)

    テキスト入力コントロールに 10 桁の数を入力すると、入力した数の上位 3 桁がラベルに表示されます。

コレクション内のデータでこの関数を使用するには、以下のようにします。

  1. Collect 関数の最初の例に従ってコレクションを作成します。ただし、各製品名の先頭にプレフィックスを付けます。

    たとえば、楽器の在庫リストを作る場合に、STR-Violins や PER-Bongoes などの製品名を使用できます。

  2. 「」の説明に従って、ユーザー設定ギャラリーにコレクションを表示します。

  3. ギャラリー テンプレートでラベルを追加し、その Text プロパティを以下の関数に設定します。

    Left(ThisItem!Products, 3)

    ギャラリー テンプレートに追加したラベルには、各製品名の先頭の 3 文字が表示されます。そのラベルを使用して、楽器のタイプや量などに基づいて並べ替えができるようになります。

Len

構文

Len(Text)

Len(ColumnExpression)

説明

  • Len(Text)
    ある文字列内の文字数を返します。

  • Len(ColumnExpression)
    1 列の文字列のテーブルがある場合、対応する文字列の長さが含まれる 1 列のテーブルを返します。

Password というテキスト入力コントロールに「F@V0riteBandName」と入力すると、Len(Password!Text) は 16 を返します。

LoadData

構文

LoadData(Collection, Filename)

説明

指定したファイルのデータを復号化し、指定したコレクションにそれを挿入します。アプリのローカル ストレージにアプリケーション データを保存したり、ローカル ストレージからアプリケーション データを読み出したりするには、この関数を SaveData 関数と共に使用します。

LoadData は非同期関数で、述語では使用できません。LoadData 自身はスキーマを提供しないため、LoadData の結果は既知のスキーマを持つコレクションにパイプすることをお勧めします。

使用例

  1. SaveData 関数の例に示されているステップを実行します。

  2. 画面の OnVisible プロパティを以下の関数に設定します。

    LoadData(OrderHistory, "SavedOrders")

  3. アプリを保存し、Project Siena を閉じてから、アプリを再び開き、データが保存されていることを確かめます。

別の例については、「」をご覧ください。

LookUp

構文

LookUp(Table, Condition, Expression)

説明

この関数は 3 つの引数をとります。テーブル、そのテーブルの各行について true か false かを評価する条件、そして式です。条件が true と評価される最初の行について、式が評価され、結果が返されます。

使用例

FirstName 列と LastName 列が含まれている Employees テーブルがある場合、次の関数は "John Smith" という名前の従業員の給与を返します。

LookUp(Employees, FirstName = "John" && LastName = "Smith", Salary)

Lower

構文

Lower(Text)

Lower(ColumnExpression)

説明

  • Lower(Text)
    指定したテキスト文字列の文字を小文字に変換します。

  • Lower(ColumnExpression)
    1 列の文字列値のテーブルがある場合、対応する小文字の値が入った 1 列のテーブルを返します。

ユーザーからのデータでこの関数を使用するには、以下のようにします。

  1. テキスト入力コントロールを追加し、Poetry という名前を付けます。

  2. ラベルを追加し、その Text プロパティを以下の関数に設定します。

    Lower(Poetry!Text)

    テキスト入力コントロールに「We Are The Best!」と入力すると、ラベルには "we are the best!" と表示されます。

コレクション内のデータでこの関数を使用するには、以下のようにします。

  1. Collect 関数の最初の例に従ってコレクションを作成します。ただし、1 つの製品に Trombone という名前を付けます。

  2. 「」の説明に従って、ユーザー設定ギャラリーにコレクションを表示します。

  3. ギャラリー テンプレートにラベルを追加し、その Text プロパティを以下の関数に設定します。

    Lower(ThisItem!Product)

    追加したラベルにすべての製品名がすべて小文字で表示されます。前に指定したエントリも "trombone" と表示されます。

Max

構文

Max(Table, Expression)

Max(Expression1[, Expression2, ...])

説明

引数の中の最大の値を返します。

CostPerUnit 列と UnitsSold 列が含まれている Sales テーブルがある場合、次の関数はそのテーブルの最高売上高を計算します。

Max(Sales, CostPerUnit * UnitsSold)

この関数は 3 つのスライダーの中の最大値を計算します。

Max(Slider1!Value, Slider2!Value, Slider3!Value)

Mid

構文

Mid(Text, StartPosition, NumChars)

Mid(TextColumn, StartPositions, NumChars)

説明

抽出対象の開始文字の位置と文字数を指定した場合に、文字列からの複数の文字を返します。この関数は文字列のテーブルに対して実行できます。

手動で入力したデータでこの関数を使用するには、以下のようにします。

  1. テキスト入力コントロールを追加し、PhoneNumber という名前を付けます。

  2. ラベルを追加し、その Text プロパティを以下の関数に設定します。

    Mid(PhoneNumber!Text, 3, 3)

  3. F5 キーを押し、テキスト入力コントロールに 10 桁の数を入力します。

    ラベルには指定した電話番号のプレフィックスが表示され、そのデータを基準に並べ替えなどができます。

コレクションでこの関数を使用するには、以下のようにします。

  1. Collect 関数の最初の例の説明に従ってコレクションを作成します。ただし、製品名は 7 文字以上にします。

  2. ユーザー設定ギャラリーの Items プロパティを OrderHistory に設定することにより、コレクションをギャラリーに表示します。

    「」を参照してください。

  3. ギャラリー テンプレートにラベルを追加し、ラベルの Text プロパティを以下の関数に設定します。

    Mid(ThisItem!Product, 4, 3)

    製品名の 4 文字目以降の 3 文字が切り出されて、ラベルに表示されます。

Min

構文

Min(Table, Expression)

Min(Expression1[, Expression2, …])

説明

引数の中の最小の値を返します。

CostPerUnit 列と UnitsSold 列が含まれている Sales テーブルがある場合、この関数はそのテーブルの最低売上高を計算します。

Min(Sales, CostPerUnit * UnitsSold)

この関数は 3 つのスライダーの中の最低値を計算します。

Min(Slider1!Value, Slider2!Value, Slider3!Value)

Minute

構文

Minute(DateTime)

説明

指定された TimeValue の「分」を、0 以上 59 以下の数字で返します。

使用例

EventTime という入力コントロールの Text プロパティを Minute(TimeValue(EventTime!Text)) に設定した場合、このコントロールに「10:20:30 PM」と入力すると、ラベルに 20 と表示されます。

Month

構文

Month(DateTime)

説明

指定された DateValue の「月」を、1 以上 12 以下の数字で返します。

使用例

関数 Month(DateValue("03/17/1979")) は 3 を返します。

構文

Navigate(TargetScreen, Animation[, Context])

説明

ビューを、指定したターゲット画面に変更します。サポートされている移行のアニメーションは ScreenTransition!Cover、ScreenTransition!UnCover、および ScreenTransition!Fade です。Context 引数を指定すると、状態/コンテキスト レコードをターゲット画面に渡すことができます。ターゲット画面ではそのレコードを使用して計算を導くことができます。ターゲット画面には、コンテキスト レコードのフィールドに対する非修飾アクセス権限があります。

重要

Context レコードをターゲット画面に渡す場合、このレコードの独自のコンテキストは変更される場合があります。

DetailView 画面がある場合、次の関数はその画面にフェード インして、ソースを文字列値 "Ravens" に設定する状態を渡します。

Navigate(DetailView, ScreenTransition!Fade, {source: "Ravens"})

DetailView 画面がある場合、次の関数はその画面にフェード インします。

Navigate(DetailView, ScreenTransition!Fade)

DetailView 画面がある場合、次の関数はその画面をアニメーションなしで表示します。

Navigate(DetailView, "")

Not

構文

Not(BooleanExpression)

説明

ブール式の論理否定を計算します。

使用例

次の関数はオプション ボタンが選択されていないことを確認します。

Not(RadioButton1!Selected)

Now

構文

Now()

説明

現在の日付と時刻を、デバイスのロケール固有の形式で返します。書式を設定するには、テキスト 関数を使用します。

使用例

今日が 2014 年 10 月 11 日、午後 3:25 ちょうどであり、ラベルのテキスト プロパティを Text(Now(), "mm/dd/yyyy hh:mm:ss.fff") に設定した場合、ラベルは「10/11/2014 3:25:00:000 PM」と表示します (コンピューターが en 言語コードに設定されていた場合)。コンピューターが fr 言語コードに設定されていた場合には、ラベルは「11/10/2014 3:25:00:000 PM」と表示します。

または、hh:mm:ss.f または hh:mm:ss.ff を指定して、時刻を少数第 2 位または小数第 3 位で四捨五入することもできます。

秒の小数部がアプリで重要でない場合、DateTimeFormat パラメーターを使用して、日付、時刻、またはその両方をいくつかの組み込み形式のいずれかで指定することができます。たとえば、この例の関数を Text(Now(), DateTimeFormat!ShortDateTime) で置き換えて、同じ結果からミリ秒を除いたものを取得することができます。このパラメーターのオプションの一覧を表示するには、パラメーターの直後に感嘆符を付けて関数のボックスに入力します。

Or

構文

Or(LogicalExpression1[, LogicalExpression2, ...])

説明

指定された式のいずれかが true であれば、true を返します。そうでない場合、false を返します。これに対して、And 関数は、指定されたすべての式が true の場合にのみ true を返します。

Or 関数は、インライン || 演算子を使用する場合と同じ結果になります。

次の関数を使用して、スライダーの値が 50 から 100 までの範囲外かどうかを判別できます。

Or(Slider1!Value < 50, Slider1!Value> 100)

テーブルに Dept 列と Salary 列が含まれているとすると、結果列で次の関数を使用し、Dept 列の値が HR であるか、Salary 列の値が 200000 より大きいすべての行に True を示すことができます。

Or(Dept = HR, Salary >= 200000)

代わりに || 演算子を使用して、前の関数が返すのと同じ結果を得ることもできます。

Slider1!Value < 50 || Slider1!Value> 100

Dept = "HR" || Salary > 200000

PlainText

構文

PlainText(TextWithTags)

説明

HTML タグや XML タグをテキストから取り除くか、またはそれらのタグを該当するシンボルに変換します。

テキスト ギャラリーを RSS フィードにバインドしてから、そのギャラリーの中のラベルの Text プロパティ (Data カテゴリ内) を ThisItem!description に設定した場合、ラベルは次の例のように、生の HTML コードまたは XML コードを表示します。

<p>We have done an unusually&nbsp;&quot;deep&quot; globalization and localization.<p>

ラベルの Text プロパティを PlainText(ThisItem!description) に設定した場合には、次の例のようにテキストが表示されます。

We have done an unusually "deep" globalization and localization.

Proper

構文

Proper(Text)

Proper(ColumnExpression)

説明

テキスト文字列の単語を適切な大文字小文字に変換します。つまり、各単語の最初の文字は大文字になり、他の文字は小文字になります。

  • Proper(Text)
    文字列を適切な大文字小文字に変換します。

  • Proper(Expression)
    文字列値を内容とする 1 列のテーブルがある場合、対応する適切な大文字小文字になった値が入った 1 列のテーブルを返します。

ユーザーからのデータでこの関数を使用するには、以下のようにします。

  1. テキスト入力コントロールを追加し、Slogan という名前を付けます。

  2. ラベルを追加し、その Text プロパティを以下の関数に設定します。

    Proper(Slogan!Text)

    テキスト入力コントロールに「WE ARE THE BEST!」と入力すると、ラベルには "We Are The Best!" と表示されます。

コレクション内のデータでこの関数を使用するには、以下のようにします。

  1. Collect 関数の最初の例に従ってコレクションを作成します。ただし、1 つの製品に TROMBONE という名前を付けます。

  2. 「」の説明に従って、ユーザー設定ギャラリーにコレクションを表示します。

  3. ギャラリー テンプレートにラベルを追加し、その Text プロパティを以下の関数に設定します。

    Proper(ThisItem!Product)

    追加したラベルにすべての製品名がすべて小文字で表示されます。前に指定したエントリも "Trombone" と表示されます。

Rand

構文

Rand()

説明

0 以上 1 未満の擬似乱数値を返します。

使用例

Rand() は 0.85116235、0.76728732、0.27591115 や、その他の 0 以上 1 未満の数値を返します。

更新

構文

Refresh(ServiceDataSource)

説明

アプリが最新の状態であるように、指定したデータ ソースのデータを最新表示します。

重要

この関数を使用して Excel の表からのデータを最新表示することはできません。Excel データを扱う方法の例については、Project Siena アプリで Excel のデータを表示する を参照してください。

使用例

rss_1 という名前の RSS フィードを追加した場合、Refresh(rss_1) はそのフィードを最新表示します。

Remove

構文

Remove(Collection, Record1[, Record2, ..., All])

Remove(Collection, Table[, All])

説明

コレクションから 1 行以上の行を削除します。コレクションは重複するレコードを持つことができるため、この関数は重複を削除するオプションの引数 All も受け入れます。

重要

この関数は基になるコレクションを変更します。

使用例

  1. Collect 関数の最初の例で説明されているように OrderHistory というコレクションを作成します。

  2. ギャラリーの Items プロパティを OrderHistory に設定することにより、OrderHistory コレクションをギャラリーに表示します。

    「」を参照してください。

  3. ギャラリー内のラベルの OnSelect プロパティを以下の関数に設定します。

    Remove(OrderHistory, ThisItem)

  4. F5 キーを押してからギャラリーの項目をクリックし、ギャラリーとコレクションからその項目を削除します。

RemoveIf

構文

RemoveIf(Collection, Condition1[, Condition2 ...])

説明

指定した条件を満たすすべての行をコレクションから削除し、変更されたコレクションを返します。

使用例

Price という名前のフィールドが含まれた ShoppingCart という名前のコレクションがある場合、次の関数は、価格が 200 を超えるすべての項目をコレクションから削除します。

RemoveIf(Cart, Price > 200)

RenameColumns

構文

RenameColumns(CollectionName, "OldName", "NewName")

説明

1 つの列の名前が異なること以外はデータ ソースと同じデータの一時テーブルを作成します。コレクション内の列または Excel や SharePoint リストなどからインポートしたデータの名前を変更できます。

1.ボタンを 1 つ追加し、その OnSelect プロパティに以下の関数を設定します。

Collect(Products, {String:"Violin", Wind:"Trombone", Percussion:"Bongos"}, {String:"Cello", Wind:"Trumpet", Percussion:"Tambourine"})

2.F5 キーを押し、ボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。

3.ユーザー設定ギャラリーを追加し、それに TableHolder という名前を付け、[項目] プロパティを以下の関数に設定します。

RenameColumns(Products, "String", "Strings")

4.2 つ目のボタンを追加し、その OnSelect プロパティを以下の関数に設定します。

Collect(Products2, TableHolder!AllItems)

5.F5 キーを押し、作成したボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。

6.Alt を押しながら F を押し、[アプリのデータ] をクリックし、次に [コレクション] をクリックします。

7.ProductsProducts2 という名前のコレクションがあり、Products に StringProducts2Strings という名前の列があることを確認します。

Replace

構文

Replace(Text, StartIndex, Count, NewText)

Replace(Column, StartIndex, Count, NewText)

説明

置換対象の開始文字の場所と文字数を指定して、テキスト文字列の一部を、別のテキスト文字列に置き換えます。この関数は文字列のテーブルに対して実行できます。

Replace("ABCDEFG", 3, 2, "X") は ABXEFG を返します。

RGBA

構文

RGBA(Red, Green, Blue, Alpha)

説明

指定した赤、緑、青、およびアルファ要素の色の値を返します。

使用例

次の関数ではラベルのフォント カラーをライト オレンジに設定できます。

RGBA(255, 127, 39, 1)

構文

Right(Text, NumChars)

Right(ColumnExpression, NumericExpression)

説明

指定した文字列の末尾から、指定した数の文字を返します。

使用例

Right("ABCDE", 4) は BCDE を返します。

Round

構文

Round(Number, DecimalPlaces)

Round(Column, DecimalPlaces)

説明

所定の数値を指定した小数部でまるめます。この関数は数値のテーブルに対して実行できます。

手動で入力したデータでこの関数を使用するには、以下のようにします。

  1. テキスト入力コントロールを追加し、Decimal という名前を付けます。

  2. ラベルを追加し、その Text プロパティを以下の関数に設定します。

  3. Round(Value(Decimal!Text), 2)

  4. テキスト入力コントロールに 10 進値 (.634 または .635 など) を入力し、ラベルに適切な値 (.63 または .64 など) が表示されることを確認します。

コレクションでこの関数を使用するには、以下のようにします。

  1. Collect 関数の最初の例の説明に従ってコレクションを作成し、それぞれの量に .634 または .635 などの 10 進値を指定します。

  2. ユーザー設定ギャラリーの Items プロパティを OrderHistory に設定することにより、コレクションをギャラリーに表示します。

    「」を参照してください。

  3. ギャラリー テンプレートにラベルを追加し、ラベルの Text プロパティを以下の関数に設定します。

    Round(Value(Quantities), 2)

    追加したラベルに適切な値が表示されます。

RoundDown

構文

RoundDown(Number, DecimalPlaces)

RoundDown(Column, DecimalPlaces)

説明

所定の数値を指定した小数部で切り捨てます。

使用例

RoundDown(23.54, 0) は 23 を返します。

RoundUp

構文

RoundUp(Number, DecimalPlaces)

RoundUp(Column, DecimalPlaces)

説明

所定の数値を指定した小数部で切り上げます。

使用例

RoundUp(23.44, 1) は 23.5 を返します。

SaveData

構文

SaveData(Collection, FileName)

説明

指定したコレクションのデータを暗号化し、指定したファイルにそれを保存します。このファイルはアプリ独自の保護された領域にあります。アプリのローカル ストレージにアプリケーション データを保存したり、ローカル ストレージからアプリケーション データを読み出したりするには、この関数を LoadData 関数と共に使用します。

SaveData は非同期関数で、Filter や CountIf の述語など、述語の中では使用できません。

使用例

  1. Collect 関数の最初の例で説明されているように OrderHistory コレクションを作成します。

  2. [Collect] ボタンの OnSelect プロパティを更新し、以下の関数を含めます。

    Collect(OrderHistory, {Products:Product!Text, Quantities:Quantity!Text});SaveData(OrderHistory, "SavedOrders")

  3. [Clear] ボタンを追加した場合、そのボタンの OnSelect プロパティを更新して、以下の関数を含めます。

    Clear(OrderHistory);SaveData(OrderHistory, "SavedOrders")

  4. ギャラリーを追加してユーザーがコレクションから特定の項目を削除できるようにした場合は、ラベルの OnSelect プロパティを更新して、次の関数を含めます。

    Remove(OrderHistory, ThisItem);SaveData(OrderHistory, "SavedOrders")

アプリを閉じてから再び開いた後など、そのデータをコレクションにまた読み込む方法については、このトピックの前のほうに記載されている LoadData 関数を参照してください。

別の例については、「」をご覧ください。

Second

構文

Second(DateTime)

説明

指定された TimeValue の「秒」を、0 以上 59 以下の数字で返します。

使用例

EventTime という入力コントロールの Text プロパティを Second(TimeValue(EventTime!Text)) に設定した場合、このコントロールに「10:20:30 PM」と入力すると、ラベルに 30 と表示されます。

ShowColumns

構文

ShowColumns(CollectionName, "Column1", "Column2"...)

説明

指定のデータ ソースから指定した列のみを含む一時テーブルを作成します。コレクションの列または、Excel や SharePoint リストなどからインポートしたデータを指定できます。

1.ボタンを 1 つ追加し、その OnSelect プロパティに以下の関数を設定します。

Collect(Products, {String:"Violin", Wind:"Trombone", Percussion:"Bongos"}, {String:"Cello", Wind:"Trumpet", Percussion:"Tambourine"})

2.F5 キーを押し、ボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。

3.ユーザー設定ギャラリーを追加し、それに TableHolder という名前を付け、[項目] プロパティを以下の関数に設定します。

ShowColumns(Products, "String", "Wind")

4.2 つ目のボタンを追加し、その OnSelect プロパティを以下の関数に設定します。

Collect(Products2, TableHolder!AllItems)

5.F5 キーを押し、作成したボタンをクリックしてから、Esc キーを押してデザイン ワークスペースに戻ります。

6.Alt を押しながら F を押し、[アプリのデータ] をクリックし、次に [コレクション] をクリックします。

7.ProductsProducts2 という名前のコレクションがあり、Products には 3 つすべての列があり、Products2 には最初の 2 列だけが含まれていることを確認します。

Shuffle

構文

Shuffle(Collection)

説明

所定のコレクションのコピーを、テーブルの行を無作為に並び替えて返します。

使用例

Deck という名前のコレクションにトランプの詳細を保管している場合、次の関数はそのコレクションをシャッフルします。

Shuffle(Deck)

Sort

構文

Sort(Table, Expression[, SortOrder!Descending])

説明

所定のテーブルの行を並び替えた上で、コレクションのコピーを返します。並び替えは、サポートされているいずれかの式の種類 (数値とそのサブタイプ、文字列とそのサブタイプ、ブール値) を評価する、指定した式の結果に基づいてなされます。この関数では、テーブルや行などの集約値に対する並べ替えはサポートされていません。また、この関数はテーブルを降順で並べ替えることを示すオプションの引数も受け入れます。

使用例

Salary 列が含まれている Employees テーブルがある場合、次の関数は、給与の高い従業員を上位に、低い従業員を下位に並べて一覧表示します。

Sort(Employees, Salary, SortOrder!Descending)

Sqrt

構文

Sqrt(Number)

Sqrt(ColumnExpression1)

説明

正の数の平方根を返します。この関数は数値のテーブルに対して実行できます。

手動で入力したデータでこの関数を使用するには、以下のようにします。

  1. テキスト入力コントロールを追加し、Source という名前を付けます。

  2. ラベルを追加し、その Text プロパティを以下の関数に設定します。

    Sqrt(Value(Source!Text))

  3. テキスト入力コントロールに数を入力し、入力した数の平方根がラベルに表示されることを確認します。

コレクションでこの関数を使用するには、以下のようにします。

  1. Collect 関数の最初の例で説明されているようにコレクションを作成します。

  2. ユーザー設定ギャラリーの Items プロパティを OrderHistory に設定することにより、コレクションをギャラリーに表示します。

    「」を参照してください。

  3. ギャラリー テンプレートにラベルを追加し、ラベルの Text プロパティを以下の関数に設定します。

    Sqrt(Value(Quantities))

    追加したラベルには、Quantity 列内の値の平方根が表示されます。

StdevP

構文

StdevP(Table, Expression)

StdevP(Expression1[,Expression2, ...])

説明

その引数の標準偏差を返します。

CostPerUnit 列と UnitsSold 列が含まれるだけでなく、各地域をそれぞれ別個の行にリストしている Sales テーブルがある場合、次の関数は地域ごとの売上の標準偏差を計算します。

StdevP(Sales, CostPerUnit * UnitsSold)

1 から 7 のスライダーに設定された値の標準偏差を計算するには:

StdevP(Slider1!Value, Slider2!Value, Slider3!Value, Slider4!Value, Slider5!Value, Slider6!Value, Slider7!Value)

Substitute

構文

Substitute(Text, OldText, NewText[,InstanceNum])

Substitute(TextColumn, OldTextColumn, NewTextColumn[, InstanceNumColumn])

説明

テキスト文字列の一部を別のテキスト文字列で置き換えます。オプションの 4 番目の引数を使用する場合は、何番目に一致したインスタンスを置換するかを、1 (1 は最初のインスタンスを意味します) から始まる数字で指定します。

使用例

次の関数は " & " を " and " で置き換えます。

Substitute(Text1!Text, " & ", " and ")

Sum

構文

Sum(Table, Expression)

Sum(Expression1[, Expression2, ...])

説明

指定した範囲について、引数の合計を返します。

CostPerUnit 列と UnitsSold 列が含まれている Sales という名前のテーブルがある場合、次の関数は売上の合計を計算します。

Sum(Sales, CostPerUnit * UnitsSold)

スライダー 1、2、および 3 に設定した値の合計を計算するには:

Sum(Slider1!Value, Slider2!Value, Slider3!Value)

テーブル

構文

Table({Column1:Row1, Column2:Row1...}, {Column1:Row2, Column2:Row2...})

説明

指定したデータを格納する一時テーブルを作成します。すべての行のすべての列にデータを指定する必要はありません。

  • リスト ボックスを追加し、[項目] プロパティを以下の関数に設定します。

    Table({Color:"red"}, {Color:"green"}, {Color:"blue"})

  • テキスト ギャラリーを追加し、その [項目] プロパティを以下の関数に設定します。

    Table({Item:"Violin123", Location:"France", Owner:"Fabrikam"}, {Item:"Violin456", Location:"Chile"})

    (省略可能) Heading1 ラベルの [テキスト] プロパティを ThisItem!Item に設定し、Subtitle1 ラベルの [テキスト] プロパティを ThisItem!Owner に設定し、Body1 ラベルの [テキスト] プロパティを ThisItem!Location に設定します。

テキスト

構文

Text(Value, Format)

説明

ある値を、書式設定したテキスト出力に変換します。

  1. テキスト入力コントロールを追加し、Source という名前を付けます。

  2. ラベルを追加し、その Text プロパティを以下の関数のいずれかに設定します。

    • Text(Value(Source!Text), "$#.##")

      テキスト入力コントロールに「56.75」と入力すると、ラベルには "$56.75" と表示されます。

    • Text(Value(Source!Text), "#.##%")

      テキスト入力コントロールに「56.75」と入力すると、ラベルには "56.75%" と表示されます。

    • Text(DateValue(Source!Text), "mmm dd, yyyy")

      テキスト入力コントロールに「5/18/1969」と入力すると、ラベルには "May 18, 1969" と表示されます。

      DateTimeFormat パラメーターを使用して、いくつかの組み込みの日付形式のいずれかを指定することもできます。たとえば、[テキスト] プロパティを以下の関数に設定する場合、ラベルに "Sunday, May 18, 1969" と表示できます。

      Text(DateValue(Source!Text), DateTimeFormat!LongDate)

      DateTimeFormat パラメーターの直後に感嘆符を付けて関数のボックスに入力すると、そのパラメーターのオプションの一覧を表示できます。

    • Text(TimeValue(Source!Text), "hh:mm:ss")

      コンピューターが太平洋夏時間 (Pacific Daylight Time) に設定されていて、テキスト入力コントロールに「10:20:30 PM」と入力した場合、ラベルは「2:20:30 PM」と表示します。これは、指定した時刻を PDT から協定世界時 (UTC) に変換したものです。

      時刻値にミリ秒を含むデータ ソースがある場合、そのデータの形式として "hh:mm:ss.fff" を指定することにより、それらを表示できます。hh:mm:ss.f または hh:mm:ss.ff を指定して、時刻の秒を少数第2 位または小数第 3 位で四捨五入することもできます。

時間

構文

Time(Hour, Minute, Second)

説明

指定した時間、分、秒を 10 進数に変換します。

使用例

ユーザーが BirthHour という名前の入力テキスト コントロールに 14、BirthMinute という名前の入力テキスト コントロールに 50、BirthSecond という名前の入力テキスト コントロールに 24 と入力した場合、この関数は 02:50:24 p を返します。

Text(Time(Value(BirthHour!Text), Value(BirthMinute!Text), Value(BirthSecond!Text)), "hh:mm:ss a/p")

TimeValue

構文

TimeValue(TimeText)

TimeValue(TimeText, "LanguageCode")

説明

テキストとして格納されている時刻値を、2 つの時刻の比較などの算術演算または Boolean 演算を実行できる値に変換します。一貫性を保つため、すべての時刻は、現地時間のタイム ゾーンから協定世界時 (UTC) に変換されます。その結果、あるユーザーが太平洋時間帯で「1:50:24 PM」と指定し、別のユーザーが米国東部時間帯で「4:50:24 PM」と指定すると、どちらの値も「5:50:24 AM」と表示されることになります。

時刻値が適切に解釈されて形式設定されるように、言語コードを指定することもできます。

使用例

テキスト入力コントロールに FinishedAt と名付け、ラベルの Text プロパティを次のような関数に設定します。

If(TimeValue(FinishedAt!Text)<TimeValue("5:00:00.000 PM"), "You made it!", "Too late!")

  • FinishedAt コントロールに「4:59:59.999 PM」と入力した場合、ラベルには "You made it!" と表示されます。

  • FinishedAt コントロールに「5:00:00.000 PM」と入力した場合、ラベルには "Too late!" と表示されます。

Today

構文

Today()

説明

現在の日付を、デバイスのロケール固有の形式で返します。

使用例

今日が 2014 年 10 月 11 日で、ラベルの[テキスト] プロパティを以下の関数に設定した場合:

  • Today()

    コンピューターが en 言語コードに設定されている場合はラベルに「10/11/2014 12:00 AM」と表示され、コンピューターが fr 言語コードに設定されている場合は「11/10/2014 12:00 AM」と表示されます。

  • Text(Today(), "mm/dd/yyyy")

    コンピューターに設定されている言語コードに関係なく、ラベルには「10/11/2014」と表示されます。

  • Text(Today(), DateTimeFormat!ShortDate)

    コンピューターに設定されている言語コードに関係なく、ラベルには「10/11/2014」と表示されます。

    DateTimeFormat パラメーターでは、ShortDate 以外にいくつかのオプションを使用できます。これらのオプションの一覧を表示するには、パラメーターの直後に感嘆符を付けて関数のボックスに入力します。

Trim

構文

Trim(Text)

Trim(ColumnExpression)

説明

単語と単語の間の半角スペースを除くすべてのスペースを、テキスト文字列から削除します。

Slogan というテキスト入力コントロールに「We are    the best!」と入力すると、Text プロパティが Trim(Slogan!Text) に設定されているラベルは、"We are the best!" を返します。

Update

構文

Update(Collection, Record1, Record2[, "All"])

説明

指定されたコレクションで、一致したレコードを指定したレコードに置き換え、結果のコレクションを返します。すべての一致を更新するには、オプションの引数 "All" を指定します。

重要

この関数は基になるコレクションを変更します。

使用例

  1. Collect 関数の最初の例で説明されているようにコレクションを作成します。ただし、Voilin という製品を最低 1 つ追加します。

  2. ユーザー設定ギャラリーの Items プロパティを OrderHistory に設定することにより、コレクションをギャラリーに表示します。

    「」を参照してください。

  3. 2 つのテキスト入力コントロールを追加し、それぞれに OldValue および NewValue という名前を付けます。

  4. ボタンを 1 つ追加し、その OnSelect プロパティに以下の関数を設定します。

    Update(OrderHistory, {Products:OldValue!Text}, {Products:NewValue!Text}, All)

  5. F5 キーを押し、OldValue には「Voilin」、NewValue には「Violin」と入力し、ボタンをクリックします。

  6. スペルの間違ったエントリが修正されたことを確認し、Esc キーを押してデザイン画面に戻ります。

UpdateContext

構文

UpdateContext({Name1: Expression1, Name2: Expression2, …})

説明

現在の画面のコンテキストを更新し、指定した式の評価の結果に、指定した変数をバインドします。画面上にコンテキストを設定する代替方式については、この記事の前のほうにある Navigate 関数を参照してください。

重要

この関数は基になる画面コンテキストを変更します。

使用例

UpdateContext({page: 5, displayItem: "Tablets"})

UpdateIf

構文

UpdateIf(Collection, Condition1, {Column1: Expression1, …}[, Condition2, {Column1: Expression2, …}…])

説明

指定した条件を満たす行について、該当する式の結果を使用することにより、指定した列を更新し、変更されたコレクションを返します。

重要

この関数は基になるコレクションを変更します。

使用例

ShoppingCart という名前のコレクションがあり、それに Price という名前のフィールドが含まれている場合、次の関数はそのコレクション内で価格が 200 を超えるすべての項目の NumItems を 0 に設定します。

UpdateIf(ShoppingCart, Price > 200, {NumItems: 0})

Upper

構文

Upper(Text)

Upper(ColumnExpression)

説明

  • Upper(Text)
    指定したテキスト文字列の文字を大文字に変換します。

  • Upper (ColumnExpression)
    1 列の文字列値のテーブルがある場合、対応する大文字の値が入った 1 列のテーブルを返します。

手動で入力したデータでこの関数を使用するには、以下のようにします。

  1. テキスト入力コントロールを追加し、Slogan という名前を付けます。

  2. ラベルを追加し、その Text プロパティを以下の関数に設定します。

    Upper(Slogan!Text)

    テキスト入力コントロールに「We are the best!」と入力すると、ラベルには "WE ARE THE BEST!" と表示されます。

コレクション内のデータでこの関数を使用するには、以下のようにします。

  1. Collect 関数の最初の例に従ってコレクションを作成します。ただし、1 つの製品に Trombone という名前を付けます。

  2. 「」の説明に従って、ユーザー設定ギャラリーにコレクションを表示します。

  3. ギャラリー テンプレートにラベルを追加し、その Text プロパティを以下の関数に設定します。

    Upper(ThisItem!Product)

    追加したラベルにすべての製品名がすべて大文字で表示されます。前に指定したエントリも "TROMBONE" と表示されます。

Value

構文

Value(Text)

説明

数値を表すテキスト文字列を数字に変換します。

使用例

Value("25") は 25 を返します。

VarP

構文

VarP(Table, Expression)

VarP(Expression1[, Expression2, ...])

説明

その引数の分散を返します。

CostPerUnit 列と UnitsSold 列が含まれるだけでなく、各地域をそれぞれ別個の行にリストしている Sales テーブルがある場合、次の関数は地域ごとの売上の分散を計算します。

VarP(Sales, CostPerUnit * UnitsSold)

1 から 7 のスライダーに設定された値の標準偏差を計算するには:

VarP(Slider1!Value, Slider2!Value, Slider3!Value, Slider4!Value, Slider5!Value, Slider6!Value, Slider7!Value)

Year

構文

Year(DateTime)

説明

指定された日付の「年」を、1900 以上 9999 以下の数字で返します。

使用例

Year(DateValue("03/17/1979")) は 1979 を返します。