在 Power Apps 中,大多數畫布應用程式都會使用儲存在雲端服務中的外部資訊,稱為 資料來源。 常見的範例是儲存在 OneDrive 中的 Excel 檔案中的資料表。 應用程式會使用 「連線」來存取這些資料來源。
本文討論不同類型的資料來源,以及如何使用資料表資料來源。
建立能夠執行基本讀取和寫入資料來源的應用程式很容易。 但有時您想要進一步控制資料流入和流出應用程式的方式。 本文說明 Patch、 DataSourceInfo、 Validate 和 Errors 函式如何提供更多控制。
資料來源種類
資料來源可以連線到雲端服務,也可以是應用程式中的本地資料。
連線的資料來源
最常見的資料來源是 表格,您可以使用它來擷取和儲存資訊。 您可以使用資料來源的 連線 來讀取和寫入 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」。
載入應用程式時,會自動從服務載入資料來源。 您可以使用 「重新整理」 功能強制重新整理資料。
當使用者執行應用程式時,他們可以建立、修改和刪除記錄,並將這些變更推送回服務中的基礎資料表。
DataSourceInfo、Defaults 和 Validate 函式提供資料來源的相關資訊,可用來最佳化使用者體驗。
建立資料來源
Power Apps 無法用於建立連線的資料來源或修改其結構;資料來源必須已存在於某處的服務中。 例如,若要在儲存在 OneDrive 上的 Excel 活頁簿中建立資料表,請先使用 OneDrive 上的 Excel Online 來建立活頁簿。 接下來,您從應用程式建立與它的連線。
不過, 可以在 應用程式內建立及修改集合資料來源,但只是暫時的。
顯示一或多筆記錄
此圖顯示應用程式讀取資料來源中資訊時的資訊流程:
- 資訊會透過儲存體服務 (在此案例中為 Microsoft Lists 或 SharePoint Online) 儲存和共用。
- 連線可讓應用程式使用此資訊。 連線負責使用者存取資訊的身份驗證。
- 啟動應用程式或按下 「重新整理」 功能時,資訊會從連線提取到應用程式中的資料來源中,以供本機使用。
- 公式可用來讀取資訊,並將其公開在使用者可以看到的控制項中。 您可以使用畫面上的資源庫,並將 Items 屬性連線至資料來源,以顯示資料來源的記錄: Gallery.Items = DataSource。 您可以使用控制項的 Default 屬性,將畫廊內的控制項連接至畫廊。
- 資料來源也是表格。 因此,您可以使用 Filter、 Sort、 AddColumns 和其他函數來細化和增強資料來源,然後再將其作為整體使用。 您也可以使用「查閱」、「首」、「末」和其他功能來處理個別記錄。
修改記錄
上圖中的箭頭是一種方式。 資料來源的變更不會透過擷取資料的相同公式推送回來。 因此,改用新的公式。 通常,編輯記錄與瀏覽記錄使用的螢幕不同,尤其是在行動裝置上。
若要修改資料來源的現有記錄,該記錄必須最初來自資料來源。 記錄可能顯示在資源庫、內容變數和任意數量的公式中,但其來源應該可以追溯到資料來源。 額外資訊會隨唯一識別它的記錄一起傳輸,確保您修改正確的記錄。
此圖顯示更新資料來源的資訊流程:
- 編輯表單控制項提供輸入卡的容器,這些輸入卡由使用者輸入控制項組成,例如文字輸入控制項或滑桿。 DataSource 和 Item 屬性可用來識別要編輯的記錄。
- 每個輸入卡都有一個 Default 屬性,該屬性設定為表單的 ThisItem 記錄的欄位。 輸入卡內的控制項會從 [預設] 取得其輸入值。 通常,您不需要修改此預設值。
- 每個輸入卡都會公開 Update 屬性。 此屬性會將使用者的輸入對應至記錄的特定欄位,以寫回資料來源。 一般而言,您不需要修改此屬性。
- 螢幕上的按鈕或影像控制項可讓使用者儲存對記錄的變更。 控制項的 OnSelect 公式會呼叫 SubmitForm 函式來執行這項工作。 SubmitForm 會讀取卡片的所有 Update 屬性,並寫回資料來源。
- 有時會出現問題。 網路連線可能已關閉,或應用程式不知道的服務會進行驗證檢查。 表單控制項的 Error 和 ErrorKind 屬性會提供此資訊,因此您可以向使用者顯示它。
若要更精細地控制程序,您也可以使用 修補程式 和 錯誤 功能。 [編輯表單] 控制項會公開 Updates 屬性,讓您可以讀取表單內欄位的值。 您也可以使用此屬性在連線上呼叫自訂連接器,完全略過 Patch 和 SubmitForm 函式。
Validation
在您變更記錄之前,應用程式應該盡其所能確保變更是可接受的。 檢查的原因有兩個:
- 立即回饋給使用者。 解決問題的最佳時機是在問題發生時,當它在使用者腦海中記憶猶新時。 從字面上看,每次觸摸或擊鍵時,都會出現紅色文本,以識別其輸入存在問題。
- 更少的網路流量和更少的使用者延遲。 在應用程序中檢測到的問題越多,意味著通過網絡檢測和解決問題的對話就越少。 每次交談都需要一些時間,在此期間使用者必須等待才能繼續前進。
Power Apps 提供兩種驗證工具:
- 資料來源可以提供有關有效和無效的資訊。 例如,數字可以有最小值和最大值,並且可能需要一或多個項目。 您可以使用 DataSourceInfo 函式來存取此資訊。
- 「驗證」函數會使用相同的資訊來檢查單一資料行或整個記錄的值。
錯誤處理
現在您已驗證記錄,請使用 Patch 更新該記錄。
但是,可能仍然存在問題。 網路已關閉、服務驗證失敗,或使用者沒有適當的權限,僅舉出您的應用程式可能遇到的一些錯誤。 您的應用程式必須適當地回應錯誤情況,向使用者提供意見反應,並提供他們糾正錯誤的方法。
當資料來源發生錯誤時,您的應用程式會自動記錄錯誤資訊,並透過 「錯誤」 功能提供。 錯誤與有問題的記錄相關聯。 如果問題是使用者可以修正的問題,例如驗證問題,則可以重新提交記錄,並清除錯誤。
如果使用 Patch 或 Collect 建立記錄時發生錯誤,則沒有可與任何錯誤建立關聯的記錄。 在此情況下,Patch 會傳回空白,並可作為 Errors 的記錄引數。 建立錯誤會在下一次操作時自動清除。
Errors 函數會傳回錯誤資訊的資料表。 如果錯誤可以歸因於特定直欄,則此資訊可以包括直欄資訊。 在資料行所在之編輯畫面附近的標籤控制項中,使用資料行層級錯誤訊息。 在整筆記錄之儲存按鈕附近的位置,使用記錄層級的錯誤訊息,其中錯誤資料表的資料行為空白。
使用大型資料來源
當您從大型資料來源 (可能是數百萬筆記錄) 建立報表時,您想要將網路流量降到最低。 假設您想要回報紐約市所有 StatusCode 為 Platinum 的客戶。 您的 Customers 表格包含數百萬筆記錄。
您不想將數百萬客戶帶入您的應用程序,然後選擇您想要的客戶。 選擇應該發生在儲存資料表的雲端服務內,您可以透過網路傳送所選記錄。
您可以使用選擇記錄的函式中有許多(但不是全部)可以被 委由,這表示它們會在雲端服務內執行。 在 委派中了解更多信息。
Collections
集合是一種特殊類型的資料來源。 它們是應用程式中的本地資料,不依賴雲端服務的連線支援。 因此,資訊無法在相同使用者或使用者之間跨裝置共用。
集合的運作方式與任何其他資料來源一樣,但有一些例外:
- 可以使用 Collect 函數動態建立集合。 不同於連線型資料來源,它們不需要事先建立。
- 集合的欄可以隨時使用 Collect 函數進行修改。
- 集合允許重複記錄。 集合中可以存在相同記錄的多個副本。 Remove 等函式會在找到的第一個相符項目上運行,除非提供 All 引數。
- 您可以使用 SaveData 和 LoadData 函式來儲存和重新載入集合的複本。 資訊會儲存在其他使用者、應用程式或裝置無法存取的私人位置。
- 您可以使用 [匯出] 和 [匯入 ] 控制項,將集合的複本儲存並重新載入至使用者可以互動的檔案。
如需使用集合作為資料來源的詳細資訊,請參閱 建立和更新集合。
集合通常用來保存應用程式的全域狀態。 請參閱 使用變數, 以取得可用於管理狀態的選項。