Datenquelle in Power Apps ändern

Die Datenquelle in PowerApps zu ändern kann verschiedene Gründe haben. In diesem Beispiel wurde von Excel auf SharePoint Online als Datenquelle umgestellt.

Artikel die auf das Modifizieren der .msapp Datei hinweisen, sind aktuell alle ungültig. Egal ob mit 7Zip, ZIP, entpacken, ZIP modifizieren, Archivbit etc. Am Ende wird die Änderung, der ganze Screen oder die ganze App verworfen.

Da dies weder automatisiert, noch manuell per Suchen/Ersetzen erledigt werden kann, bleibt manuelle Arbeit im Editor.

Was ist unterstützt?

Leider gibt es kein Boardmittel, um eine Datenquelle umzustellen. Laut diesem Artikel https://powerusers.microsoft.com/t5/Building-Power-Apps/how-to-change-the-data-source-in-powerapps/td-p/388264 muss eine Datenquelle und die entsprechenden Formulare bzw. dessen Data Cards neu hinzugefügt werden. Befolgt man das, hat das zur Folge, dass das Layout und alle Anpassungen zurückgesetzt werden. Das kann durchaus dramatische Aufwände nach sich ziehen und ist meistens keine Option.

Vorgehen

Um die Datenquelle umzustellen, benötigt man zuerst die Daten in der Zielumgebung. In meinem Fall wurde eine Excel-Datei mit ca. 1.600 Spalten zusätzlich auf mehrere SharePoint Listen aufgesplittet. Heißt, die Daten müssen mindestens erstmal auf SharePoint importiert werden. Hier hilft Excel.

Import Excel nach SharePoint

– Format as Table – Export Table to SharePoint List:

Restrukturierung

Möglicherweise müssen Daten/Tabellen neu strukturiert werden. In meinem Beispiel gab es mehr Spalten als technisch in SharePoint Online unterstützt werden. Diese müssen dann ggf. über mehrere Schritte in mehrere SharePoint Listen exportiert werden. Hier hilft wieder Excel, d.h. man muss die Tabelle entsprechend mehrfach oft formatieren und exportieren – aber VORSICHT: Ist die Excel-Datei produktiv genutzt, führt das dazu, dass Power Apps nicht mehr auf das Excel zugreifen kann (da Tabelle umformatiert).

Restrukturierung am Besten immer mit einer Kopie der Excel-Datei vornehmen.

Anpassen der Power App

Der aufwendigste Teil ist es, die Power App anzupassen:

  1. Datenquelle anpassen
  2. Manchmal Formeln wie Filter, Search, Lookup anpassen (hier auch auf Spaltentypen achten)
  3. Spalten-Titel und interne Namen kontrollieren. Diese können sich von SharePoint unterscheiden

Datenquelle anpassen

Sofern die Datenquelle, also die Tabelle, in einem Stück nach SharePoint exportiert werden kann, ist das durchaus überschaubar.

Als erstes muss man die neue Datenquelle hinzufügen, hier “Expenses_1”. Diese kann natürlich auch noch umbenannt werden:

Power Apps Data Source

Jetzt kommt der aufwendige Teil, denn es müssen alle Stellen gefunden und aktualisiert werden, die sich auf die ursprüngliche Datenquelle beziehen.

Auch wenn das Ersetzen innerhalb der .msapp Datei (Power App öffnen – Save As) nicht funktioniert, kann es durchaus hilfreich sein, die .msapp in .zip umzubenennen und auszupacken. Im Unterordner Controls gibt es für jeden Screen eine .json Datei, diese am besten mit Visual Studio Code öffnen und mit JSon Tools formatieren. Hier kann man zumindest suchen und die Stellen schnell finden, auf die referenziert wird.

Hier ein Beispiel am Formular:

Etwas schwieriger wird es, wenn man eine umfangreiche Restrukturierung vorgenommen hat, d.h. eine Tabelle nun auf mehrere aufgesplittet hat.

Formeln anpassen

Wenn aufgesplittet wurde und man vorher den Datensatz per BrowseGallery.Selected geholt hat, muss man nun zwei zusätzliche Schritte einbauen:

  • Beim Wechsel von einem Screen zum nächsten eine ID mitgeben (diese muss auch in der Datenquelle gespeichert werden, z.B. Auftragsnummer etc.)
Navigate(New_expense,Fade,{var_CurrentBudgetID: Gallery1.Selected.BudgetId})
Pass Variable to new screen

Auf der nächsten Seite muss dann anstatt vorher per BrowserGallery.Selected eben gefiltert werden. Hierzu können “Filter” oder “Lookup” dienen. Wird “Search” verwendet, wird kein “Delegation” bei SharePoint unterstützt, d.h. filter am Server anwenden. Mein Beispiel in Kombination mit First und Filter:

First(Filter(Expenses_1,BudgetId = var_CurrentBudgetID))

  • Auch andere Anpassungen innerhalb von Search, Lookup etc. können möglich sein, falls sich z.B. ein Spaltentyp von Text auf Nummer ändert. Hier auch ein besonderes Augenmerk auf den App checker legen, ob dieser Fehler meldet:
App checker – ok

Anpassen der Spalten (Achtung!)

Jetzt kommt der letzte Streich, der hat etwas für Kopfzerbrechen gesorgt. Nach all diesen Änderungen und einem Test, wurde teilweise nicht alle Werte gespeichert.

Insbesondere die erste Textspalte, Systemspalten “ID, Author…” sind anfällig dafür. Ursache ist die Umstellung auf SharePoint und der Import durch Excel. In SharePoint gibt es immer Spaltentitel und interne Spaltennamen. Diese können sich durchaus unterscheiden, z.B. wenn man manuell eine Spalte umbenennt, wird nur der Titel, nicht aber der interne Spaltenname geändert. Daher müssen die entsprechenden Felder kontrolliert werden, in PowerApps werden beide – Spaltennamen und Spaltentitel verwendet, und wenn es vorher gleich war, nach dem Import unterschiedlich liegt hier die Fehlerquelle.

Hier am Beispiel “Expense name”:

Der Spaltenname ist hier korrekt.

Überprüft man dies in den Listeneinstellungen in SharePoint, erhält man den Spaltennamen und -titel:

Und jetzt der Fehler, vor dem Import stimmen die Namen überein, nach dem Import muss dies bei “DataField” auf den korrekten internen Namen geändert werden:

Nach Abschluss dieser Änderung, funktioniert auch das Abspeichern. Das Attribut “MaxLength” ist zwar eher kosmetischer Natur, muss aber auch angepasst werden, z.B. von (der alte Wert wird ggf. nicht mehr korrekt aufgelöst):

DataSourceInfo(%DATACARD_DATASOURCE_NAME.ID%, %DataSourceInfo.RESERVED%.MaxLength, "%DATACARD_FIELD_NAME.ID%")

//auf:
DataSourceInfo([@Expenses_1],MaxLength,"Title")

Fazit

Die Umstellung einer Datenquelle ist aktuell aufwendige manuelle Arbeit. Um diesen Prozess zu verbessern, bitte ich um eure Stimme auf Uservoice: https://powerusers.microsoft.com/t5/Power-Apps-Ideas/Change-data-sources/idi-p/562005

0 0 vote
Article Rating
Teilen

Autor: Dennis Hobmaier

Dennis Hobmaier ist Consultant - Digital Workspace bei Insight Technology Solutions GmbH. Er hat über 15 Jahre Erfahrung in IT-Enterprise Umgebung aller Größenordnungen und bedient Kunden aus den unterschiedlichsten Branchen. Als MCSE SharePoint hat er tiefgreifende Kenntnisse in den Bereichen Microsoft Active Directory, Windows, Azure, SharePoint und Office 365. Gerne teilt er seine Projekterfahrung mit Ihnen.

Subscribe
Notify of
guest

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie mehr darüber, wie Ihre Kommentardaten verarbeitet werden .

0 Comments
Inline Feedbacks
View all comments