Daten zwischen Sammlungen und Datenquellen mithilfe von Collect verschieben
Sammlungen stellen besondere Datenquellen dar. Sie sind lokal in der App und nicht durch eine Verbindung zu einem Dienst in der Cloud gespeichert, sodass die Informationen nicht geräteübergreifend für denselben Benutzer oder zwischen Benutzern geteilt werden können. Sammlungen können mit der Collect-Funktion dynamisch erstellt werden. Sie müssen nicht im Voraus eingerichtet werden, wie dies bei verbindungsbasierten Datenquellen nötig ist. Anders gesagt sind Sammlungen nur Variablen, sodass ihre Inhalte nicht gespeichert werden, wenn der Benutzer die App schließt. Jeder andere, der die App ausführt, hat keinen Zugriff auf die darin enthaltenen Daten. Um die Informationen von Ihrer Sammlung zu speichern, schreiben wir diese an eine Datenquelle. Betrachten wir die zwei hauptsächlichen Möglichkeiten zum Speichern von Sammlungsdaten in Ihrer Datenquelle.
Die Collect-Funktion verwenden
Die Collect-Funktion fügt Datensätze einer Datenquelle hinzu. Sie kann einer Sammlung einen einzelnen Wert, einen Datensatz oder eine Tabelle hinzufügen. Sie kann verwendet werden, um eine Sammlung zu erstellen und in eine Datenquelle zu schreiben, beispielsweise eine SharePoint-Liste oder eine Dataverse-Tabelle. Es ermöglicht Ihnen, Massendaten zu schreiben ohne eine ForAll/Patch-Funktion zu verwenden, um Ihre Daten zu durchlaufen.
Wenn Sie Collect zum Schreiben in eine Datenquelle verwenden, können Sie die Elemente als Datensatz angeben, falls die Spaltennamen und die Datenstruktur mit Ihrer Quelle übereinstimmen. Ähnlich wie eine Patch-Funktion schreibt diese Formel einen einzelnen Datensatz in Ihre Daten:
Collect('YourDataSource', {Title: 'First Try', StartDate: Today()})
Solange Ihre Datenquelle über Spalten mit den Namen „Title“ und „StartDate“ verfügt (und es sich dabei um Datentypen, Text bzw. Datum handelt), erstellt diese Formel einen Datensatz in Ihrer Datenquelle, in dem der Titel „First Try“ lautet und das StartDate das heutige Datum ist.
Fügen Sie nach dem ersten Datensatz weitere hinzu. So können Sie bei Bedarf viele Datensätze aneinanderreihen, solange Sie den richtigen Datentyp in die rechte Spalte schreiben, einschließlich aller obligatorischen Spalten.
Sie können auch eine ganze Tabelle über die Anweisung Collect in Ihre Datenquelle schreiben, solange die Datenstruktur übereinstimmt.
Abschließend können Sie eine vereinfachte Version der Formel verwenden, um eine gesamte Sammlung über eine Syntax wie diese in Ihre Datenquelle zu schreiben:
Collect('YourDataSource', colMyCollection)
Wenn Sie Collect verwenden, um eine ganze Tabelle in Ihre Datenquelle, müssen Ihre Datenstruktur und Spaltennamen mit den Spalten übereinstimmen, in die Sie schreiben, genau wie beim Schreiben eines einzelnen Datensatzes in die Datenquelle. Der Hauptvorteil bei der Verwendung einer Collect-Funktion zum Schreiben ist, dass Ihr Code einfach ist.
Denken Sie zusammenfassend an diese drei Bedingungen, wenn Sie Collect zum Schreiben in Ihren Datenquelle verwenden:
Die Spalten in der Sammlung müssen in der Datenquelle vorhanden sein. Die Datenquelle kann andere Spalten haben (z. B. vom System generierte Spalten), die Spalten in Ihrer Sammlung, aus denen Sie schreiben, jedoch müssen in der Datenquelle, in die Sie schreiben, vorhanden sein. (Wenn Ihre Sammlung eine Textspalte mit dem Namen Widget hat, dann muss Ihre Datenquelle auch eine Textspalte mit dem Namen Widget haben.)
Der Datentyp (z. B. Text, Zahl oder Datum) jeder Spalte der Sammlung muss mit dem Ziel-Datentyp übereinstimmen.
Ihre Sammlung muss Daten für alle obligatorischen Spalten in Ihrer Datenquelle umfassen.
Tipp
Bei Bedarf können Sie mit diesen Funktionen Ihre Sammlung so transformieren, dass sie mit Ihrer Datenquelle übereinstimmen:
- AddColumns
- DropColumns
- RenameColumns
- ShowColumns
Weitere Informationen finden Sie unter Funktionen „AddColumns“, „DropColumns“, „RenameColumns“ und „ShowColumns“ in Power Apps.
Weitere Informationen zur Collect-Funktion und Sammlungen finden Sie unter Collect-Dokumentation
Patch und ForAll
Patch ist eine Funktion, mit der Sie einen Datensatz in Ihrer Datenquelle ändern oder erstellen können. ForAll ist eine Funktion, die es Ihnen ermöglicht, eine Formel für jeden Datensatz in einer Tabelle auszuführen, und Sammlungen sind Tabellen. Sie können diese Funktionen kombinieren, um Ihre Datenquelle mit dem Inhalt Ihrer Sammlung zu aktualisieren. Obwohl im Vergleich zur Collect-Technik mehr Code erforderlich ist, funktioniert die Verwendung von ForAll/Patch am besten, wenn Sie mehr Logik verwenden möchten.
Sie können beispielsweise eine Sammlung namens „collectColorData“ erstellen, die drei Spalten enthält: Name, FavoriteColor und UpdateSource. Die Spalte Quellenaktualisierung kann eine boolesche Spalte sein („true“ oder „false“). Während der Arbeit mit der App kann sich der Benutzer den Wert in der Spalte aktualisieren und dann eine Schaltfläche auswählen, die Quellenaktualisierung lautet. Legen Sie für die OnSelect-Eigenschaft der Schaltfläche diese Formel fest:
ForAll(Filter(collectColorData, UpdateSource = true),
Patch(DataSourceName, Defaults(DataSourceName), {NameColumnSource: Name,
FavoriteColorColumnSource: FavoriteColor}))
Diese Formel fügt Datensätze zur Datenquelle mit dem Namen DataSourceName hinzu, indem sie für die Spalten NameColumnSource und FavoriteColorColumnSource die Werte aus Ihrer Sammlung festlegt, aber nur für die Datensätze, bei denen UpdateSource auf „true“ gesetzt wurde.
Dieses Beispiel kann weiter optimiert werden, aber es sollte das Konzept und die Teile für die dynamische Speicherung Ihrer Sammlung in einer Datenquelle demonstrieren.
Weitere Informationen zu ForAll finden Sie in der ForAll-Dokumentation.
Weitere Informationen zu Patch finden Sie in der Patch-Dokumentation.
Nachdem wir nun erkundet haben, wie wir Daten aus einer Sammlung in eine Datenquelle schreiben können, und warum wir das eine oder das andere verwenden, machen wir eine Übung, in der wir die Arbeit mit externen Daten und Sammlungen üben.