SETPROPERTY
=SETPROPERTY(ReportVariables.DemoXML.Text, "visibility","ReportObjects.ListView6.Alias" ,"false")
但是,在插入单元格时,相同的公式返回 DemoXML 变量的当前值:<Table><Row name="visibility"><Property name="ReportObjects.ListView6.Alias" value="False" /></Row></Table>
因此,若要修改变量,必须使用操作将 SETPROPERTY 函数返回的输出指派给变量。
例如,在列表视图对象(如组合框)上,定义“设置参数”操作,使其在组合框中的选择更改时触发。在“创建操作”对话框的“参数”部分,选择要填充为“名称”的变量,将 SETPROPERTY 函数定义为“值”。在“视图”模式下,当触发操作时,参数即可填充。
可以添加、修改或删除任何属性。
可以使用此函数设置单个属性和值或者每个都有一个值的多个属性。例如,可使用报告中的切片维度的值填充 XML 变量。还可以使用此函数从变量中删除属性和值。
可使用 SETPROPERTY 引用特定元素或引用超级数据块单元格。
若要从变量的属性返回值,使用 GETPROPERTY。
我们无法保证关键字或属性的顺序也匹配。
下面的示例基于“示例”应用程序并使用名为“Unique”和“Caption”的属性存储元素的唯一名称和标题:
语法
SETPROPERTY("XML_properties","key","property","value")
公式的第一个参数可以是变量或字符串。
* 通配符可与键以及属性参数结合使用,以便同时覆盖或删除多个值。
单个属性和值的示例
-
=SETPROPERTY(globalvariables.gv_property,"[Product]","Unique", "[Product].[All Tires].[Car Tires All Season]")
-
=SETPROPERTY(globalvariables.gv_property,reportobjects.Hyperblock4.Text, "Unique","[Product].[All Tires].[Car Tires All Season]")
-
=SETPROPERTY(globalvariables.gv_property,"reportvariables.rv_dimension.text","Unique", "reportvariables.rv_element.text")
在所有三个示例中,“产品”维度为键,而属性名称为“唯一”。
在第一个示例中,指定“产品”维度和产品的唯一名称。在第二个示例中,指定包含“产品”维度的超级数据块的名称。第三个示例引用含有维度名称以及元素唯一名称的报告变量。
在 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")
多个键
=SETPROPERTY(SETPROPERTY("XML_properties","key","property","value"),
"key","property","value")
每个键构成变量的 XML 定义中的一行。
或者,在多个操作中使用多个 SETPROPERTY 公式以填充单个 XML 变量 - 例如,将筛选器维度存储在动态报告中。
删除单个属性
SETPROPERTY("XML_properties", "key", "property","")
示例
从存储“产品”维度的元素的唯一名称和标题的变量中删除“标题”属性。
=SETPROPERTY(globalvariables._gv_property,"[Product]","caption","")
删除多个属性
=SETPROPERTY("XML_properties","key","property","","property,"")
删除行的所有属性
=SETPROPERTY("XML_propertes","key")
以超级数据块执行 SETPROPERTY
SETPROPERTY 函数可引用超级数据块单元格。与超级数据块一起使用时,可以定义 XML 变量中的键、属性和值的组合:
- 有多个属性和值对的一个键
- 有一个属性和值对的多个键
- 有多个属性和值对的多个键
- 有多个属性和一个值的多个键
示例
这些示例在 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)
有多个属性和一个值的多个键:
=SETPROPERTY(globalvariables.gv_setproperty,B2,B3,"Value")
编辑和删除属性和值
当使用 SETPROPERTY 引用超级数据块单元格时,以下操作成为可能:
- 从 XML 定义删除某行
- 删除单个值
- 删除多个属性
- 更新或设置单个值
- 更新或设置多个值
示例
从 XML 定义删除某行:
=SETPROPERTY(globalvariables.gv_setproperty,"Key")
删除单个值:
=SETPROPERTY(globalvariables.gv_setproperty,"Key","")
=SETPROPERTY("XML_properties","key","property1","","property3","")
设置单个值:
=SETPROPERTY("XML_properties","key","property","value")
设置多个值:
=SETPROPERTY("XML_properties","key","property1","value1","property2",
"Value2","Property3","Value3")
在键上使用通配符更改多个值:
<Table><Row name="Key1"><Property name="property" value ="Value1" /></Row>
<Row name="Key2"><Property name="property" value ="Value2" /></Row></Table>
若要将值 1 和值 2 更改为新值:
=SETPROPERTY("XML_properties"," key*
","property","new_value")
通配符标识出两个键,而公式则更改它们的值。
在属性上使用通配符更改多个值:
<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>
若要更改键 1 的属性 1 和属性 2 的值,使用:
=SETPROPERTY("XML_properties","key","property*","new_value")
通配符标识出键 1 的属性 1 和属性 2。
若要更改两个键的属性,使用键和属性的通配符:
=SETPROPERTY("XML_properties"
,"key*","property*","new_value")