Vytvoření nebo aktualizace hromadných záznamů v Power Apps
Hromadná aktualizace nebo vytváření záznamů vám umožní pracovat s mnoha záznamy najednou. Dále uvádíme několik scénářů, kde je vhodné hromadně aktualizovat záznamy:
- Máte mnoho fotografií a chcete je nahrát všechny najednou.
- Chcete odeslat časový rozvrh s týdenními údaji najednou.
Možná budete také chtít vytvořit nové záznamy v dávce. Například když vaše aplikace musí vybrat více obrázků, můžete je nahrát všechny najednou.
Tento článek vysvětluje, jak aktualizovat nebo vytvářet hromadné záznamy v závislosti na vašem scénáři.
Vzorce pro hromadnou aktualizaci záznamů
Vzorce v této části lze použít k hromadné aktualizaci záznamů v aplikacích plátna.
Funkce Patch()—Tuto funkci použijte, když kolekce odpovídá zdroji dat.
Patch( DataSource, Collection )Funkce ForAll() + vnořená oprava + operátor víceznačnosti—Tuto funkci použijte, když zdroje dat obsahují různé sloupce, které musíte spojit.
ForAll( Collection, Patch( DataSource, LookUp( DataSource, Id = Collection[@Id] ), { Column: Value } ) )Funkce AddColumns()—Tuto funkci lze použít k poskytnutí vyhledávací reference v kolekci, která obsahuje aktualizace zdroje dat, pokud nemá pole, která snadno odkazují na tabulku.
Chcete-li úplný seznam vzorců pro aktualizaci záznamů v dávce, stáhněte si související soubory.
Příklad kontrolního seznamu
Tento příklad používá kontrolní seznam úkolů. Až dokončíte pár úkolů, můžete je označit jako dokončené. Tento scénář můžete rozšířit na kontrolní seznam spuštění produktu, kontrolní seznam inspekce domácnosti nebo jiné seznamy.
Následující snímek obrazovky ukazuje položky kontrolního seznamu souboru aplikace Microsoft Excel. V tomto příkladu můžete zaškrtnout úkoly související s blogováním nebo zveřejňováním příspěvků na sociálních médiích. Tabulka v aplikaci Excel se jmenuje ChecklistItems. Tady je příklad v Excelu.
Příklad používá kolekce k ukázce tohoto chování. Tento přístup funguje pro jakýkoli tabulkový základ podle vašeho výběru.

Data aplikace Excel se do aplikace importují jako statická. Ve vlastnosti App.OnStart volejte metodu Collect() dat Excelu ChecklistItems do kolekce ChecklistItemsSource. Název kolekce ChecklistItemsSource, která bude použita v různých místech aplikace jako zdrojová data
Tento příklad používá aplikaci pro dvě obrazovky:
- Obrazovka 1 — Slouží ke kontrole položek kontrolního seznamu a k jejich označení jako dokončených.
- Obrazovka 2 — Slouží k vytvoření nové položky kontrolního seznamu. Nová položka bude přidána do kolekce
ChecklistItemsSource.

Pokaždé, když je zaškrtnuta položka kontrolního seznamu, je přidána do kolekce s názvem CheckedItems. Používá níže uvedený vzorec na vlastnosti události OnCheck ovládacího prvku zaškrtávacího políčka. Pokud je položka již zkontrolována a je součástí kolekce, je odstraněna. Pokud ne, je zaškrtnutá položka přidána.
Můžete přepínat mezi stavem Hotovo a Nevyřízené, nebo můžete použít události Oncheck a OnUncheck:
If( !IsBlank(
LookUp( CheckedItems, Id = ThisItem.Id )
),
Remove( CheckedItems, ThisItem ),
Collect( CheckedItems, ThisItem )
)
Vytvoření více záznamů najednou
V závislosti na scénáři existují různé způsoby hromadné aktualizace záznamů. Tato část vysvětluje, jak v aplikacích plátna vytvořit více záznamů najednou.
Když uživatel vybere ve výše uvedeném příkladu možnost Hotovo, je třeba aktualizovat ChecklistItemsSource změnami z kolekce CheckedItems.
U sloupců se stejným názvem
Pokud váš zdroj a cíl mají stejné názvy sloupců, můžete použít příkaz Patch. Například kolekce ChecklistItemsSource a CheckedItems mají stejné názvy sloupců. Následující vzorec můžete použít k hromadné aktualizaci zdroje všemi změnami.
Patch( ChecklistItemsSource, CheckedItems )
U sloupců s různými názvy
Pokud se sloupce ve zdrojové a cílové tabulce liší, použijte místo toho příkaz ForAll s Patch.
U příkazu ForAll() musíte projít každý záznam pomocí podmínky. Podmínka je porovnání mezi podobnými sloupci (například sloupec Id) různých tabulek. Toto porovnání se komplikuje, když zdrojová tabulka a cílová tabulka mají stejné názvy sloupců (například když byl sloupec ProjectId nalezen v tabulkách Project i PurchaseOrder).
Dále uvádíme alternativy:
Použití s operátorem víceznačnosti
Chcete-li aktualizovat Status kolekce CheckedItems na „Hotovo“, když jsou názvy sloupců zdrojové a cílové tabulky stejné, použijte tento vzorec:
ForAll( CheckedItems,
Patch( ChecklistItemsSource,
LookUp( ChecklistItemsSource, Id = CheckedItems[@Id] ),
{ Status: "Done" }
)
)
Pro každou položku v kolekci CheckedItems je její Id (vyjádřené operátorem víceznačnosti CheckedItems[@Id]) porovnáno vůči sloupci Id v kolekci ChecklistItemsSource. Poté je každý spárovaný záznam aktualizován na stav „Hotovo“. Operátor víceznačnosti se používá, když mají dva sloupce patřící do různých tabulek stejný název. Pokud nepoužíváte tento operátor víceznačnosti, uvidíte, že se aktualizuje pouze první záznam.
V galerii použijte speciální popisek
Pokud nechcete k ukládání zaškrtnutých položek použít další kolekci, můžete zkusit následující kroky:
Vytvořte speciální popisek v šabloně galerie.
- Navažte jej na sloupec Id.
- Přejmenujte popisek na IdText.
Odstraňte kód události OnCheck ovládacího prvku zaškrtávacího políčka uvedeného výše.
Napište následující vzorec pro událost OnSelect tlačítka Hotovo:
ForAll( Filter( ChecklistGallery.AllItems, StatusCheckbox.Value = true ), Patch( ChecklistItemsSource, LookUp( ChecklistItemsSource, Id = IdText.Text ), { Status: "Done" } ) )
Zde přímo aplikujete filtr na položky Galerie, abyste našli zaškrtnuté položky. U každého záznamu ve filtrovaných položkách je v tabulce ChecklistItemsSource nalezena shoda porovnáním Id s hodnotou uloženou v popisku IdText.
Stav je aktualizován na hodnotu „Hotovo“.
Operátor víceznačnosti nelze použít na položky Galerie. Místo toho můžete v galerii uložit popisek a odkazovat na něj pro srovnání.
K vytvoření nového sloupce s jiným popiskem použijte alternativu
Tato metoda je alternativou k použití operátoru víceznačnosti nebo popisku uvnitř galerie.
Při vytváření místní kopie vašeho zdroje dat můžete použít vzorec AddColumns() k vytvoření nového sloupce s jiným popiskem (NewId) pro sloupec Id ve vaší zdrojové kolekci. Při použití příkazu ForAll s Patch porovnáte sloupec NewId se sloupcem Id ve zdrojových datech.
Hromadné vytvoření nějakého záznamu
Možná budete chtít hromadně vytvářet nové záznamy, pokud například chcete nahrát více obrázků najednou.
Zde je příklad využívající Příklad kontrolního seznamu.
Pokaždé, když na obrazovce Vytvořit položky kontrolního seznamu vyberete možnost Přidat, jsou informace uloženy v kolekci NewChecklistItems. Když vyberete příkaz Odeslat, je příkaz ForAll() s Patch() použit k aktualizaci zdrojové kolekce.
ForAll( NewChecklistItems,
Patch( ChecklistItemsSource,
Defaults( ChecklistItemsSource ),{
Id: Id,
Category: Category,
Description: Description,
Status:Status
}
)
)
Pro každou položku v kolekci NewChecklistItems se vytvoří nový záznam (indikovaný pomocí Defaults(ChecklistItemsSource)) v kolekci ChecklistItemsSource. Id je nastaveno naId z kolekce NewChecklistItems. Obdobně jsou nastaveny hodnoty Category, Description, a Status.
Viz také
Váš názor
Odeslat a zobrazit názory pro