Freigeben über


Massendatensätze erstellen oder aktualisieren in Power Apps

Durch das massenweise Aktualisieren oder Erstellen von Datensätzen können Sie viele Datensätze gleichzeitig bearbeiten. Hier sind einige Szenarien, in denen Sie Massendatensätze aktualisieren möchten:

  • Sie haben viele Fotos und möchten sie alle auf einmal hochladen.
  • Sie möchten einen Stundenzettel mit den Daten einer Woche auf einmal einreichen.

Vielleicht möchten Sie auch neue Datensätze in großen Mengen erstellen. Wenn Ihre App beispielsweise viele Bilder auswählen muss, möchten Sie sie möglicherweise alle auf einmal hochladen.

In diesem Artikel wird erläutert, wie Sie je nach Szenario Massendatensätze aktualisieren oder erstellen.

Formeln zur Massenaktualisierung von Datensätzen

Die Formeln in diesem Abschnitt können zur Massenaktualisierung von Datensätzen in Canvas-Apps verwendet werden.

  • Patch()-Funktion—Verwenden Sie diese Funktion, wenn die Sammlung mit Datenquelle übereinstimmt.

    Patch( DataSource, Collection )
    
  • ForAll()-Funktion + verschachtelter Patch + Mehrdeutigkeitsvermeidung— Verwenden Sie diese Funktion, wenn die Datenquellen unterschiedliche Spalten haben, die Sie zusammenführen müssen.

    ForAll( Collection,
        Patch( DataSource, 
            LookUp( DataSource, Id = Collection[@Id] ),
            { Column: Value }
        )
    )
    
  • AddColumns()-Funktion—Diese Funktion kann verwendet werden, um eine Such-Referenz in der Sammlung bereitzustellen, die die Aktualisierungen der Datenquelle enthält, wenn sie keine Felder hat, die auf die Tabelle verweisen.

Beispiel für eine Checkliste

In diesem Beispiel wird eine Checkliste mit Aufgaben verwendet. Wenn Sie mit einigen Aufgaben fertig sind, können Sie sie als erledigt markieren. Sie können dieses Szenario auf eine Checkliste für die Produkteinführung, eine Checkliste für die Hausinspektion oder andere Listen erweitern.

Der folgende Screenshot zeigt die Checklistenpunkte in der Microsoft Excel Datei. In diesem Beispiel können Sie die Aufgaben im Zusammenhang mit Ihrem Bloggen oder Posten in sozialen Medien abhaken. Die Tabelle in Excel heißt ChecklistItems.

Das Beispiel verwendet Sammlungen, um dieses Verhalten zu demonstrieren. Der Ansatz funktioniert für jedes tabellarische Back-End Ihrer Wahl.

Alternativer Text

Die Excel-Daten werden als statische Daten in die App importiert. In der App.OnStart Eigenschaft Collect() die Excel ChecklistItems-Daten in die ChecklistItemsSource Sammlung. Die ChecklistItemsSource Sammlung wird als die Quelldaten in der App verwendet.

In diesem Beispiel wird eine App mit zwei Anzeigen verwendet:

  • Anzeige 1—Wird verwendet, um die Checklistenelemente zu überprüfen und als abgeschlossen zu markieren.
  • Anzeige 2—Wird verwendet, um ein neues Checklistenelement zu erstellen. Das neue Element wird der ChecklistItemsSource Sammlung hinzugefügt.

Screen1 Screen2

Jedes Mal, wenn ein Checklistenelement überprüft wird, wird es einer Sammlung namens CheckedItems hinzugefügt. Es verwendet die Formel unten auf der OnCheck -Ereigniseigenschaft des Kontrollkästchen-Steuerelements. Wenn das Element bereits aktiviert ist und Teil der Sammlung ist, wird es entfernt. Wenn nicht, wird das überprüfte Element hinzugefügt.

Sie können den Status umschalten zwischen Fertig und ausstehend, oder Sie können die Oncheck und OnUncheck Ereignisse verwenden:

If( !IsBlank( 
        LookUp( CheckedItems, Id = ThisItem.Id )
    ),
    Remove( CheckedItems, ThisItem ),
    Collect( CheckedItems, ThisItem )
)

Gleichzeitig mehrere Datensätze erstellen

Je nach Szenario gibt es unterschiedliche Möglichkeiten zur Massenaktualisierung von Datensätzen. In diesem Abschnitt wird erläutert, wie Sie in Canvas-Apps mehrere Datensätze gleichzeitig erstellen.

Wenn der Benutzer Fertig im obigen Beispiel auswählt, müssen Sie ChecklistItemsSource mit Änderungen aus der CheckedItems-Sammlung aktualisieren.

Für Spalten mit gleichem Namen

Wenn Quelle und Ziel dieselben Spaltennamen haben, können Sie eine Patch-Anweisung verwenden. Zum Beispiel haben ChecklistItemsSource und die CheckedItems Sammlungen die gleichen Spaltennamen. Sie können die folgende Formel verwenden, um die Quelle mit allen Änderungen auf einmal zu aktualisieren.

Patch( ChecklistItemsSource, CheckedItems )

Für Spalten mit unterschiedlichen Namen

Wenn sich die Spalten in Quell- und Zieltabellen unterscheiden, verwenden Sie stattdessen ForAll mit Patch.

Mit ForAll() müssen Sie jeden Datensatz mit einer Bedingung durchlaufen. Die Bedingung ist ein Vergleich zwischen ähnlichen Spalten (z. B. Id Spalte) der verschiedenen Tabellen. Dieser Vergleich wird kompliziert, wenn die Quelltabelle und die Zieltabelle die gleichen Spaltennamen haben (z. B. wenn ProjectId eine Spalte ist, die in beiden Tabellen Project und PurchaseOrder gefunden wird).

Hier sind die Alternativen:

Verwendung mit Mehrdeutigkeitsverwendung

Um den Status von CheckedItems auf Fertig zu aktualisieren, wenn die Namen der Quell- und Zieltabellenspalten gleich sind, verwenden Sie diese Formel:

ForAll( CheckedItems,
    Patch( ChecklistItemsSource, 
        LookUp( ChecklistItemsSource, Id = CheckedItems[@Id] ),
        { Status: "Done" }
    )
)

Für jeden Artikel in der CheckedItems Sammlung, die ID (dargestellt durch den Begriffsklärungsoperator CheckedItems[@Id]) wird mit der ID-Spalte der ChecklistItemsSource Sammlung verglichen. Dann wird jeder übereinstimmende Datensatz mit dem Status Fertig aktualisiert. Die Mehrdeutigkeitsverwendung wird verwendet, wenn zwei Spalten, die zu verschiedenen Tabellen gehören, denselben Namen haben. Wenn Sie diese Mehrdeutigkeitsverwendung nicht verwenden, werden Sie feststellen, dass nur der erste Datensatz aktualisiert wird.

Wenn Sie keine zusätzliche Sammlung verwenden möchten, um die markierten Elemente zu speichern, können Sie die folgenden Schritte ausführen:

  1. Erstellen Sie eine zusätzliche Beschriftung in der Katalogvorlage.

    1. Binden Sie es an die Spalten-ID.
    2. Benennen Sie die Beschriftung in IdText um.
  2. Entfernen Sie den Code auf dem OnCheck des oben erwähnten Kontrollkästchen-Steuerelements.

  3. Schreiben Sie die folgende Formel auf das OnSelect-Ereignis der Schaltfläche Fertig:

    ForAll(
        Filter( ChecklistGallery.AllItems,
          StatusCheckbox.Value = true
        ),
        Patch( ChecklistItemsSource,
          LookUp( ChecklistItemsSource, Id = IdText.Text ),
          { Status: "Done" }
        )
    )
    

Hier wenden Sie den Filter direkt auf die Elemente des Katalogs an, um die markierten Elemente zu finden. Für jeden Datensatz in den gefilterten Elementen wird eine Übereinstimmung auf der ChecklisteItemsQuelle Tabelle durch Vergleichen der ID mit dem in der IdText-Beschriftung gespeicherten Wert.

Der Status wird auf Fertig aktualisiert.

Die Mehrdeutigkeitsverwendung kann nicht für die Elemente des Katalogs verwendet werden. Stattdessen können Sie eine Beschriftung im Katalog speichern und zum Vergleich darauf verweisen.

Verwenden Sie eine Alternative, um eine neue Spalte mit einer anderen Beschriftung zu erstellen

Diese Methode ist eine Alternative zur Verwendung der Mehrdeutigkeitsverwendung oder einer Beschriftung im Katalog.

Beim Erstellen einer lokalen Kopie Ihrer Datenquelle können Sie die AddColumns() Formel zum Erstellen einer neuen Spalte mit einer anderen Beschriftung (NewId) für die ID-Spalte in Ihrer Quellsammlung verwenden. Wenn Sie ForAll mit Patch verwenden, vergleichen Sie die NewId-Spalte mit der ID-Spalte in Ihren Quelldaten.

Massendatensätze erstellen

Sie können neue Datensätze in großen Mengen erstellen, wenn Sie beispielsweise viele Bilder auf einmal hochladen möchten.

Hier ist ein Beispiel, das Beispiel für eine Checkliste verwendet.

Auf der Anzeige Checklistenelemente wird jedes Mal, wenn Sie Hinzufügen auswählen, die Informationen in der NewChecklistItems Sammlung gespeichert. Wenn Sie übermitteln auswählen, wird ForAll() mit Patch() verwendet, um die Quellsammlung zu aktualisieren.

ForAll( NewChecklistItems,
    Patch( ChecklistItemsSource,
        Defaults( ChecklistItemsSource ),{
            Id: Id,
            Category: Category,
            Description: Description,
            Status:Status
        }
    )
)

Für jeden Artikel in der NewChecklistItems wird ein neuer Datensatz (gekennzeichnet durch Defaults(ChecklistItemsSource)) in der ChecklistItemsSource Sammlung erstellt. Die Id ist auf Id von der NewChecklistItems Sammlung festgelegt. Wie Category, Description und Status werden Werte festgelegt.

Siehe auch