SETPROPERTY

この関数は、アクションの一部として XML に複数のプロパティを保存するために使用します。アクションで使用されていない場合、SETPROPERTY は XML を変更できません。現在の XML のみを返します。たとえば、次の数式は、[パラメーターを設定] アクションの一部として DemoXML という変数に書き込みます。
=SETPROPERTY(ReportVariables.DemoXML.Text, "visibility","ReportObjects.ListView6.Alias" ,"false")
ただし、セルに挿入されると、同じ数式は DemoXML 変数の現在の値を返します。
<Table><Row name="visibility"><Property name="ReportObjects.ListView6.Alias" value="False" /></Row></Table>

このため、変数を変更するには、SETPROPERTY 関数から返された出力を変数に割り当てるアクションを使用する必要があります。

たとえば、コンボボックスなどの Listview オブジェクトで、コンボボックスでの選択が変更されたときにトリガーする [パラメーターを設定] アクションを定義します。[アクションを作成] ダイアログボックスの [パラメーター] セクションで、[名前] として設定する変数を選択して、[値] として SETPROPERTY 関数を定義します。ビューモードでは、アクションがトリガーされたときにパラメーターが自動入力されます。

プロパティは追加、変更、削除できます。

この関数を使用して、単一のプロパティと値、または値を 1 つ持つ複数のプロパティを設定できます。たとえば、レポート内のスライス次元の値などを XML 変数に埋め込むために使用します。また、変数からプロパティと値を削除することもできます。

SETPROPERTY を使用して、特定のエレメントや、ハイパーブロックセルを参照できます。

変数のプロパティから値を返すには、GETPROPERTY を使用します。

アスタリスク (*) を文字列の先頭または末尾でワイルドカードとして使用できます。たとえば、特定のキーやプロパティを取得するためにこれを使用します。アスタリスク (*) を文字列の途中に書いてもワイルドカードになりません。ワイルドカード検索は、最初に一致したキーまたはプロパティのみを返します。
注: 

キーまたはプロパティが一致する順番は保証できません。

次の例は、Samples アプリケーションに基づいています。Unique と Caption の 2 つのプロパティを使用して、エレメントの一意の名前とキャプションを格納します。

構文

SETPROPERTY("XML_properties","key","property","value")

数式の最初の引数は変数または文字列です。

* (ワイルドカード文字) は、複数の値を同時に上書きしたり削除したりするために、キーやプロパティ引数で使用できます。

単一のプロパティと値の例

  1. =SETPROPERTY(globalvariables.gv_property,"[Product]","Unique",
    "[Product].[All Tires].[Car Tires All Season]")
  2. =SETPROPERTY(globalvariables.gv_property,reportobjects.Hyperblock4.Text,
    "Unique","[Product].[All Tires].[Car Tires All Season]")
  3. =SETPROPERTY(globalvariables.gv_property,"reportvariables.rv_dimension.text","Unique",
    "reportvariables.rv_element.text")

3 つの例すべてで、Product 次元がキーであり、プロパティ名は「Unique」です。

最初の例では、Product 次元と製品の一意の名前を指定します。2 番目の例では、Product 次元が含まれるハイパーブロックの名前を指定します。3 番目の例では、次元の名前とエレメントの一意の名前が含まれるレポート変数を参照します。

XML 定義では、キーから行名が生成されます。

複数のプロパティと値を設定

SETPROPERTY("XML_properties", "key", "property","value",{,"property"}{,"value"})

=SETPROPERTY(globalvariables._gv_property,"[Product]","unique","[Product].[All
		Tires].[Car Tires all Season]","Caption","Car Tires all Season")

複数のキー

複数のキーを 1 つの変数に格納できます。ただし、この場合は単一の SETPROPERTY 関数は使用できません。複数のキーを格納する場合は、ハイパーブロックを使用するか、複数の SETPROPERTY 関数をネストします。例を以下に示します。
=SETPROPERTY(SETPROPERTY("XML_properties","key","property","value"),
"key","property","value") 

各キーから変数の XML 定義内の行が生成されます。

または、複数の SETPROPERTY 式を複数のアクションで使用して 1 つの XML 変数に値を埋め込みます。たとえば、動的レポート内のフィルター次元を保存します。

単一のプロパティを削除

SETPROPERTY("XML_properties", "key", "property","")

Product 次元のエレメントの一意の名前とキャプションが格納された変数から Caption プロパティを削除するには、次のように指定します。

=SETPROPERTY(globalvariables._gv_property,"[Product]","caption","")

複数のプロパティを削除

=SETPROPERTY("XML_properties","key","property","","property,"")

1 行のすべてのプロパティを削除

=SETPROPERTY("XML_propertes","key")

ハイパーブロック内の SETPROPERTY

SETPROPERTY 関数を使用して、ハイパーブロックセルを参照できます。ハイパーブロックで使用する場合、1 つの XML 変数に次のようなキー、プロパティ、値の組み合せを定義できます。

  • 複数のプロパティと値のペアの組み合せを持つ単一のキー
  • 単一のプロパティと値のペアの組み合せを持つ複数のキー
  • 複数のプロパティと値のペアの組み合せを持つ複数のキー
  • 複数のキー、複数のプロパティ、1 つの値の組み合せ

以下の例では、セル B2、B3、B4 の縦のハイパーブロックとグローバル変数 gv_SetProperty を使用しています。セル B2 はキー列、B3 はプロパティ列、B4 は対応する値です。

複数のプロパティと値のペアの組み合せを持つ単一のキー

=SETPROPERTY(globalvariables.gv_setproperty,"[Product]",B3,B4)

単一のプロパティと値のペアの組み合せを持つ複数のキー

=SETPROPERTY(globalvariables.gv_setproperty,B2,"Property","Value")

複数のプロパティと値のペアの組み合せを持つ複数のキー

=SETPROPERTY(globalvariables.gv_setproperty,B2,B3,B4)

複数のキー、複数のプロパティ、1 つの値の組み合せ:

=SETPROPERTY(globalvariables.gv_setproperty,B2,B3,"Value")

プロパティと値の編集、削除

SETPROPERTY を使用してハイパーブロックセルを参照する場合、次のアクションを実行できます。

  • XML 定義から行を削除
  • 単一の値を削除
  • 複数のプロパティを削除
  • 単一の値を更新または設定
  • 複数の値を更新または設定

XML 定義から行を削除:

=SETPROPERTY(globalvariables.gv_setproperty,"Key")

単一の値を削除:

=SETPROPERTY(globalvariables.gv_setproperty,"Key","")

複数のプロパティを削除 (たとえば、プロパティリストからプロパティ 1 と 3 を削除):
=SETPROPERTY("XML_properties","key","property1","","property3","")

単一の値を設定:

=SETPROPERTY("XML_properties","key","property","value")

複数の値を設定:

=SETPROPERTY("XML_properties","key","property1","value1","property2",
"Value2","Property3","Value3")

キーにワイルドカードを使用して複数の値を変更:

この変数には 2 つのキーがあり、それぞれ異なる値を持ちます。
<Table><Row name="Key1"><Property name="property" value ="Value1" /></Row>
<Row name="Key2"><Property name="property" value ="Value2" /></Row></Table>
Value1 と Value2 の両方を NewValue に変更:

=SETPROPERTY("XML_properties"," key* ","property","new_value")

ワイルドカードによって、キーと数式の両方による値の変更が識別されます。

プロパティにワイルドカードを使用して複数の値を変更:

この変数には 2 つのキーがあり、それぞれが 2 つのプロパティと値を持ちます。
<Table><Row name="Key1"><Property name="property1" value ="Value1"/>
<Property name="property2" value ="Value11"/></Row>
<Row name="Key2"><Property name="property1" value ="Value2" />
<Property name="property2" value ="Value21"/></Row></Table>

Key1 の Property1 および Property2 の値を変更:

=SETPROPERTY("XML_properties","key","property*","new_value")

ワイルドカードによって、Key1 の Property1 と Property2 の両方の値が識別されます。

キーとプロパティの両方にワイルドカードを使用して、両方のキーのプロパティを変更:

=SETPROPERTY("XML_properties" ,"key*","property*","new_value")