Arbeiten mit Katalogen in PowerApps

In den vorherigen Beiträgen haben wir uns mit den Grundlagen von Microsoft PowerApps beschäftigt und diese mit Daten verbunden sowie diese bearbeitet.

  1. Arbeiten mit PowerApps – Grundlagen
  2. Grundlagen von PowerApps Komponenten und PowerApps Studio
  3. Daten anlegen, ändern und löschen mit PowerApps

Dabei haben wir im letzten Artikel mit Datentabellen (Datatables) gearbeitet. Diese bieten den Vorteil relativ einfach Daten anzeigen zu lassen, Sie können aber keine Daten in der Tabelle direkt bearbeiten. Dieses Manko und einige Funktionen mehr bieten Kataloge. Ein Katalog präsentiert Ihnen eine ansprechende Übersicht über Ihre Daten und Sie können auf einzelne Zeilen reagieren. Auch ist das Design der Ansichten viel flexibler als Datentabellen. Wollen Sie allerdings ein Design wie in einer Datentabelle, ist der initiale Aufwand etwas höher. Dieser Artikel beschreibt, wie Sie mit Katalogen engl. Gallerys, genau dies erreichen. Wir beginnen also gleich mit dem Workshop.

Gehen Sie zu der App welche wir in den vorherigen Artikeln erstellt haben und fügen Sie über das Ribbon Home oder Einfügen der App einen neuen leeren Bildschirm (Screen) hinzu. Dies dient nur Demonstrationszwecken, in der realen Welt können Sie dies natürlich auf dem Startscreen machen. Auf dem neuen Screen fügen Sie über das Ribbon Einfügen einen Katalog hinzu. Sie können dabei aus mehreren Vorlagen auswählen, wir wählen die Vorlage Leer.

Verbinden Sie zuerst den Katalog mit der Datenquelle, welche wir vorher erstellt haben. Klicken Sie dazu den Katalog an. In den Eigenschaften können Sie dann die Datenverbindung auswählen.

In der Gallery stehen zwei Links, Element aus der Registerkarte „Einfügen“ hinzufügen und Verbindung mit Daten herstellen. Klicken Sie  auf das Ribbon Einfügen und fügen Sie über Text eine Texteingabe hinzu. Wenn Sie das Feld hinzufügen hat diese noch keine Bindung. Um dies zu erreichen, klicken Sie auf die Gallery und unterhalb von Datenquellen auf Felder => Bearbeiten. Jetzt können Sie dem Feld mitgeben welche Spalte der Datenquelle Sie an das Feld binden möchten. In meinen Fall habe ich das Feld an die Spalte Titel gebunden. Sie werden sehen, dass für jeden Eintrag in der Datenquelle eine Zeile erzeugt wird.

Wiederholen Sie dieses Vorgehen noch zwei Mal, wobei Sie die Textfelder nebeneinander anordnen können. Das fertige Layout könnte dann folgendermaßen aussehen:

Wir sehen jetzt alle Einträge in der Datenquelle im Katalog, wobei zwischen den Einträgen relativ große Abstände bestehen und jede Zelle einen Rahmen hat. Um dies zu ändern, klicken Sie auf dem Katalog und dort oben links auf das Stift Symbol. Sie sehen dann ein Rechteck, wobei dieses mit runden Markern markiert ist. Ziehen Sie an der unteren Seite des Rechteckes dieses am mittleren Marker nach oben. Dies solange, bis das Rechteck fast nicht mehr vorhanden ist. Sie sehen gleichzeitig, wie sich die Abstände zwischen den Zeilen verändern. Wählen Sie den für Sie richtigen Abstand.

Klicken Sie dann auf das erste Feld ganz oben links in der ersten Zeile. In der Eigenschaft Rand des Feldes in dessen Eigenschaften können Sie jetzt den Rahmen auswählen bzw. keinen Rahmen anzeigen lassen. Diese Anpassung können Sie mit jeder Spalte individuell vornehmen.

Automatische Speicherung von Zeilen aktivieren

Nachdem wir die optische Anpassung erledigt haben, wäre es noch gut die automatische Speicherung zu konfigurieren, wenn Benutzer innerhalb einer Zeile etwas ändern. Dabei brauchen wir keine Schaltfläche, es genügt wenn wir einen Datensatz in einer Zelle bearbeiten und diese Zelle verlassen. Die Formel um einen Datensatz in einer Datenquelle zu ändern, ist Patch. Ähnlich wie Collect müssen wir dieser Formel sagen, welche Felder in der Datenquelle verändern werden sollen und wo sich die Felder in der PowerApp befinden welche die Daten enthalten. Die Formel ist aufgebaut in dem Format

Patch(Datenquelle; Zu ändernder Datensatz; {Datenfeld(er)})

In unserem Beispiel könnte die Formel also so aussehen, wenn das Feld Title geändert wird.

Patch(Beschaffung;Gallery.Selected;{Titel:txtGallTitle.Text})

Dabei ist Beschaffung die Datenquelle, die Gallery hat den Namen Gallery, Titel ist der Name der Spalte in der Datenquelle und txtGallTitle.Text ist der Name des Feldes in der PowerApp.

Klicken Sie wieder auf das Stift Symbol im Katalog und klicken Sie jedes Feld an. Im jedem Feld fügen Sie unter Erweitert der Eigenschaft OnChange die Formel hinzu, natürlich angepasst auf das jeweilige Feld. Wenn das Feld verlassen wird, wird die Formel ausgeführt.

Neue Datensätze hinzufügen oder bestehende Datensätze löschen ist analog der Datentabelle im vorherigen Artikel. Fügen Sie ein Formular und Schaltflächen hinzu und konfigurieren Sie beides.

Haben Sie diese Anforderung schon einmal gehabt? Oder eine andere Frage? Dann schreiben Sie einen Kommentar!

Vielen Dank für Ihr Interesse an meinem Blogeintrag.
Gerne beantworte ich Ihnen persönlich weitergehende Fragen zu diesem Thema.
Kontaktieren Sie mich einfach über mein Kontaktformular oder schreiben Sie einen Kommentar.

Sie wollen mehr über meine Leistungen erfahren? Dann klicken Sie hier.

Werbeanzeigen

Daten anlegen, ändern und löschen mit PowerApps


Dieser Blogartikel ist Teil einer Serie über das Erstellen von PowerApps. Weitere Artikel finden Sie hier:

1.            Arbeiten mit PowerApps – Grundlagen
2.            Grundlagen von PowerApps Komponenten und PowerApps Studio

Die beiden vorherigen Artikel haben sich mit den Grundlagen von PowerApp und deren Komponenten beschäftigt. Dabei wurden die ersten Teile einer PowerApp für ein einfaches Bestellwesen entwickelt. Dieser Artikel beschreibt das weitere Vorgehen und erweitert die vorher erstellte PowerApp.

Im aktuellen Stand haben wie der PowerApp eine Datenverbindung zu SharePoint hinzugefügt und einen Datentabelle sowie ein Formular zum Bearbeiten der einzelnen Datensätze eingefügt.

Die nächsten Aufgaben wären jetzt die Änderungen in die Datenquelle zurückzuschreiben, neue Einträge in der Datenquelle zu erstellen sowie vorhandene zu löschen. Wir benötigen dazu zuerst drei Schaltflächen, eine für das Speichern von Änderungen, eine um einen neuem Eintrag zu erstellen und eine zum Löschen. Klicken Sie dazu im Ribbon auf Einfügen und auf Schaltfläche.

Platzieren Sie die Schaltflächen unterhalb des Formulars. Wenn Sie eine Schaltfläche anklicken, können Sie in der Eigenschaft Text die Beschriftung ändern. Es bietet sich außerdem an den Schaltflächen einen selbst beschreibenden Namen zu geben.

Achtung: Wir werden im Folgenden einige Formeln verwenden. In der Dokumentation ist angegeben, dass Argumente in einer Funktion mit einem Komma (,) getrennt werden. Wenn Sie allerdings in einer deutschsprachigen Umgebung entwickeln, müssen Sie die Argumente mit einem Semikolon (;) trennen! Ich werde in diesen Artikeln in einer deutschsprachigen Umgebung arbeiten. Beachten Sie auch, dass die Codebeispiele aus dem Internet fast immer mit Komma arbeiten. Wenn Sie diese Beispiele verwenden wollen, müssen Sie diese entsprechend ändern.

Neue Daten anlegen

Damit ein Speichervorgang ausgeführt wird, muss die Datenquelle auf den Klick der Schaltfläche Neuer Eintrag reagieren. Dies erfolgt über eine Formel, welche der Schaltfläche in der Registerkarte Erweitert in der Eigenschaft OnSelect mitgegeben wird. Es gibt mehrere Formeln, welche dazu verwendet werden können einen neuen Wert in einer Datenquelle zu speichern.

Die erste Möglichkeit ist die Formel NewForm(Name des Formulars). In meinen Fall wäre dies

NewForm(Form1).

Dieses Format hat allerdings Probleme, wenn Sie im gleichen Formular Einträge ändern und neue Einträge erstellen. Daher ist die bessere Alternative, die Formel Collect zu verwenden. Die Formel besteht aus dem Format:

Collect(Datenquelle, Element, … )

wobei Element eine Aufzählung ist welche Felder in der Datenquelle mit welchem Wert gefüllt werden. Die Auflistung hat dabei das Format {Name des Felds in der Datenquelle:Wert eines Feldes in der PowerApp;<Nächstes Feld…>}
In unserem Fall würde also die Formel wie folgt aussehen. Diese Formel tragen wir in die OnSelect Eigenschaft der Schaltfläche Neuer Eintrag ein.

Collect(Bestellungen;{Title:DataCardValue1.Text;Menge:Value(DataCardValue2.Text);Beschreibung:DataCardValue3.Text})

Die Felder welche wir in der Funktion angeben, DataCardValueX, sind die Felder welche die Werte im Formular enthalten. Diese Felder werden in PowerApp Karten genannt. Sie können die Namen der Felder/Karten in der Übersicht links finden, indem Sie einfach die Datenfelder des entsprechenden Formulars erweitern.

Wenn ein neuer Wert einer Datenquelle hinzugefügt wird, wird diese automatisch aktualisiert. Damit wird der neue Wert auch gleich in der Datentabelle angezeigt.

Achtung: Die Funktion Collect prüft nicht, ob die Datenquelle welche Sie angeben wirklich existiert. Wenn Sie also z.B. einen Schreibfehler haben, wird die Funktion ohne Beanstandung ausgeführt, Sie erhalten allerdings keinerlei Ergebnis oder Fehler.

Damit wir nach jeden Eintrag wieder leere Eingabefelder haben und das Formular zurücksetzen, ergänzen wir die Formel oben um ;;NewForm(Form1);;ResetForm(Form1). Dabei verbindet ;; zwei Formeln miteinander. Die komplette Formel wäre also

Collect(Bestellungen;{Title:DataCardValue1.Text;Menge:Value(DataCardValue2.Text);Beschreibung:DataCardValue3.Text});;NewForm(Form1);;ResetForm(Form1)

Vorhandene Daten aktualisieren

Vorhandene Daten zu aktualisieren ist einfacher. Editieren Sie die Schaltfläche zum Aktualisieren wie schon oben beschrieben und benennen diese mit Speichern. In der OnSelect Eigenschaft können wir jetzt aber nicht mehr die Collect Funktion verwenden, sondern einfach SubmitForm(Name des Formulars). In meinen Fall wäre dies

SubmitForm(Form1)

Wenn Sie einen Datensatz in der Tabelle anklicken, erscheint dieser im Formular. Ändern Sie die Werte entsprechend und klicken Sie dann auf den Button.

Vorhandene Daten löschen

Um vorhandene Daten zu löschen, editieren Sie die dritte Schalfläche und ändern die Beschriftung in Löschen. Fügen in der OnSelect Eigenschaft der Schaltfläche die folgende Formel ein.

Remove(Bestellungen;DataTable1.Selected)

Dabei ist Bestellungen die Datenquelle und DataTable1.Selected der ausgewählte Datensatz in der Datentabelle.

Haben Sie diese Anforderung schon einmal gehabt? Oder eine andere Frage? Dann schreiben Sie einen Kommentar!

Vielen Dank für Ihr Interesse an meinem Blogeintrag.
Gerne beantworte ich Ihnen persönlich weitergehende Fragen zu diesem Thema.
Kontaktieren Sie mich einfach über mein Kontaktformular oder schreiben Sie einen Kommentar.

Sie wollen mehr über meine Leistungen erfahren? Dann klicken Sie hier.