SETPROPERTY

Esta función se utiliza como parte de una acción para guardar varias propiedades en XML. Cuando no se utiliza con una acción, SETPROPERTY no puede modificar XML, solo devuelve el XML actual. Por ejemplo, esta fórmula, como parte de una acción Establecer parámetros, escribe en una variable denominada DemoXML:
=SETPROPERTY(ReportVariables.DemoXML.Text, "visibility","ReportObjects.ListView6.Alias" ,"false")
Pero cuando se insertan en una celda, la misma fórmula devuelve el valor actual de la variable DemoXML:
<Table><Row name="visibility"><Property name="ReportObjects.ListView6.Alias" value="False" /></Row></Table>

De este modo, para modificar la variable, debe utilizar una acción que asigne la salida devuelta por la función SETPROPERTY a la variable.

Por ejemplo, en un objeto Listview, como un cuadro combinado, defina una acción Establecer parámetros que se activará cuando la selección del cuadro combinado cambie. En la sección Parámetros del cuadro de diálogo Crear acción, seleccione la variable que se va a completar como el Nombre y defina una función SETPROPERTY como el Valor. En modo Vista, el parámetro se completa cuando se activa la acción.

Puede añadir, modificar o eliminar cualquier propiedad.

Puede utilizar la función para establecer una sola propiedad y un valor o múltiples propiedades, cada una con su valor correspondiente. Puede utilizarla, por ejemplo, para completar una variable XML con los valores de las dimensiones de sector en un informe. También puede utilizar la función para eliminar las propiedades y los valores de una variable.

Se puede utilizar SETPROPERTY para hacer referencia a elementos específicos, o bien para hacer referencia a las celdas del hiperbloque.

Para devolver valores de las propiedades de una variable, utilice GETPROPERTY.

Puede utilizar el carácter de asterisco (*) al principio o al final de una cadena como comodín. Por ejemplo, para devolver claves o propiedades determinadas. Los asteriscos dentro de una cadena no actúan como comodines. Una búsqueda con comodines devuelve solo la primera clave o propiedad coincidente.
Nota

No se puede garantizar el orden en el que coinciden las claves o propiedades.

Estos ejemplos se basan en la aplicación de ejemplo, y en ellos se utilizan las propiedades Unique y Caption para guardar el nombre exclusivo y el título de un elemento:

Sintaxis

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

El primer argumento de la fórmula puede ser una variable o una cadena.

El carácter comodín * se puede utilizar con los argumentos de clave y propiedad para sobrescribir o eliminar varios valores simultáneamente.

Ejemplos de propiedades y valores individuales

  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")

En los tres ejemplos, la dimensión Product es la clave y el nombre de propiedad es "Unique".

En el primer ejemplo, se especifican la dimensión Product y el nombre exclusivo de un producto. En el segundo ejemplo, se especifica el nombre de un hiperbloque que contiene la dimensión Product. El tercer ejemplo hace referencia a las variables de informe que contienen un nombre de dimensión y un nombre de elemento exclusivo.

En la definición XML, la clave forma el nombre de la fila.

Establecimiento de varias propiedades y valores

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

Ejemplo

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

Claves múltiples

Puede almacenar varias claves en una variable, pero no puede hacerlo con una única función SETPROPERTY. Para almacenar varias claves, utilice un hiperbloque o anide varias funciones SETPROPERTY. Por ejemplo:
=SETPROPERTY(SETPROPERTY("XML_properties","key","property","value"),
"key","property","value") 

Cada clave forma una fila en la definición XML de la variable.

O bien, utilice varias fórmulas SETPROPERTY en varias acciones para completar una única variable XML, por ejemplo, para almacenar las dimensiones de filtro en un informe dinámico.

Eliminación de una única propiedad

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

Ejemplo

Esto elimina la propiedad Caption de una variable que almacena el nombre exclusivo y el título de un elemento de la dimensión Product.

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

Eliminación de múltiples propiedades

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

Eliminación de todas las propiedades de una fila

=SETPROPERTY("XML_propertes","key")

SETPROPERTY en hiperbloques

La función SETPROPERTY puede hacer referencia a las celdas del hiperbloque. Cuando se utilizan con hiperbloques, es posible definir estas combinaciones de claves, propiedades y valores en una variable XML:

  • Una clave con varios pares de propiedades y valores
  • Varias claves con un par de propiedades y valores
  • Varias claves con varios pares de propiedades y valores
  • Varias claves con varias propiedades y un valor

Ejemplos

En los siguientes ejemplos se utiliza un hiperbloque vertical en las celdas B2, B3 y B4, y una variable global denominada gv_SetProperty. La celda B2 es la columna clave, B3 la columna de propiedades y B4 los valores correspondientes.

Una clave con varios pares de propiedades y valores:

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

Varias claves con un par de propiedades y valores:

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

Varias claves con varios pares de propiedades y valores:

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

Varias claves con varias propiedades y un valor:

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

Edición y eliminación de propiedades y valores

Cuando se utiliza SETPROPERTY para hacer referencia a las celdas del hiperbloque, es posible realizar las siguientes acciones:

  • Eliminar una fila de la definición XML
  • Eliminar un valor único
  • Eliminación de múltiples propiedades
  • Actualizar o establecer un valor único
  • Actualizar o establecer múltiples valores

Ejemplos

Eliminación de una fila de la definición XML:

=SETPROPERTY(globalvariables.gv_setproperty,"Key")

Eliminación de un valor único:

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

Eliminación de múltiples propiedades (por ejemplo, eliminación de las propiedades 1 y 3 de una lista de propiedades):
=SETPROPERTY("XML_properties","key","property1","","property3","")

Establecimiento de un valor único:

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

Establecimiento de varios valores:

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

Cambie múltiples valores con el comodín de la clave:

Esta variable tiene dos claves, cada una con valor diferente:
<Table><Row name="Key1"><Property name="property" value ="Value1" /></Row>
<Row name="Key2"><Property name="property" value ="Value2" /></Row></Table>
Para cambiar Value1 y Value2 a NewValue:

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

El comodín identifica ambas claves y la fórmula cambia sus dos valores.

Puede cambiar múltiples valores con el comodín de la propiedad:

Esta variable tiene dos claves, con dos propiedades y valores cada una:
<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>

Para cambiar el valor de Property1 y Property2 de Key1, utilice:

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

El comodín identifica Property1 y Property2 de Key1.

Para cambiar las propiedades de ambas claves, utilice un comodín en la clave y en la propiedad:

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