Gegevensbronnen begrijpen in PowerAppsUnderstand data sources in PowerApps

Voor de meeste PowerApps-apps wordt externe informatie gebruikt die is opgeslagen in cloudservices. Deze worden Gegevensbronnen genoemd.Most PowerApps apps use external information stored in cloud services called Data Sources. Een veel voorkomend voorbeeld is bijvoorbeeld een tabel in een Excel-bestand die is opgeslagen in OneDrive voor Bedrijven.A common example is a table in an Excel file stored in OneDrive for Business. Apps krijgen toegang tot deze gegevensbronnen via Verbindingen.Apps access these data sources by using Connections.

In dit artikel worden de verschillende soorten gegevensbronnen besproken en het werken met gegevensbronnen van tabellen.This article discusses the different kinds of data sources, and how to work with table data sources.

Het is gemakkelijk om een app te maken die basale lees- en schrijfactiviteiten naar een gegevensbron kan uitvoeren.It is easy to create an app that does basic reading and writing to a data source. Maar soms wilt u meer controle over hoe gegevens in en uit uw app stromen.But sometimes you want more control over how data flows in and out of your app. In dit artikel wordt beschreven hoe de functies Patch, DataSourceInfo, Validate en Errors u meer controle bieden.This article describes how the Patch, DataSourceInfo, Validate, and Errors functions provide more control.

Soorten gegevensbronnenKinds of data sources

Gegevensbronnen kunnen worden verbonden met een cloudservice of lokaal in een app staan.Data sources can be connected to a cloud service, or they can be local to an app.

Verbonden gegevensbronnenConnected data sources

De meestvoorkomende gegevensbron is een tabel, die u kunt gebruiken om informatie op te halen en op te slaan.The most common data sources are tables, which you can use to retrieve and store information. U kunt verbindingen met gegevensbronnen gebruiken om gegevens te lezen en schrijven in Microsoft Excel-werkmappen, SharePoint-lijsten, SQL-tabellen en nog veel meer. U kunt de gegevens vervolgens opslaan in cloudservices zoals OneDrive voor Bedrijven, DropBox, SQL Server, enzovoort.You can use connections to data sources to read and write data in Microsoft Excel workbooks, SharePoint lists, SQL tables, and many other formats, which can be stored in cloud services like OneDrive for Business, DropBox, SQL Server, etc.

Voorbeelden van andere gegevensbronnen zijn e-mail, agenda's, Twitter en meldingen. Deze gegevensbronnen worden hier echter niet behandeld.Data sources other than tables include email, calendars, Twitter, and notifications, but this article doesn't discuss these other kinds of data sources.

Lokale gegevensbronnenLocal data sources

Met de besturingselementen Galerie, Formulier weergeven en Formulier bewerken kunt u eenvoudig een app maken die gegevens leest uit en schrijft naar een gegevensbron.Using the Gallery, Display form, and Edit form controls, it is easy to create an app that reads and writes data from a data source. Lees het artikel Gegevensformulieren begrijpen om aan de slag te gaan.To get started, read the article Understand data forms.

Als u PowerApps vraagt een app van gegevens te maken, worden deze besturingselementen gebruikt.When you ask PowerApps to create an app from data, these controls are used. Achter de schermen maakt de app gebruik van een interne tabel voor het opslaan en manipuleren van de gegevens die afkomstig zijn uit de gegevensbron.Behind the scenes, the app uses an internal table to store and manipulate the data that comes from the data source.

Een speciaal soort gegevensbron is de Verzameling. Deze staat lokaal in de app en wordt niet ondersteund door een verbinding met een service in de cloud. Daarom kunnen de gegevens niet worden gedeeld met apparaten voor dezelfde gebruiker of tussen gebruikers.A special kind of data source is the Collection, which is local to the app and not backed by a connection to a service in the cloud, so the information can not be shared across devices for the same user or between users. Verzamelingen kunnen worden geladen en lokaal opgeslagen.Collections can be loaded and saved locally.

Soorten tabellenKinds of tables

Tabellen die intern in een PowerApps-app staan zijn vaste waarden, net zoals een getal of een tekenreeks een waarde is.Tables that are internal to a PowerApps app are fixed values, just as a number or a string is a value. Interne tabellen worden niet overal opgeslagen maar zijn alleen aanwezig in het geheugen van uw app.Internal tables aren't stored anywhere, they just exist in your app's memory. U kunt de structuur en gegevens van een tabel niet rechtstreeks wijzigen.You can't directly modify the structure and data of a table. U kunt in plaats daarvan een nieuwe tabel maken via een formule: u gebruikt die formule om een aangepaste kopie van de oorspronkelijke tabel te maken.What you can do instead is to create a new table through a formula: you use that formula to make a modified copy of the original table.

Externe tabellen worden opgeslagen in een gegevensbron om later op te halen en te delen.External tables are stored in a data source for later retrieval and sharing. PowerApps bevat "verbindingen" om opgeslagen gegevens te lezen en te schrijven.PowerApps provides "connections" to read and write stored data. Binnen een verbinding kunt u meerdere tabellen met gegevens openen.Within a connection, you can access multiple tables of information. U selecteert welke tabellen u wilt gebruiken in uw app en elke tabel wordt een afzonderlijke gegevensbron.You'll select which tables to use in your app, and each will become a separate data source.

Voor meer informatie leest u Werken met tabellen, dat verder ingaat op interne tabellen, maar het is ook van toepassing op externe tabellen die zich in een cloudservice bevinden.To learn more, Working with tables goes into more detail about internal tables, but it is also applicable to external tables residing in a cloud service.

Werken met tabellenWorking with tables

U kunt gegevensbronnen van tabellen op dezelfde manier gebruiken als u een interne PowerApps-tabel.You can use table data sources the same way that you use an internal PowerApps table. Net als een interne tabel heeft elke gegevensbron records, kolommen en eigenschappen die u in formules kunt gebruiken.Just like an internal table, each data source has records, columns, and properties that you can use in formulas. Daarnaast:In addition:

  • De gegevensbron bevat dezelfde kolomnamen en gegevenstypen als de onderliggende tabel in de verbinding.The data source has the same column names and data types as the underlying table in the connection.

    Notitie

    Kolomnamen met spaties in gegevensbronnen van Excel of SharePoint worden in PowerApps vervangen door ‘_x0020_’.For SharePoint and Excel data sources that contain column names with spaces, PowerApps will replace the spaces with "_x0020_". 'Kolom twaalf' in SharePoint of Excel wordt bijvoorbeeld weergegeven als 'Kolom_x0020_twaalf' in PowerApps wanneer de naam wordt weergegeven in de gegevensindeling of wordt gebruikt in een formule.For example, "Column Name" in SharePoint or Excel will appear as "Column_x0020_Name" in PowerApps when displayed in the data layout or used in a formula.

  • De gegevensbron wordt automatisch uit de service geladen wanneer de app wordt geladen.The data source is loaded from the service automatically when the app is loaded. U kunt de gegevens geforceerd vernieuwen met behulp van de functie Refresh.You can force the data to refresh by using the Refresh function.
  • Wanneer gebruikers een app uitvoeren, kunnen zij records maken, wijzigen en verwijderen, en die wijzigingen terugkoppelen naar de onderliggende tabel in de service.As users run an app, they can create, modify, and delete records and push those changes back to the underlying table in the service.
    • Records kunnen worden gemaakt met de functies Patch en Collect.Records can be created with the Patch and Collect functions.
    • Records kunnen worden gewijzigd met de functies Patch, Update en UpdateIf.Records can be modified with the Patch, Update, and UpdateIf functions.
    • Records kunnen worden verwijderd met de functies Remove en RemoveIf.Records can be removed with the Remove and RemoveIf functions.
    • Fouten die optreden bij het werken met een gegevensbron zijn beschikbaar via de functie Errors.Errors when working with a data source are available through the Errors function.
  • De functies DataSourceInfo, Defaults en Validate bevatten informatie over de gegevensbron die u kunt gebruiken voor het optimaliseren van de gebruikerservaring.The DataSourceInfo, Defaults, and Validate functions provide information about the data source that you can use to optimize the user experience.

Gegevensbronnen makenCreating data sources

PowerApps kan niet worden gebruikt om een verbonden gegevensbron te maken of de structuur te wijzigen. De gegevensbron moet al ergens in een service bestaan.PowerApps can't be used to create a connected data source, or modify its structure; the data source must already exist in a service somewhere. Bijvoorbeeld, voor het maken van een tabel in een Excel-werkmap die is opgeslagen op OneDrive, moet u eerst Excel Online op OneDrive gebruiken om een werkmap te maken.For example, to create a table in an Excel workbook stored on OneDrive, you first use Excel Online on OneDrive to create a workbook. Vervolgens maakt u er een verbinding naartoe vanuit uw app.Next you create a connection to it from your app.

Gegevensbronnen voor verzamelingen kunnen echter worden gemaakt en gewijzigd in een app, maar deze gegevensbronnen zijn alleen tijdelijk.However, collection data sources can be created and modified inside an app, but are only temporary.

Een of meer records weergevenDisplay one or more records

Het bovenstaande diagram toont de informatiestroom wanneer een app de gegevens in een gegevensbron leest: The diagram above shows the flow of information when an app reads the information in a data source:

  • De informatie wordt opgeslagen en gedeeld via een opslagservice (in dit geval een SharePoint-lijst van een Office 365-site).The information is stored and shared through a storage service (in this case, a SharePoint list of an Office 365 site).
  • Via een verbinding wordt deze informatie beschikbaar voor de app.A connection makes this information available to the app. De verbinding zorgt voor verificatie van de gebruiker voor toegang tot de gegevens.The connection takes care of authentication of the user to access the information.
  • Wanneer de app wordt gestart of de functie Refresh wordt gebruikt, worden er gegevens opgehaald vanuit de verbinding naar een gegevensbron voor lokaal gebruik in de app.When the app is started or the Refresh function is pressed, information is drawn from the connection into a data source in the app for local use.
  • Formules worden gebruikt om de informatie te lezen en weer te geven in de besturingselementen die de gebruiker kan zien.Formulas are used to read the information and expose it in controls that the user can see. U kunt de records van een gegevensbron weergeven met behulp van een galerie op een scherm en de eigenschap Items te verbinden met de gegevensbron: Gallery.Items = DataSource.You can display the records of a data source by using a gallery on a screen and wiring the Items property to the data source: Gallery.Items = DataSource. U kunt besturingselementen binnen de galerie en aan de galerie verbinden met behulp van de eigenschap Default van het besturingselement.You wire controls within the gallery, to the gallery, using the controls' Default property.
  • De gegevensbron is ook een tabel.The data source is also a table. U kunt dus de functies Filter, Sort, AddColumns en andere functies gebruiken om de gegevensbron te verfijnen en te verbeteren voordat u deze als geheel gebruikt.So you can use Filter, Sort, AddColumns, and other functions to refine and augment the data source before using it as a whole. U kunt ook de functies Lookup, First, Last en andere functies gebruiken om te werken met afzonderlijke records.You can also use the Lookup, First, Last, and other functions to work with individual records.

Een record wijzigenModify a record

In de vorige sectie hebt u gezien hoe u een gegevensbron moet lezen.In the prededing section, you saw how to read a data source. Houd er rekening mee dat de pijlen in het bovenstaande diagram één richting hebben.Note that the arrows in the diagram above are one way. Wijzigingen aan een gegevensbron worden niet via dezelfde formules tegengehouden waarmee de gegevens zijn opgehaald.Changes to a data source aren't pushed back through the same formulas in which the data was retrieved. In plaats daarvan worden nieuwe formules gebruikt.Instead, new formulas are used. Vaak wordt een andere scherm gebruikt voor het bewerken van een record dan voor het zoeken naar records, met name op een mobiel apparaat.Often a different screen is used for editing a record than for browsing records, especially on a mobile device.

Voor het wijzigen van een bestaande record van een gegevensbron, moet de record oorspronkelijk afkomstig zijn van de gegevensbron.Note that, to modify an existing record of a data source, the record must have originally come from the data source. De record kan door een galerie, contextvariabele en een willekeurig aantal formules zijn gegaan, maar de oorsprong moet kunnen worden teruggeleid naar de gegevensbron.The record may have traveled through a gallery, a context variable, and any number of formulas, but its origin should be traceable back to the data source. Dit is belangrijk omdat er meer informatie wordt verzonden met de record waarmee deze kan worden aangeduid, wat ervoor zorgt dat u de juiste record wijzigt.This is important because additional information travels with the record that uniquely identifies it, ensuring that you modify the correct record.

Het bovenstaande diagram toont de informatiestroom voor het bijwerken van een gegevensbron: The diagram above shows the flow of information to update a data source:

  • Een besturingselement Formulier bewerken biedt een container voor invoerkaarten, die bestaan uit besturingselementen voor gebruikersinvoer, zoals een besturingselement voor tekstinvoer of een schuifregelaar.An Edit form control provides a container for input cards, which are made up of user input controls such as a text-input control or a slider. De eigenschappen DataSource en Item worden gebruikt voor identificatie van de record om deze te kunnen bewerken.The DataSource and Item properties are used to identify the record to edit.
  • Elke invoerkaart bevat een eigenschap Standaard die meestal is ingesteld op het veld van de record ThisItem van het formulier.Each input card has a Default property, which is usually set to the field of the form's ThisItem record. De besturingselementen in de invoerkaart halen vervolgens hun invoerwaarden uit Standaard.The controls within the input card will then take their input values from Default. Normaal gesproken hoeft u dit niet te wijzigen.Normally you do not need to modify this.
  • Elk invoerkaart toont een eigenschap Update.Each input card exposes an Update property. Deze eigenschap wijst de invoer van de gebruiker toe aan een bepaald veld van de record voor terugschrijven naar de gegevensbron.This property maps the user's input to a specific field of the record for writing back to the data source. Normaal gesproken hoeft u dit niet te wijzigen.Normally you do not need to modify this.
  • Een knop of een afbeeldingsbesturingselement op het scherm stelt de gebruiker in staat om de wijzigingen op te slaan in de record.A button or an image control on the screen enables the user to save changes to the record. De formule OnSelect van het besturingselement zorgt ervoor dat de functie SubmitForm dit uitvoert.The OnSelect formula of the control calls the SubmitForm function to do this work. SubmitForm leest alle Update-eigenschappen van de kaarten en gebruikt dit voor terugschrijven naar de gegevensbron.SubmitForm reads all the Update properties of the cards and uses this to write back to the data source.
  • Soms zullen er problemen optreden.Sometimes there will be issues. Een netwerkverbinding kan niet actief zijn of er wordt door de service een validatiecontrole uitgevoerd waar de app niets van wist.A network connection may be down, or a validation check is made by the service that the app didn't know about. De eigenschappen Fout en ErrorKind van het formulierbesturingselement stellen deze informatie beschikbaar zodat u deze aan de gebruiker kunt weergeven.The Error and ErrorKind properties of the form control makes this information available, so you can display it to the user.

Voor gedetailleerdere controle over het proces kunt u ook de functies Invullen en Fouten gebruiken.For more fine grained control over the process, you can also use the Patch and Errors function. Het besturingselement Formulier bewerken toont een Updates-eigenschap zodat u de waarden van de velden in het formulier kunt lezen.The Edit form control exposes an Updates property so that you can read the values of the fields within the form. U kunt deze eigenschap ook gebruiken om een aangepaste connector voor een verbinding aan te roepen, waarbij u volledig buiten de functies Patch en SubmitForm om werkt.You can also use this property to call a custom connector on a connection, completely bypassing the Patch and SubmitForm functions.

ValidatieValidation

Voordat u een wijziging aanbrengt aan een record, moet de app eerst al het mogelijke doen om ervoor te zorgen dat de wijziging kan worden geaccepteerd.Before making a change to a record, the app should do what it can to make sure the change will be acceptable. Hiervoor zijn twee redenen:There are two reasons for this:

  • Onmiddellijke feedback aan de gebruiker.Immediate feedback to the user. Het beste moment om een probleem te verhelpen is wanneer het gebeurt, wanneer het nog vers in het geheugen van de gebruiker ligt.The best time to fix a problem is right when it happens, when it is fresh in the user's mind. Bij letterlijk elke tik of toetsaanslag kan er rode tekst worden weergegeven die een probleem identificeert met de plaatsing.Literally with each touch or keystroke, red text can appear that identifies an issue with their entry.
  • Minder netwerkverkeer en minder gebruikerslatentie.Less network traffic and less user latency. Meer problemen gedetecteerd in de app betekent minder conversaties via het netwerk voor het detecteren en oplossen van problemen.More issues detected in the app means fewer conversations over the network to detect and resolve issues. Elke conversatie kost tijd waarin de gebruiker moet wachten voordat hij verder kan.Each conversation takes time during which the user must wait before they can move on.

PowerApps biedt twee hulpprogramma's voor validatie:PowerApps offers two tools for validation:

  • De gegevensbron kunt informatie bieden over wat wel en niet geldig is.The data source can provide information about what is and isn't valid. Getallen kunnen bijvoorbeeld minimale en maximale waarden hebben en er kunnen een of meer vermeldingen zijn vereist.For example, numbers can have minimum and maximum values, and one or more entries can be required. U kunt toegang krijgen tot deze gegevens met de functie DataSourceInfo.You can access this information with the DataSourceInfo function.
  • De functie Validate maakt gebruikt van deze informatie om de waarde van één kolom of een hele record te controleren.The Validate function uses this same information to check the value of a single column or of an entire record.

FoutafhandelingError handling

Geweldig, u hebt uw record gevalideerd.Great, you've validated your record. Tijd om die record met Patch bij te werken.Time to update that record with Patch!

Maar helaas is er nog steeds mogelijk een probleem.But, alas, there may still be a problem. Het netwerk is niet beschikbaar, validatie van de service is mislukt, of de gebruiker heeft niet de juiste machtigingen: een aantal mogelijke fouten die uw app kan tegenkomen.The network is down, validation at the service failed, or the user doesn't have the right permissions, just to name a few of the possible errors your app may encounter. De app moet op de juiste wijze op situaties reageren, feedback geven aan de gebruiker en hem de mogelijkheid geven om het op te lossen.It needs to respond appropriately to error situations, providing feedback to the user and a means for them to make it right.

Wanneer er fouten optreden met een gegevensbron, registreert uw app automatisch de gegevens van de fout en maakt deze beschikbaar via de functie Errors.When errors occur with a data source, your app automatically records the error information and makes it available through the Errors function. Fouten worden gekoppeld aan de records waarbij problemen zijn opgetreden.Errors are associated with the records that had the problems. Als het probleem iets is dat kan worden opgelost door de gebruiker, zoals een validatieprobleem, kan de gebruiker de record opnieuw verzenden en worden de fouten gewist.If the problem is something the user can fix, such as a validation problem, they can resubmit the record, and the errors will be cleared.

Als er een fout optreedt bij het maken van een record met Patch of Collect is er geen record waarmee fouten kunnen worden gekoppeld.If an error occurs when a record is created with Patch or Collect, there is no record to associate any errors with. In dit geval wordt leeg geretourneerd door Patch en kan worden gebruikt als het record-argument voor Errors.In this case, blank will be returned by Patch and can be used as the record argument to Errors. Fouten bij het maken worden met de volgende bewerking gewist.Creation errors are cleared with the next operation.

De functie Errors retourneert een tabel met gegevens van de fout.The Errors function returns a table of error information. Deze informatie kan bestaan uit de kolomgegevens indien de fout kan worden toegekend aan een bepaalde kolom.This information can include the column information, if the error can be attributed to a particular column. Gebruik foutberichten op kolomniveau in labelbesturingselementen die zich bevinden vlak bij waar de kolom zich op het scherm Bewerken bevindt.Use column-level error messages in label controls that are close to where the column is located on the edit screen. Gebruik foutberichten op record-niveau waar de Kolom in de fouttabel leeg is, en zich op een locatie dicht bij de knop Opslaan voor de hele record bevindt.Use record-level error messages where the Column in the error table is blank, in a location close to the Save button for the entire record.

Werken met grote gegevensbronnenWorking with large data sources

Wanneer u rapporten maakt van grote hoeveelheden gegevensbronnen (wel miljoenen records), dan wilt u netwerkverkeer zoveel mogelijk minimaliseren.When you are creating reports from large data sources (perhaps millions of records), you want to minimize network traffic. Stel dat u wilt een rapport wilt over alle klanten die een StatusCode 'Platina' hebben in de stad New York.Let's say you want to report on all Customers having a StatusCode of "Platinum" in New York City. En dat uw klantentabel miljoenen records bevat.And that your Customers table contains millions of records.

U wilt die miljoenen klanten zeker niet in uw app laden en vervolgens kiezen welke u wilt.You do not want to bring those millions of Customers into your app, and then choose the ones you want. U wilt dat deze selectie in de cloudservice gebeurt waar de tabel wordt opgeslagen, en alleen de gekozen records via het netwerk verzenden.What you want is to have that choosing happen inside the cloud service where your table is stored, and only send the chosen records over the network.

U kunt veel, maar niet alle, functies voor het kiezen van records delegeren. Dit betekent dat deze worden uitgevoerd in de cloudservice.Many, but not all, functions that you can use to choose records can be delegated, which means that they are run inside the cloud service. U kunt leren hoe u dit doe door te lezen over Delegering.You can learn how to do this by reading about Delegation.

VerzamelingenCollections

Verzamelingen zijn een speciaal soort gegevensbron.Collections are a special kind of data source. Deze staan lokaal in de app en worden niet ondersteund door een verbinding met een service in de cloud. Daarom kunnen de gegevens niet worden gedeeld met apparaten voor dezelfde gebruiker of tussen gebruikers.They're local to the app and not backed by a connection to a service in the cloud, so the information can not be shared across devices for the same user or between users. Zij werken net als elke andere gegevensbron, met enkele uitzonderingen:They operate like any other data source, with a few exceptions:

  • Verzamelingen kunnen dynamisch worden gemaakt met de functie Collect.Collections can be created dynamically with the Collect function. Deze hoeven niet van te voren tot stand te worden gebracht op de manier zoals bij gegevensbronnen op basis van een verbinding.They don't need to be established ahead of time, as connection-based data sources do.
  • De kolommen van een verzameling kunnen op elk moment worden gewijzigd met behulp van de functie Collect.The columns of a collection can be modified at any time using the Collect function.
  • Verzamelingen staan het bestaan van dubbele records toe.Collections allow duplicate records. Er kan meer dan één exemplaar van dezelfde record bestaan in een verzameling.More than one copy of the same record can exist in a collection. Functies zoals Remove worden uitgevoerd op de eerste overeenkomst die ze vinden, tenzij het argument Alle wordt opgegeven.Functions such as Remove will operate on the first match they find, unless the All argument is supplied.
  • U kunt de functies SaveData en LoadData gebruiken om een kopie van de verzameling op te slaan en opnieuw te laden.You can use the SaveData and LoadData functions to save and reload a copy of the collection. De informatie wordt opgeslagen op een persoonlijke locatie die niet toegankelijk is voor andere gebruikers, apps of apparaten.The information is stored in a private location that other users, apps, or devices can't access.
  • U kunt de besturingselementen Exporteren en Importeren gebruiken om een kopie van de verzameling naar een bestand waarmee de gebruiker kan communiceren op te slaan en opnieuw te laden.You can use the Export and Import controls to save and reload a copy of the collection to a file that the user can interact with.

Zie voor meer informatie over werken met een verzameling als een gegevensbron Een verzameling maken en bijwerken.For more information on working with a collection as a data source, see create and update a collection.

Verzamelingen worden vaak gebruikt voor het opslaan van de algemene status van de app.Collections are commonly used to hold global state for the app. Zie Werken met variabelen voor de opties die beschikbaar zijn voor het beheren van de status.See working with variables for the options available for managing state.