共用方式為


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

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

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

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

資料來源種類

資料來源可以連線到雲端服務,也可以是應用程式中的本地資料。

連線的資料來源

最常見的資料來源是 表格,您可以使用它來擷取和儲存資訊。 您可以使用資料來源的 連線 來讀取和寫入 Microsoft Excel 活頁簿、使用 Microsoft Lists 建立的清單、SharePoint 程式庫、SQL 資料表和許多其他格式中的資料,這些格式可以儲存在雲端服務中,例如 OneDrive、DropBox 和 SQL Server。

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

本機資料來源

使用 [資源庫]、[ 顯示表單] 和 [編輯表單] 控制項,您可以建立從資料來源讀取和寫入資料的應用程式。 若要開始使用,請參閱 瞭解資料表單

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

特殊類型的資料來源是 集合,它是應用程式內的本機資料,並且不依賴於雲端服務的連接支援。 因此,資訊無法在相同使用者或使用者之間跨裝置共用。 集合可以在本地加載和保存。

表格種類

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

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

若要深入瞭解,請參閱 資料表的工作原理,包括內部資料表和位於雲端服務的外部資料表。

使用表格

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

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

    備註

    對於包含空格欄名稱的 SharePoint 和 Excel 資料來源,Power Apps 會將空格取代為「_x0020_」。 例如,SharePoint 或 Excel 中的「欄名稱」在資料配置中顯示或用於公式時,在 Power Apps 中顯示為「Column_x0020_Name」。

  • 載入應用程式時,會自動從服務載入資料來源。 您可以使用 「重新整理」 功能強制重新整理資料。

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

  • DataSourceInfoDefaultsValidate 函式提供資料來源的相關資訊,可用來最佳化使用者體驗。

建立資料來源

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

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

顯示一或多筆記錄

應用程式讀取資料來源中資訊時的資訊流程。

此圖顯示應用程式讀取資料來源中資訊時的資訊流程:

  • 資訊會透過儲存體服務 (在此案例中為 Microsoft Lists 或 SharePoint Online) 儲存和共用。
  • 連線可讓應用程式使用此資訊。 連線負責使用者存取資訊的身份驗證。
  • 啟動應用程式或按下 「重新整理」 功能時,資訊會從連線提取到應用程式中的資料來源中,以供本機使用。
  • 公式可用來讀取資訊,並將其公開在使用者可以看到的控制項中。 您可以使用畫面上的資源庫,並將 Items 屬性連線至資料來源,以顯示資料來源的記錄: Gallery.Items = DataSource。 您可以使用控制項的 Default 屬性,將畫廊內的控制項連接至畫廊。
  • 資料來源也是表格。 因此,您可以使用 FilterSortAddColumns 和其他函數來細化和增強資料來源,然後再將其作為整體使用。 您也可以使用「查閱」、「首」「末」和其他功能來處理個別記錄。

修改記錄

上圖中的箭頭是一種方式。 資料來源的變更不會透過擷取資料的相同公式推送回來。 因此,改用新的公式。 通常,編輯記錄與瀏覽記錄使用的螢幕不同,尤其是在行動裝置上。

若要修改資料來源的現有記錄,該記錄必須最初來自資料來源。 記錄可能顯示在資源庫、內容變數和任意數量的公式中,但其來源應該可以追溯到資料來源。 額外資訊會隨唯一識別它的記錄一起傳輸,確保您修改正確的記錄。

更新資料來源的資訊流程。 此圖顯示更新資料來源的資訊流程:

  • 編輯表單控制項提供輸入卡的容器,這些輸入卡由使用者輸入控制項組成,例如文字輸入控制項或滑桿。 DataSourceItem 屬性可用來識別要編輯的記錄。
  • 每個輸入卡都有一個 Default 屬性,該屬性設定為表單的 ThisItem 記錄的欄位。 輸入卡內的控制項會從 [預設] 取得其輸入值。 通常,您不需要修改此預設值。
  • 每個輸入卡都會公開 Update 屬性。 此屬性會將使用者的輸入對應至記錄的特定欄位,以寫回資料來源。 一般而言,您不需要修改此屬性。
  • 螢幕上的按鈕或影像控制項可讓使用者儲存對記錄的變更。 控制項的 OnSelect 公式會呼叫 SubmitForm 函式來執行這項工作。 SubmitForm 會讀取卡片的所有 Update 屬性,並寫回資料來源。
  • 有時會出現問題。 網路連線可能已關閉,或應用程式不知道的服務會進行驗證檢查。 表單控制項的 ErrorErrorKind 屬性會提供此資訊,因此您可以向使用者顯示它。

若要更精細地控制程序,您也可以使用 修補程式錯誤 功能。 [編輯表單] 控制項會公開 Updates 屬性,讓您可以讀取表單內欄位的值。 您也可以使用此屬性在連線上呼叫自訂連接器,完全略過 PatchSubmitForm 函式。

Validation

在您變更記錄之前,應用程式應該盡其所能確保變更是可接受的。 檢查的原因有兩個:

  • 立即回饋給使用者。 解決問題的最佳時機是在問題發生時,當它在使用者腦海中記憶猶新時。 從字面上看,每次觸摸或擊鍵時,都會出現紅色文本,以識別其輸入存在問題。
  • 更少的網路流量和更少的使用者延遲。 在應用程序中檢測到的問題越多,意味著通過網絡檢測和解決問題的對話就越少。 每次交談都需要一些時間,在此期間使用者必須等待才能繼續前進。

Power Apps 提供兩種驗證工具:

  • 資料來源可以提供有關有效和無效的資訊。 例如,數字可以有最小值和最大值,並且可能需要一或多個項目。 您可以使用 DataSourceInfo 函式來存取此資訊。
  • 「驗證」函數會使用相同的資訊來檢查單一資料行或整個記錄的值。

錯誤處理

現在您已驗證記錄,請使用 Patch 更新該記錄。

但是,可能仍然存在問題。 網路已關閉、服務驗證失敗,或使用者沒有適當的權限,僅舉出您的應用程式可能遇到的一些錯誤。 您的應用程式必須適當地回應錯誤情況,向使用者提供意見反應,並提供他們糾正錯誤的方法。

當資料來源發生錯誤時,您的應用程式會自動記錄錯誤資訊,並透過 「錯誤」 功能提供。 錯誤與有問題的記錄相關聯。 如果問題是使用者可以修正的問題,例如驗證問題,則可以重新提交記錄,並清除錯誤。

如果使用 PatchCollect 建立記錄時發生錯誤,則沒有可與任何錯誤建立關聯的記錄。 在此情況下,Patch 會傳回空白,並可作為 Errors 的記錄引數。 建立錯誤會在下一次操作時自動清除。

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

使用大型資料來源

當您從大型資料來源 (可能是數百萬筆記錄) 建立報表時,您想要將網路流量降到最低。 假設您想要回報紐約市所有 StatusCodePlatinum客戶。 您的 Customers 表格包含數百萬筆記錄。

您不想將數百萬客戶帶入您的應用程序,然後選擇您想要的客戶。 選擇應該發生在儲存資料表的雲端服務內,您可以透過網路傳送所選記錄。

您可以使用選擇記錄的函式中有許多(但不是全部)可以被 委由,這表示它們會在雲端服務內執行。 在 委派中了解更多信息。

Collections

集合是一種特殊類型的資料來源。 它們是應用程式中的本地資料,不依賴雲端服務的連線支援。 因此,資訊無法在相同使用者或使用者之間跨裝置共用。

集合的運作方式與任何其他資料來源一樣,但有一些例外:

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

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

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