Uppdaterar poster i en datakälla.

Beskrivning

Funktionen Update

Använd funktionen Update för att ersätta en hel post i en datakälla. Funktionerna UpdateIf och Patch kan i stället ändra ett eller flera värden i en post och låta de andra värdena vara orörda.

I en samling måste hela posten matcha. Samlingar tillåter dubblettposter, så flera poster kanske matchar. Du kan använda argumentet Alla för att uppdatera alla kopior av en post, annars uppdateras bara en kopia av posten.

Om datakällan genererar ett kolumnvärde automatiskt, måste värdet för den kolumnen bekräftas på nytt.

Funktionen UpdateIf

Använd funktionen UpdateIf för att ändra ett eller flera värden i en eller flera poster som matchar ett eller flera villkor. Villkoret kan vara en formel som resulterar i true eller false och kan referera till kolumner i datakällan efter namn. Funktionen utvärderar villkoret för varje post och ändrar de poster där resultatet är true.

Ange en ändring genom att använda en ändringspost som innehåller nya egenskapsvärden. Om du skriver den här ändringsposten mellan klammerparenteser kan egenskapsformlerna referera till egenskaper för den post som ändras. Du kan använda det här beteendet för att ändra poster baserat på en formel.

Precis som med UpdateIf kan du också använda funktionen Patch för att ändra vissa kolumner i en post utan att påverka övriga kolumner.

Både Update och UpdateIf returnerar den ändrade datakällan som en tabell. Du måste använda någon av funktionerna i en beteendeformel.

Delegering

Dessa funktioner kan inte delegeras när de används med en datakälla. Det är endast den första delen av datakällan som hämtas. Därefter tillämpas funktionen. Resultatet kanske inte är helt representativt. En blå punkt visas vid redigeringen för att påminna dig om den här begränsningen och föreslå att du växlar till alternativ som kan delegeras där det är möjligt. Mer information finns i Översikt över delegering.

Syntax

Update( DataSource, OldRecord, NewRecord [, All ] )

  • DataSource – Krävs. Den datakälla som innehåller posten som du vill ersätta.

  • OldRecord – Krävs. Posten som ska ersättas.

  • NewRecord – Krävs. Ersättningsposten. Detta är inte en ändringspost. Hela posten ersätts och saknade egenskaper kommer att vara tomma.

  • All – Valfritt. I en samling kan samma post visas mer än en gång. Ange argumentet Alla för att ta bort alla kopior av posten.

UpdateIf( DataSource, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource – Krävs. Den datakälla som innehåller posten eller posterna som du vill ändra.

  • Condition(s) – Krävs. En formel som utvärderar till true för den eller de poster som du vill ändra. Du kan använda kolumnnamnen för DataSource i formeln.

  • ChangeRecord(s) – Krävs. För varje motsvarande villkor kommer en ändringspost för nya egenskapsvärden tillämpas på poster i DataSource som uppfyller villkoret. Om du skriver posten inom klammerparenteser kan egenskapsvärden för den befintliga posten användas i egenskapsformlerna.

Exempel

I det här exemplet ersätter eller ändrar du poster i en datakälla med namnet IceCream som börjar med datan i den här tabellen:

Formel Beskrivning Resultat
Update( IceCream,
First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } )
Ersätter en post från datakällan.

Datakällan IceCream har ändrats.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 10 } ) Ändrar poster som har en Quantity som är större än 150. Fältet Quantity ökas med 10 och inga andra fält ändras.

Datakällan IceCream har ändrats.
Update( IceCream,
First( Filter( IceCream, Flavor="Strawberry" ) ),
{ ID: 3, Flavor: "Strawberry Swirl"} )
Ersätter en post från datakällan. Egenskapen Quantity har inte angetts i ersättningsposten, så egenskapen i resultatet blir tom.

Datakällan IceCream har ändrats.
UpdateIf( IceCream, true, { Quantity: 0 } ) Anger värdet för egenskapen Quantity för alla poster i datakällan till 0.

Datakällan IceCream har ändrats.

Steg för steg

  1. Importera eller skapa en samling med namnet Inventory och visa den i ett galleri enligt beskrivningen i Visa data i ett galleri.

  2. Ge galleriet namnet ProductGallery.

  3. Lägg till ett skjutreglage med namnet UnitsSold och ange egenskapen Max till det här uttrycket:
    ProductGallery.Selected.UnitsInStock

  4. Lägg till en knapp och ge dess egenskap OnSelect egenskapen följande formel:
    UpdateIf(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. Tryck på F5, välj en produkt i galleriet, ange ett värde med skjutreglaget och välj sedan knappen.

    Antal enheter i lager för den produkt som du har angett minskar med det antal som du har angett.