SETPROPERTY

Den här funktionen används, som en del av en åtgärd, för att spara flera egenskaper i XML. När den inte används med en åtgärd kan SETPROPERTY inte ändra XML - den returnerar endast den aktuella XML-filen. Exempel: Den här formeln, som en del av en Ange parametrar-åtgärd, skriver till en variabel kallad DemoXML:
=SETPROPERTY(ReportVariables.DemoXML.Text, "visibility","ReportObjects.ListView6.Alias" ,"false")
Men när den infogas i en cell returnerar samma formel det aktuella värdet för DemoXML-variabeln:
<Table><Row name="visibility"><Property name="ReportObjects.ListView6.Alias" value="False" /></Row></Table>

Om du vill ändra variabeln måste du använda en åtgärd som tilldelar de utdata som returneras av SETPROPERTY-funktionen tillbaka till variabeln.

På exempelvis ett listvyobjekt, som en kombinationsruta, kan du definiera en Ange parametrar-åtgärd som ska utlösas när kombinationsrutan ändras. I sektionen Parametrar i dialogrutan Skapa åtgärd väljer du variabeln som ska fyllas i som namn och definierar en SETPROPERTY-funktion som värde. I visningsläge fylls parametern i när åtgärden utlöses.

Egenskaper kan läggas till, ändras eller raderas.

Med denna funktion kan du ange en enskild egenskap och ett värde eller flera egenskaper som alla har ett värde. Du kan exempelvis fylla i en xml-variabel med värden från sektordimensionerna i en rapport med hjälp av den. Du kan också använda funktionen till att radera egenskaper och värden från en variabel.

Du kan referera till specifika element eller hyperblockceller med SETPROPERTY.

Om du vill returnera värden från egenskaperna för en variabel använder du GETPROPERTY.

Du kan använda en asterisk (*) som jokertecken i början eller slutet av en sträng, exempelvis om du vill returnera särskilda nycklar eller egenskaper. Asterisker inom en sträng fungerar inte som jokertecken. En sökning med jokertecken returnerar endast den första nyckeln eller egenskapen som matchar.
Obs!

Vi kan inte garantera i vilken ordning nycklarna och egenskaperna matchas.

Dessa exempel baseras på exempelprogrammet och använder egenskaper med namnen Unique och Caption för att lagra det unika namnet på och rubriken för ett element:

Syntax

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

Det första argumentet i formeln kan vara en variabel eller en sträng.

Du kan använda jokertecknet * med nyckel- och egenskapsargumenten om du vill skriva över eller radera flera värden samtidigt.

Exempel på enskilda egenskaper och värden

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

I alla tre exempel är dimensionen Product nyckeln och "Unique" egenskapsnamnet.

I det första exemplet anges dimensionen Product och det unika namnet för en produkt. I det andra exemplet anges namnet på ett hyperblock som innehåller dimensionen Product. Det tredje exemplet refererar till rapportvariabler som innehåller ett dimensionsnamn och ett unikt elementnamn.

I xml-definitionen utgör nyckeln radnamnet.

Ställa in flera egenskaper och värden

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

Exempel

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

Flera nycklar

Du kan lagra flera nycklar i en variabel, men inte med en och samma SETPROPERTY-funktion. Om du vill lagra flera nycklar kan du använda ett hyperblock eller kapsla flera SETPROPERTY-funktioner. Exempel:
=SETPROPERTY(SETPROPERTY("XML_properties","key","property","value"),
"key","property","value") 

Varje nyckel utgör en rad i variabelns xml-definition.

Du kan också använda flera SETPROPERTY-formler i flera åtgärder om du vill fylla i en enskild xml-variabel, exempelvis om du vill lagra filterdimensionerna i en dynamisk rapport.

Radera en enskild egenskap

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

Exempel

Följande raderar egenskapen Caption från en variabel som lagrar det unika namnet på och rubriken för ett element i dimensionen Product.

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

Radera flera egenskaper

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

Radera alla egenskaper i en rad

=SETPROPERTY("XML_propertes","key")

SETPROPERTY i hyperblock

SETPROPERTY-funktionen kan referera till hyperblockceller. När den används med hyperblock kan du definiera följande kombinationer av nycklar, egenskaper och värden i en xml-variabel:

  • En nyckel med flera par av egenskap och värde
  • Flera nycklar med ett par av egenskap och värde
  • Flera nycklar med flera par av egenskap och värde
  • Flera nycklar med flera egenskaper och ett värde

Exempel

Dessa exempel använder ett vertikalt hyperblock i cellerna B2, B3 och B4 och den globala variabeln gv_SetProperty. Cell B2 är nyckelkolumnen, B3 är egenskapskolumnen och B4 innehåller de motsvarande värdena.

En nyckel med flera par av egenskap och värde:

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

Flera nycklar med ett par av egenskap och värde:

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

Flera nycklar med flera par av egenskap och värde:

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

Flera nycklar med flera egenskaper och ett värde:

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

Redigera och radera egenskaper och värden

När hyperblockceller refereras med SETPROPERTY kan du använda följande åtgärder:

  • Radera en rad från xml-definitionen
  • Radera ett enskilt värde
  • Radera flera egenskaper
  • Uppdatera eller ställa in ett enskilt värde
  • Uppdatera eller ställa in flera värden.

Exempel

Radera en rad från xml-definitionen:

=SETPROPERTY(globalvariables.gv_setproperty,"Key")

Radera ett enskilt värde:

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

Radera flera egenskaper (exempelvis radera egenskaperna 1 och 3 från en lista med egenskaper):
=SETPROPERTY("XML_properties","key","property1","","property3","")

Ställa in ett enskilt värde:

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

Ställa in flera värden:

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

Ändra flera värden med jokertecken på nyckel:

Denna variabel har två nycklar med olika värden:
<Table><Row name="Key1"><Property name="property" value ="Value1" /></Row>
<Row name="Key2"><Property name="property" value ="Value2" /></Row></Table>
Så här ändrar du både Value1 och Value2 till NewValue:

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

Jokertecknet identifierar båda nycklarna och formeln ändrar bådas värden.

Ändra flera värden med jokertecken för egenskap:

Denna variabel har två nycklar, där var och en har två egenskaper och värden:
<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>

Använd följande om du vill ändra värdet för Property1 och Property2 i Key1:

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

Jokertecknet identifierar både Property1 och Property2 i Key1.

Om du vill ändra egenskaperna för båda nycklarna använder du ett jokertecken för både nyckeln och egenskapen:

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