了解畫布應用程式中的資料來源

在 Power Apps 中,大部分的畫布應用程式使用儲存於雲端服務中,稱為 資料來源 的外部資訊。 常見範例是儲存在 OneDrive for Business 中的 Excel 檔案資料表。 應用程式會使用 連線 來存取這些資料來源。

本文討論不同類型的資料來源,以及如何使用資料表資料來源。

要建立進行基本讀取和寫入資料來源的應用程式很容易。 但有時候您會想要進一步控制您應用程式的資料流入及流出方式。 本文將說明 PatchDataSourceInfoValidateErrors 函式如何提供更大的控制權。

資料來源的種類

資料來源可以連接至雲端服務,也可以當應用程式的本機。

已連線的資料來源

最常見的資料來源是 資料表,您可以使用它來擷取與儲存資訊。 您可以使用資料來源的 連線 來讀取與寫入 Microsoft Excel 活頁簿、SharePoint 清單、SQL 資料表,以及許多其他格式的資料,這些都可以儲存在像是商務用 OneDrive、DropBox 及 SQL Server 等雲端服務中。

資料表以外的資料來源包括電子郵件、行事曆、Twitter 和通知,但是這篇文章並不會討論這些其他類型的資料來源。

本機資料來源

使用 GalleryDisplay formEdit form 控制項可以輕鬆地建立從資料來源讀取與寫入資料的應用程式。 若要開始,請參閱 了解資料表單 文章。

當您要求 Power Apps 從資料建立應用程式時,會使用這些控制項。 在幕後,應用程式會使用內部資料表來儲存及處理來自資料來源的資料。

集合 是一種特殊的資料來源,這對應用程式是本機的,且不受連接至雲端中的服務支援,因此資訊不能跨裝置在相同使用者或在多個使用者之間共用。 可在本機載入和儲存的集合。

資料表的類型

Power Apps 應用程式內部的資料表是固定的值,就像數字或字串是值一樣。 內部資料表不會儲存在任何地方,只存在於應用程式的記憶體內。 您無法直接修改資料表的結構和資料。 但您可以做的是,透過公式建立新的資料表︰您使用該公式來製作原始資料表的修改副本。

外部資料表會儲存在資料來源中,以供日後擷取與共用。 Power Apps 提供「連線」來讀取和寫入儲存的資料。 在連線內,您可以存取多個資訊資料表。 您將選取要在應用程式中使用的資料表,且每個都將成為個別的 資料來源

若要深入了解,使用資料表 會更詳細探討內部資料表的細節,但它也適用於位於雲端服務中的外部資料表。

使用資料表

使用資料表資料來源的方式,和使用內部 Power Apps 資料表的方式相同。 就像內部資料表一樣,每個資料來源都有可以在公式中使用的記錄資料行 以及屬性。 此外:

  • 資料來源與連線中的基礎資料表具有相同的資料行名稱和資料類型。

    注意

    SharePoint 和 Excel 資料來源可包含資料行名稱具有空格,而 Power Apps 會用 "_x0020_" 取代空格。 例如,SharePoint 或 Excel 中的 "Column Name" 在資料版面配置中顯示或用於公式時,將在 Power Apps 中顯示為 "Column_x0020_Name"

  • 資料來源是在應用程式載入時從服務自動載入。 您可以使用 Refresh 函式強制資料重新整理。

  • 當使用者執行應用程式時,他們可以建立、修改和刪除記錄,並將這些變更發送回服務中的基礎資料表。

  • DataSourceInfoDefaultsValidate 函式提供可用來優化使用者經驗的資料來源相關資訊。

建立資料來源

Power Apps 無法用來建立已連線的資料來源或修改其結構;資料來源必須已存在於某處的服務中。 例如,若要在儲存於 OneDrive 上的 Excel 活頁簿中建立資料表,您要先使用 OneDrive 上的 Excel Online 來建立活頁簿。 接下來,要從您的應用程式建立與其的連線。

不過,集合資料來源 可以 在應用程式內建立和修改,但只是暫時性的。

顯示一或多個記錄

應用程式讀取資料來源中資訊時的資訊流程。 上圖顯示當應用程式讀取資料來源中資訊時的資訊流程︰

  • 資訊會透過儲存體服務(在此案例中,是 Office 365 網站的 SharePoint 清單),儲存並共用。
  • 連線會提供這項資訊給應用程式。 連線會負責驗證存取資訊的使用者。
  • 啟動應用程式或按下 Refresh 函式時,資訊會從連接到應用程式資料來源的連線中提取,以供本機使用。
  • 公式用來讀取資訊並將它公開在使用者可見的控制項。 您可以透過畫面上的資源庫和把 Items 屬性連到資料來源︰Gallery.Items = DataSource,來顯示資料來源的記錄。 請使用控制項的 Default 屬性,將資源庫內的控制項連線至資源庫。
  • 資料來源也是資料表。 因此,您可以使用 FilterSortAddColumns 和其他函式,在資料來源作為整體使用前改善並強化它。 您也可以使用 LookupFirstLast 和其他函式來使用個別的記錄。

修改記錄

在先前章節中,您已看到如何讀取資料來源。 請注意,上圖中的箭號是單向。 資料來源的變更不是透過擷取資料的相同公式回推。 而是使用新的公式。 通常編輯記錄與瀏覽記錄會使用不同的畫面,尤其是在行動裝置上。

請注意,若要修改資料來源的現有記錄,記錄必須本來就來自原始資料來源。 記錄可能會資源庫、內容變數,及其他某些公式間移動,但是其來源應該可回溯至資料來源。 這很重要,因為其他資訊會與唯一識別它的記錄共同移動,以確保您修改的是正確的記錄。

更新資料來源的資訊流程。 上圖顯示更新資料來源的資訊流程︰

  • Edit form 控制項提供輸入卡片的容器,是由使用者 input 控制項(如 text-input 控制項或滑桿)所組成。 DataSourceItem 屬性是用來識別要編輯的記錄。
  • 每個輸入卡片都有 Default 屬性,通常設定為表單之 ThisItem 記錄的欄位。 輸入卡片內的控制項會從 Default 取得其輸入值。 通常您不需要修改這個值。
  • 每個輸入卡片會公開一個 Update 屬性。 這個屬性會將使用者的輸入對應至記錄的特定欄位,以寫回資料來源。 通常您不需要修改這個值。
  • 螢幕上的 button 或 image 控制項可讓使用者儲存對記錄的變更。 控制項的 OnSelect 公式會呼叫 SubmitForm 函式來進行這項工作。 SubmitForm 會讀取卡片所有的 Update 屬性,並使用這個來寫回至資料來源。
  • 有時會有問題。 網路連線可能會關閉,或由應用程式不知道的服務進行驗證檢查。 Form 控制項的 ErrorErrorKind 屬性會使這項資訊可用,因此您可以將它顯示給使用者。

如需更精細地控制程序,您也可以使用 PatchErrors 函式。 Edit form 控制項會公開 Updates 屬性,使您能讀取表單內欄位的值。 您也可以使用這個屬性來呼叫連線上的自訂連接器,進而完全略過 PatchSubmitForm 函式。

驗證

變更記錄之前,應用程式應該盡可能確定變更是可接受的。 這有兩個理由︰

  • 立即回應給使用者。 修復問題的最佳時機就是發生狀況當下,當使用者還記憶猶新的時候。 實際上在每次觸控或擊鍵時,當發現輸入有問題時,會出現紅色文字。
  • 較低網路流量和比較少的使用者延遲。 在應用程式中偵測到越多的問題,表示透過網路來偵測並解決問題的對話越少。 每個對話都需花費時間,而在這期間使用者必須等候才能夠繼續進行。

Power Apps 提供兩個驗證工具︰

  • 資料來源可以提供何者有效及何者無效的資訊。 例如,數字可能有最小和最大值,而且可能需要一次或多次輸入。 您可以使用 DataSourceInfo 函式來存取這項資訊。
  • Validate 函式會使用這個相同的資訊來檢查單一資料行或整筆記錄的值。

錯誤處理

太棒了,您已驗證您的記錄。 是時候使用 Patch 來更新該記錄!

但可惜的是,可能仍有問題。 網路已關閉、服務驗證失敗,或使用者沒有適當的權限,這些只是一些您的應用程式可能遇到的錯誤舉例。 必須適當地回應錯誤情況,提供回饋給使用者及修正它的方法。

當資料來源發生錯誤時,您的應用程式會自動記錄錯誤資訊,並透過 Errors 函式使其可用。 錯誤和發生問題的記錄有關。 如果是使用者可以修正的問題(例如驗證問題),他們可以重新提交記錄,而錯誤將會被清除。

如果是 PatchCollect 建立記錄時發生錯誤,則沒有任何與錯誤相關的記錄。 在此情況下,便會由 Patch 傳回 空白,且可用來當做 Errors 的紀錄引數。 建立錯誤會使用下一個作業清除。

Errors 函式會傳回錯誤資訊的資料表。 如果錯誤能歸因於特定的資料行,則這項資訊就能夠包括資料行資訊。 在資料行所在之編輯畫面附近的 label 控制項中,使用資料行層級錯誤訊息。 在整筆記錄之 儲存 按鈕附近的位置,使用記錄層級的錯誤訊息,其中錯誤資料表的 資料行空白

使用大型資料來源

當您從大型資料來源 (或許是數百萬筆記錄)建立報表時,您會想要盡量減少網路傳輸。 假設您想要報告紐約市內所有擁有「白金」StatusCode 的客戶。 而您的客戶資料表包含數百萬筆記錄。

會想要將這數百萬個客戶都帶入您的應用程式,然後再一一挑選您想要的。 您想要的是在您儲存資料表的雲端服務內進行選擇,而且只透過網路傳送所選的記錄。

許多(但而非全部)您可用來選擇記錄的函式都可以接受 委派,也就是說,能在雲端服務內執行。 您可以閱讀委派 來了解如何執行這項操作。

集合

集合是一種特殊的資料來源。 它們對應用程式是本機的,且不受連接至雲端中的服務支援,因此資訊不能跨裝置在相同使用者或在多個使用者之間共用。 它們的運作方式如同任何其他資料來源,但有一些例外︰

  • 集合可以使用 Collect 函式動態建立。 不同於連線型資料來源,它們不需要事先建立。
  • 集合的資料行可以隨時使用 Collect 函式進行修改。
  • 集合允許重複的記錄。 集合中可以存在相同記錄的多個複本。 諸如 Remove 等函式會在它們找到的第一個相符項目上運作,除非提供 All 引數。
  • 您可以使用 SaveDataLoadData 函式,來儲存和重新載入集合的複本。 資訊會儲存在其他使用者、應用程式或裝置無法存取的私人位置。
  • 您可以使用 ExportImport 控制項,儲存集合的複本並將其重新載入至使用者可以互動的檔案。

如需使用集合做為資料來源的詳細資訊,請參閱建立並更新集合

集合通常用於保存應用程式的全域狀態。 請參閱使用變數 來取得可用來管理狀態的選項。