SETPROPERTY

Tato funkce se používá v rámci akce k uložení více vlastností ve formátu XML. Pokud se funkce SETPROPERTY nepoužívá v akci, nemůže data XML měnit – pouze vrací aktuální data XML. Například následující vzorec v akci Nastavit parametry zapisuje do proměnné s názvem DemoXML:
=SETPROPERTY(ReportVariables.DemoXML.Text, "visibility","ReportObjects.ListView6.Alias" ,"false")
Stejný vzorec vložený do buňky však vrátí aktuální hodnotu proměnné DemoXML:
<Table><Row name="visibility"><Property name="ReportObjects.ListView6.Alias" value="False" /></Row></Table>

Chcete-li tedy upravit proměnnou, musíte použít akci, která výstup vrácený funkcí SETPROPERTY zapíše zpět do proměnné.

Například u objektu zobrazení seznamu, jako je pole se seznamem, můžete definovat akci Nastavit parametry aktivovanou při změně výběru v poli se seznamem. V části Parametry dialogového okna Vytvořit akci v poli Název vyberte proměnnou, do které chcete zapisovat, a jako její hodnotu definujte funkci SETPROPERTY. V režimu Zobrazení se parametr vyplní, jakmile se spustí akce.

Můžete přidat, upravit či odstranit libovolnou vlastnost.

Funkci můžete využít k nastavení jednotlivé vlastnosti a hodnoty či více vlastností s vlastními hodnotami. Můžete ji využít například k vyplnění hodnot dimenzí řezu v reportu do proměnné XML. Funkci můžete rovněž využít k odstranění vlastností a hodnot z proměnné.

Funkci SETPROPERTY lze využít k odkazování na konkrétní prvky nebo k odkazování na buňky hyperbloku.

Chcete-li vrátit hodnoty z vlastností proměnné, použijte funkci GETPROPERTY.

Na začátku nebo na konci řetězce můžete jako zástupný znak použít hvězdičku (*). Například pokud chcete vrátit konkrétní klíče či vlastnosti. Hvězdičky uvnitř řetězce jako zástupné znaky nefungují. Vyhledávání s využitím zástupných znaků vrátí pouze první přiřazený klíč nebo vlastnost.
Poznámka

Nemůžeme zaručit pořadí, ve kterém se klíče nebo vlastnosti přiřadí.

Tyto příklady vycházejí z aplikace Vzorky a využívají vlastnosti s názvy Jedinečná a Popisek k uchování jedinečného názvu a popisku prvku:

Syntaxe

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

První argument vzorce může být proměnná nebo řetězec.

Zástupný znak * lze použít s argumenty klíče a vlastnosti k přepsání nebo smazání více hodnot zároveň.

Příklady jednotlivých vlastností a hodnot

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

Ve všech třech příkladech je dimenze Produkt klíčem a název vlastnosti je „Jedinečná“.

V prvním příkladu jsou zadány dimenze Produkt a jedinečný název. Ve druhém příklady je zadán název hyperbloku obsahujícího dimenzi Produkt. Třetí příklad odkazuje na proměnné reportu, které obsahují název dimenze a jedinečný název prvku.

V definici XML klíč představuje název řádku.

Nastavení více vlastností a hodnot

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

Příklad

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

Více klíčů

Můžete uložit více klíčů v proměnné, ne však pomocí jedné funkce SETPROPERTY. Chcete-li uložit více klíčů, použijte hyperblok nebo vnořte více funkcí SETPROPERTY. Například:
=SETPROPERTY(SETPROPERTY("XML_properties","key","property","value"),
"key","property","value") 

Každý klíč tvoří řádek v definici XML proměnné.

Můžete také použít vzorce SETPROPERTY ve více akcích k vyplnění jednotlivé proměnné XML – například k uchovávání dimenzí filtru v dynamickém reportu.

Odstranění jednotlivé vlastnosti

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

Příklad

Tato akce odstraní vlastnost Popisek z proměnné, která uchovává jedinečný název a popisek prvku dimenze Produkt.

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

Odstranění více vlastností

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

Odstranění všech vlastností řádku

=SETPROPERTY("XML_propertes","key")

Funkce SETPROPERTY v hyperblocích

Funkce SETPROPERTY může odkazovat na buňky hyperbloku. Při použití s hyperbloky je možné definovat v proměnné XML tyto kombinace klíčů, vlastností a hodnot:

  • Jeden klíč s více páry vlastnosti a hodnoty
  • Více klíčů s jedním párem vlastnosti a hodnoty
  • Více klíčů s více páry vlastnosti a hodnoty
  • Více klíčů s více vlastnostmi a jednou hodnotou

Příklady

Tyto příklady využívají vertikální hyperblok v buňkách B2, B3 a B4 a globální proměnnou s názvem gv_SetProperty. Buňka B2 je sloupec klíčů, B3 sloupec vlastností a B4 odpovídajících hodnot.

Jeden klíč s více páry vlastnosti a hodnoty:

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

Více klíčů s jedním párem vlastnosti a hodnoty:

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

Více klíčů s více páry vlastnosti a hodnoty:

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

Více klíčů s více vlastnostmi a jednou hodnotou:

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

Úprava a odstraňování vlastností a hodnot

Je-li funkce SETPROPERTY použita k odkazování na buňky hyperbloku, lze provést tyto akce:

  • Odstranění řádku z definice XML
  • Odstranění jednotlivé hodnoty
  • Odstranění více vlastností
  • Aktualizace nebo stanovení jednotlivé hodnoty
  • Aktualizace nebo stanovení více hodnot

Příklady

Odstranění řádku z definice XML:

=SETPROPERTY(globalvariables.gv_setproperty,"Key")

Odstranění jednotlivé hodnoty:

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

Odstranění více vlastností (například odstranění vlastností 1 a 3 ze seznamu vlastností):
=SETPROPERTY("XML_properties","key","property1","","property3","")

Stanovení jednotlivé hodnoty:

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

Stanovení více hodnot:

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

Změna více hodnot pomocí zástupného znaku v klíči:

Tato proměnná má dva klíče, každý s jinou hodnotou:
<Table><Row name="Key1"><Property name="property" value ="Value1" /></Row>
<Row name="Key2"><Property name="property" value ="Value2" /></Row></Table>
Změna hodnot Value1 a Value2 na hodnotu NewValue:

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

Zástupný znak identifikuje oba klíče a vzorec mění obě jejich hodnoty.

Změna více hodnot pomocí zástupného znaku ve vlastnosti:

Tato proměnná má dva klíče, každý se dvěma vlastnostmi a hodnotami:
<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>

Postup změny hodnoty vlastností Property1 a Property2 klíče Key1:

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

Zástupný znak identifikuje vlastnosti Property1 i Property2 klíče Key1.

Chcete-li změnit vlastnosti obou klíčů, použijte zástupný znak pro klíč i vlastnost:

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