Informacje o źródłach danych dla aplikacji kanwy w aplikacjach zaawansowanychUnderstand data sources for canvas apps in Power Apps

W aplikacjach zaawansowanych większość aplikacji kanwy używa zewnętrznych informacji przechowywanych w usługach w chmurze nazywanych źródłami danych.In Power Apps, most canvas apps use external information stored in cloud services called Data Sources. Typowym przykładem jest tabela w pliku programu Excel przechowywana w usłudze OneDrive dla Firm.A common example is a table in an Excel file stored in OneDrive for Business. Aplikacje uzyskują dostęp do tych źródeł danych przy użyciu połączeń.Apps access these data sources by using Connections.

W tym artykule omówiono różne rodzaje źródeł danych oraz sposób pracy ze źródłami danych w formie tabeli.This article discusses the different kinds of data sources and how to work with table data sources.

Utworzenie aplikacji wykonującej podstawowe operacje odczytu i zapisu w źródle danych jest proste.It's easy to create an app that does basic reading and writing to a data source. Niemniej czasami chcemy zyskać większą kontrolę nad sposobem przepływu danych w komunikacji z naszą aplikacją.But sometimes you want more control over how data flows in and out of your app. W tym artykule opisano funkcje Patch , DataSourceInfo , Validate i Errors , które zapewniają większą kontrolę.This article describes how the Patch, DataSourceInfo, Validate, and Errors functions provide more control.

Rodzaje źródeł danychKinds of data sources

Źródła danych mogą być połączone z usługą w chmurze lub mogą być lokalne dla aplikacji.Data sources can be connected to a cloud service, or they can be local to an app.

Połączone źródła danychConnected data sources

Najbardziej typowe źródła danych to tabele, które służą do pobierania i przechowywania informacji.The most common data sources are tables, which you can use to retrieve and store information. Za pomocą połączeń ze źródłami danych można odczytywać i zapisywać dane w skoroszytach programu Microsoft Excel, listach programu SharePoint, tabelach SQL i wielu innych formatach, które można przechowywać w usługach w chmurze, np. OneDrive dla Firm, DropBox, SQL Server itp.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 such as OneDrive for Business, DropBox, and SQL Server.

Źródła danych inne niż tabele obejmują pocztę e-mail, kalendarze, serwis Twitter i powiadomienia, ale w tym artykule nie omówiono tych innych typów źródeł danych.Data sources other than tables include email, calendars, Twitter, and notifications, but this article doesn't discuss these other kinds of data sources.

Lokalne źródła danychLocal data sources

Przy użyciu kontrolek Galeria , Formularz wyświetlania i Formularz edycji można łatwo utworzyć aplikację, która odczytuje dane ze źródła danych i zapisuje je w nim.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. Aby rozpocząć, przeczytaj artykuł Omówienie formularzy danych.To get started, read the article Understand data forms.

W przypadku poproszenia aplikacji zaawansowanych o utworzenie aplikacji na podstawie danych te kontrolki są używane.When you ask Power Apps to create an app from data, these controls are used. W tle aplikacja używa tabeli wewnętrznej do przechowywania danych pochodzących ze źródła danych i manipulowania nimi.Behind the scenes, the app uses an internal table to store and manipulate the data that comes from the data source.

Specjalnym rodzajem źródła danych jest kolekcja, która jest lokalna dla aplikacji i nie jest wspierana przez połączenie z usługą w chmurze, więc informacje w niej zawarte nie mogą być współdzielone na różnych urządzeniach dla tego samego użytkownika lub pomiędzy różnymi użytkownikami.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. Kolekcje można ładować i zapisywać lokalnie.Collections can be loaded and saved locally.

Rodzaje tabelKinds of tables

Tabele, które są wewnętrzne dla aplikacji dla aplikacji zaawansowanych, są stałymi wartościami, tak jak liczba lub ciąg jest wartością.Tables that are internal to a Power Apps app are fixed values, just as a number or a string is a value. Tabele wewnętrzne nie są przechowywane w żadnym miejscu, po prostu istnieją w pamięci aplikacji.Internal tables aren't stored anywhere, they just exist in your app's memory. Nie można bezpośrednio modyfikować struktury i danych tabeli.You can't directly modify the structure and data of a table. Zamiast tego można utworzyć nową tabelę przy użyciu formuły: używając tej formuły do utworzenia zmodyfikowanej kopii oryginalnej tabeli.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.

Tabele zewnętrzne są przechowywane w źródle danych w celu późniejszego pobierania i udostępniania.External tables are stored in a data source for later retrieval and sharing. Aplikacje zaawansowane zapewniają "połączenia", aby odczytywać i zapisywać przechowywane dane.Power Apps provides "connections" to read and write stored data. W ramach połączenia można uzyskać dostęp do wielu tabel zawierających informacje.Within a connection, you can access multiple tables of information. Po wybraniu tabel do użycia w aplikacji każda z nich stanie się oddzielnym źródłem danych.You'll select which tables to use in your app, and each will become a separate data source.

Artykuł Praca z tabelami zawiera więcej szczegółowych informacji o tabelach wewnętrznych, które mają również zastosowanie do tabel zewnętrznych umieszczonych w usłudze w chmurze.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.

Praca z tabelamiWorking with tables

Źródeł danych tabeli można używać w taki sam sposób, jak w przypadku używania wewnętrznej tabeli aplikacji zaawansowanych.You can use table data sources the same way that you use an internal Power Apps table. Podobnie jak w przypadku tabeli wewnętrznej każde źródło danych ma rekordy, kolumny oraz właściwości, których można używać w formułach.Just like an internal table, each data source has records, columns, and properties that you can use in formulas. Dodatkowo:In addition:

  • Źródło danych ma te same nazwy kolumn i typy danych co podstawowa tabela w połączeniu.The data source has the same column names and data types as the underlying table in the connection.

    Uwaga

    W przypadku źródeł danych programu SharePoint i programu Excel, które zawierają nazwy kolumn ze spacjami, aplikacje usługi PowerShell zastąpią spacje "_x0020_" .For SharePoint and Excel data sources that contain column names with spaces, Power Apps will replace the spaces with "_x0020_". Na przykład „Nazwa kolumny” w programie SharePoint lub Excel będzie pojawiać się jako „Nazwa_x0020_kolumny” w usłudze Power Apps w przypadku wyświetlania w układzie danych lub stosowania w formule.For example, "Column Name" in SharePoint or Excel will appear as "Column_x0020_Name" in Power Apps when displayed in the data layout or used in a formula.

  • Źródło danych zostanie załadowane z usługi automatycznie po załadowaniu aplikacji.The data source is loaded from the service automatically when the app is loaded. Możesz wymusić odświeżenie danych przy użyciu funkcji Refresh .You can force the data to refresh by using the Refresh function.

  • Po uruchomieniu aplikacji użytkownicy mogą tworzyć, modyfikować i usuwać rekordy oraz wypychać te zmiany z powrotem do podstawowej tabeli w usłudze.As users run an app, they can create, modify, and delete records and push those changes back to the underlying table in the service.

    • Rekordy można tworzyć przy użyciu funkcji Patch i Collect .Records can be created with the Patch and Collect functions.
    • Rekordy można modyfikować przy użyciu funkcji Patch , Update i UpdateIf .Records can be modified with the Patch, Update, and UpdateIf functions.
    • Rekordy można usuwać przy użyciu funkcji Remove i RemoveIf .Records can be removed with the Remove and RemoveIf functions.
    • Błędy podczas pracy ze źródłem danych są dostępne za pośrednictwem funkcji Errors .Errors when working with a data source are available through the Errors function.
  • Funkcje DataSourceInfo , Defaults i Validate zapewniają informacje o źródle danych, których można używać do optymalizowania interfejsu użytkownika.The DataSourceInfo, Defaults, and Validate functions provide information about the data source that you can use to optimize the user experience.

Tworzenie źródeł danychCreating data sources

Aplikacji zaawansowanych nie można użyć do utworzenia połączonego źródła danych lub zmodyfikowania jego struktury; Źródło danych musi już istnieć w usłudze.Power Apps can't be used to create a connected data source, or modify its structure; the data source must already exist in a service somewhere. Aby na przykład utworzyć tabelę w skoroszycie programu Excel przechowywaną w usłudze OneDrive, należy najpierw użyć usługi Excel Online w usłudze OneDrive w celu utworzenia skoroszytu.For example, to create a table in an Excel workbook stored on OneDrive, you first use Excel Online on OneDrive to create a workbook. Następnie należy utworzyć połączenie ze skoroszytem z poziomu aplikacji.Next you create a connection to it from your app.

Niemniej można tworzyć i modyfikować źródła danych w formie kolekcji w aplikacji, ale są one jedynie tymczasowe.However, collection data sources can be created and modified inside an app, but are only temporary.

Wyświetlanie jednego lub większej liczby rekordówDisplay one or more records

Powyższy diagram przedstawia przepływ informacji, gdy aplikacja odczytuje informacje w źródle danych: The diagram above shows the flow of information when an app reads the information in a data source:

  • Informacje są przechowywane i udostępniane za pośrednictwem usługi magazynu (w tym przypadku listy SharePoint w witrynie usługi Office 365).The information is stored and shared through a storage service (in this case, a SharePoint list of an Office 365 site).
  • Połączenie udostępnia informacje aplikacji.A connection makes this information available to the app. Połączenie zajmuje się uwierzytelnieniem użytkownika, aby zapewnić dostęp do informacji.The connection takes care of authentication of the user to access the information.
  • Po uruchomieniu aplikacji lub użyciu funkcji Refresh informacje są pobierane z połączenia do źródła danych w aplikacji w celu użycia lokalnego.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.
  • Formuły są używane do odczytywania informacji i ujawniania ich w kontrolkach widocznych dla użytkownika.Formulas are used to read the information and expose it in controls that the user can see. Rekordy źródła danych można wyświetlić, używając galerii na ekranie i łącząc właściwość Items ze źródłem danych: 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. Kontrolki w galerii łączy się z galerią przy użyciu właściwości Default kontrolek.You wire controls within the gallery, to the gallery, using the controls' Default property.
  • Źródło danych również jest tabelą.The data source is also a table. Dlatego można użyć funkcji Filter , Sort , AddColumns i innych, aby dostosować i rozszerzyć źródło danych przed użyciem go w całości.So you can use Filter, Sort, AddColumns, and other functions to refine and augment the data source before using it as a whole. Ponadto można użyć funkcji Lookup , First , Last i innych do pracy na poszczególnych rekordach.You can also use the Lookup, First, Last, and other functions to work with individual records.

Modyfikowanie rekorduModify a record

W poprzedniej sekcji przedstawiono sposób odczytywania źródła danych.In the preceding section, you saw how to read a data source. Pamiętaj, że strzałki w powyższym diagramie są jednokierunkowe.Note that the arrows in the diagram above are one way. Zmiany w źródle danych nie są wypychane z powrotem za pośrednictwem tych samych formuł, których użyto do pobrania danych.Changes to a data source aren't pushed back through the same formulas in which the data was retrieved. Zamiast tego używa się nowych formuł.Instead, new formulas are used. Często do edytowania rekordu używa się innego ekranu niż w przypadku przeglądania rekordów, zwłaszcza na urządzeniach przenośnych.Often a different screen is used for editing a record than for browsing records, especially on a mobile device.

Należy pamiętać, że istniejący rekord źródła danych musi oryginalnie pochodzić ze źródła danych, aby można było go zmodyfikować.Note that, to modify an existing record of a data source, the record must have originally come from the data source. Rekord mógł przejść przez galerię, zmienną kontekstową i dowolną liczbę formuł, ale jego pochodzenie powinno dać się prześledzić z powrotem do źródła danych.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. Jest to ważne, ponieważ wraz z rekordem przenoszoną są dodatkowe informacje jednoznacznie go identyfikujące, dzięki czemu na pewno modyfikujesz właściwy rekord.This is important because additional information travels with the record that uniquely identifies it, ensuring that you modify the correct record.

Na powyższym diagramie przedstawiono przepływ informacji w przypadku aktualizacji źródła danych: The diagram above shows the flow of information to update a data source:

  • Kontrolka Formularz edycji zapewnia kontener dla kart wejściowych, które składają się z kontrolek wejściowych użytkownika, np. kontrolki wprowadzania tekstu lub suwaka.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. Właściwości DataSource i Item są używane do identyfikowania rekordu do edytowania.The DataSource and Item properties are used to identify the record to edit.
  • Każda karta wejściowa ma właściwość Default , która zazwyczaj jest ustawiona na pole rekordu ThisItem formularza.Each input card has a Default property, which is usually set to the field of the form's ThisItem record. Kontrolki na karcie wejściowej następnie przyjmują swoje wartości wejściowe z właściwości Default .The controls within the input card will then take their input values from Default. Zwykle nie należy modyfikować tego elementu.Normally you do not need to modify this.
  • Każda karta wejściowa ujawnia właściwość Update .Each input card exposes an Update property. Ta właściwość mapuje dane wejściowe użytkownika na konkretne pole rekordu w celu ich zapisania zwrotnego w źródle danych.This property maps the user's input to a specific field of the record for writing back to the data source. Zwykle nie należy modyfikować tego elementu.Normally you do not need to modify this.
  • Kontrolka przycisku lub obrazu na ekranie umożliwia użytkownikom zapisanie zmian w rekordzie.A button or an image control on the screen enables the user to save changes to the record. Formuła OnSelect kontrolki wywołuje funkcję SubmitForm , aby wykonać to zadanie.The OnSelect formula of the control calls the SubmitForm function to do this work. Funkcja SubmitForm odczytuje wszystkie właściwości Update kart i używa tych informacji do zapisu zwrotnego w źródle danych.SubmitForm reads all the Update properties of the cards and uses this to write back to the data source.
  • Czasami będą występować problemy.Sometimes there will be issues. Może dojść do przerwy w połączeniu sieciowym lub wykonania przez usługę walidacji, o której aplikacja nie miała informacji.A network connection may be down, or a validation check is made by the service that the app didn't know about. Właściwości Error i ErrorKind kontrolki formularza zapewniają dostępność tych informacji, więc można je wyświetlić użytkownikowi.The Error and ErrorKind properties of the form control makes this information available, so you can display it to the user.

Aby uzyskać bardziej szczegółową kontrolę nad procesem, można również użyć funkcji Patch i Errors .For more fine grained control over the process, you can also use the Patch and Errors function. Kontrolka Formularz edycji ujawnia właściwość Updates , aby można było odczytać wartości pól w formularzu.The Edit form control exposes an Updates property so that you can read the values of the fields within the form. Można również użyć tej właściwości, aby wywołać niestandardowy łącznik w połączeniu, całkowicie pomijając funkcje Patch i SubmitForm.You can also use this property to call a custom connector on a connection, completely bypassing the Patch and SubmitForm functions.

WalidacjaValidation

Przed wprowadzeniem zmian w rekordzie aplikacja powinna w miarę możliwości upewnić się, że zmiana będzie akceptowalna.Before making a change to a record, the app should do what it can to make sure the change will be acceptable. Istnieją dwa powody takiego działania:There are two reasons for this:

  • Natychmiastowe informacje zwrotne dla użytkownika.Immediate feedback to the user. Najlepszy moment na rozwiązanie problemu to chwila, w której problem wystąpi, gdy użytkownik jeszcze dobrze go pamięta.The best time to fix a problem is right when it happens, when it is fresh in the user's mind. Dosłownie w przypadku każdego naciśnięcia ekranu lub klawisza może pojawić się czerwony tekst identyfikujący problem z wpisem.Literally with each touch or keystroke, red text can appear that identifies an issue with their entry.
  • Mniejszy ruch sieciowy i mniejsze opóźnienia dla użytkownika.Less network traffic and less user latency. Więcej problemów wykrytych w aplikacji oznacza mniejszą liczbę konwersacji za pośrednictwem sieci, których celem jest wykrywanie i rozwiązywanie problemów.More issues detected in the app means fewer conversations over the network to detect and resolve issues. Każda konwersacja zajmuje czas, a użytkownik musi czekać na wznowienie pracy.Each conversation takes time during which the user must wait before they can move on.

Aplikacje zaawansowane oferują dwa narzędzia do weryfikacji:Power Apps offers two tools for validation:

  • Źródło danych może zapewnić informacje o elementach prawidłowych i nieprawidłowych.The data source can provide information about what is and isn't valid. Na przykład liczby mogą mieć wartości minimalne i maksymalne. Może też być wymagany co najmniej jeden wpis.For example, numbers can have minimum and maximum values, and one or more entries can be required. Do tych informacji można uzyskać dostęp przy użyciu funkcji DataSourceInfo .You can access this information with the DataSourceInfo function.
  • Funkcja Validate używa tych samych informacji do sprawdzenia wartości pojedynczej kolumny lub całego rekordu.The Validate function uses this same information to check the value of a single column or of an entire record.

Obsługa błędówError handling

Wspaniale. Rekord przeszedł walidację.Great, you've validated your record. Czas na zaktualizowanie rekordu przy użyciu funkcji Patch .Time to update that record with Patch!

Niemniej nadal może występować problem.But, alas, there may still be a problem. Sieć nie działa, walidacja po stronie usługi nie powiodła się lub użytkownik nie ma odpowiednich uprawnień — jest to tylko kilka możliwych błędów, które może napotkać aplikacja.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. Musi ona reagować odpowiednio na tego typu sytuacje, zapewniając użytkownikowi informacje zwrotne i możliwości rozwiązania problemów.It needs to respond appropriately to error situations, providing feedback to the user and a means for them to make it right.

Jeśli wystąpią problemy związane ze źródłem danych, aplikacja będzie automatycznie rejestrować informacje o błędach i udostępniać je za pośrednictwem funkcji Errors .When errors occur with a data source, your app automatically records the error information and makes it available through the Errors function. Błędy są powiązane z rekordami, w których wystąpiły problemy.Errors are associated with the records that had the problems. Jeśli problem może być naprawiony przez użytkownika, np. problem z walidacją, użytkownik może ponownie przesłać rekord, a błędy zostaną wyczyszczone.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.

Jeśli błąd występuje podczas tworzenia rekordu przy użyciu funkcji Patch lub Collect , nie ma rekordu, z którym można powiązać jakiekolwiek błędy.If an error occurs when a record is created with Patch or Collect, there is no record to associate any errors with. W takim przypadku funkcjaPatch zwróci wartość pustą i można jej użyć jako argumentu rekordu w funkcji Errors .In this case, blank will be returned by Patch and can be used as the record argument to Errors. Błędy związane z tworzeniem są usuwane podczas następnej operacji.Creation errors are cleared with the next operation.

Funkcja Errors zwraca tabelę z informacjami o błędzie.The Errors function returns a table of error information. Informacje te mogą zawierać informacje o kolumnie, jeśli błąd może być przypisany do konkretnej kolumny.This information can include the column information, if the error can be attributed to a particular column. Używaj komunikatów o błędach na poziomie kolumny w kontrolkach etykiety znajdujących się w pobliżu lokalizacji kolumny na ekranie edycji.Use column-level error messages in label controls that are close to where the column is located on the edit screen. Używaj komunikatów o błędach na poziomie rekordu, w których pozycja Column w tabeli błędu ma wartość pustą, w lokalizacji w pobliżu przycisku Zapisz dla całego rekordu.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.

Praca z dużymi źródłami danychWorking with large data sources

Podczas tworzenia raportów na podstawie dużych źródeł danych (zawierających miliony rekordów) należy minimalizować ruch sieciowy.When you are creating reports from large data sources (perhaps millions of records), you want to minimize network traffic. Załóżmy, że chcemy uzyskać raport dotyczący wszystkich klientów z właściwością StatusCode o wartości „Platinum” w Nowym Jorku.Let's say you want to report on all Customers having a StatusCode of "Platinum" in New York City. Ponadto załóżmy, że tabela klientów zawiera miliony rekordów.And that your Customers table contains millions of records.

Nie chcesz przenosić milionów klientów do aplikacji, a następnie wybierać żądanych rekordów z całej listy.You do not want to bring those millions of Customers into your app, and then choose the ones you want. Lepiej będzie, jeśli proces wyboru zostanie obsłużony w usłudze w chmurze, w której przechowywana jest tabela, a przez sieć zostaną wysłane tylko wybrane rekordy.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.

Wiele funkcji (jednak nie wszystkie) umożliwiających wybieranie rekordów można delegować, co oznacza, że są uruchamiane w usłudze w chmurze.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. Możesz dowiedzieć się, jak to zrobić, czytając o delegowaniu.You can learn how to do this by reading about Delegation.

KolekcjeCollections

Kolekcje są specjalnym rodzajem źródła danych.Collections are a special kind of data source. Są one lokalne dla aplikacji i nie są wspierane przez połączenie z usługą w chmurze, więc informacje w nich zawarte nie mogą być współdzielone na różnych urządzeniach przez tego samego użytkownika ani między różnymi użytkownikami.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. Działają podobnie jak inne źródła danych z pewnymi wyjątkami:They operate like any other data source, with a few exceptions:

  • Kolekcje można tworzyć dynamicznie przy użyciu funkcji Collect .Collections can be created dynamically with the Collect function. Nie trzeba ustawiać ich z wyprzedzeniem, tak jak w przypadku źródeł danych opartych na połączeniu.They don't need to be established ahead of time, as connection-based data sources do.
  • Kolumny kolekcji można modyfikować w dowolnym momencie przy użyciu funkcji Collect .The columns of a collection can be modified at any time using the Collect function.
  • Kolekcje zezwalają na zduplikowane rekordy.Collections allow duplicate records. W kolekcji może istnieć więcej niż jedna kopia tego samego rekordu.More than one copy of the same record can exist in a collection. Funkcje takie jak Remove będą działać względem pierwszego znalezionego dopasowania, chyba że zostanie podany argument All.Functions such as Remove will operate on the first match they find, unless the All argument is supplied.
  • Można użyć funkcji SaveData i LoadData do zapisywania i ponownego ładowania kopii kolekcji.You can use the SaveData and LoadData functions to save and reload a copy of the collection. Informacje są przechowywane w prywatnej lokalizacji, do której nie mają dostępu inni użytkownicy, aplikacje ani urządzenia.The information is stored in a private location that other users, apps, or devices can't access.
  • Można użyć kontrolek Eksportuj i Importuj , aby zapisać i ponownie załadować kopię kolekcji w pliku, z którym użytkownik może wchodzić w interakcje.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.

Aby uzyskać więcej informacji na temat pracy z kolekcją jako źródłem danych, zobacz Tworzenie i aktualizowanie kolekcji.For more information on working with a collection as a data source, see create and update a collection.

Kolekcje są często używane do przechowywania stanu globalnego dla aplikacji.Collections are commonly used to hold global state for the app. Aby uzyskać informacje o dostępnych opcjach zarządzania stanem, zobacz Praca ze zmiennymi.See working with variables for the options available for managing state.