[入門] 簡單存放與還原明細資料

設計 Power Apps 過程時, 情境裡可能需要提供使用者輸入他們所需的明細資料, 如:

  1. 請購商品明細
  2. 借用申請明細
  3. 多名聯絡資訊
  4. 等等

以上情境我們假如設計另一張資料表存放可能太繁瑣, 存放資料後也可能不會延伸使用, 並且還需要做一對多的 Mapping 的資料表。

若將資料拆成多筆資料進行存放, 我們顯示資料時還需要額外組成一筆顯示, 耗效能又不好處理。

因此假如我有遇到需要明細類的情境時, 我一般會想辦法將明細資料合成一筆資料內, 以便能比較好維護資料。

內文將說明我如何存放明細資料並且復原。

正文

我們一般在 Power Apps 想設計資料表時都會使用 Table, 而相關方法為 Collection。

假如我們直接存放資料, 可能不好還原。

因此存放時我會使用 JSON 的方法進行轉型為結構化的資料, 然後使用多行純文字進行存放。

存放後的資料會有點類似 Array List (如 [{},{},{}])。 這時我們能怎麼復原資料呢?

我們可以使用 Table 加上 ParseJSON 進行還原即可, 而在 Gallery 即可使用 ThisItem.Value.VariableName 的方式進行顯示。

舉例

我們建立一個 Button 並且在 Button 的 OnSelect 新增一個測試用的 Collection。 (這裡的 Collection 我使用 TempTable 命名)

內容如下:

ClearCollect(TempTable, 
    { No: 1, Item: "Item1", Price: 100000, Currency: "VND"},
    { No: 2, Item: "Item2", Price: 200000, Currency: "VND"}
);

完成輸入方法後, 在 Power Apps 內建立一個 Flow 假裝存放資料與取回存放的資料。

方法為在 Flow 裡首先將原本的 Power Apps Trigger 移除, 並且新增第二代 Power Apps。 

然後新增一個接受資料的變數, 我們簡單命名為 Text 即可。

新增變數後, 我們直接新增一個 Power Apps 的 Response Action 並新增一個 Response 的變數以回覆我們在 Trigger 所使用的 Text 變數。

如下:

修改 Flow 名稱並且儲存關閉。(這裡我命名 Flow 為 TempRunCollect)

以上簡單設計即可達到我們存放資料與取回資料。 當然實際情況我們可以存放到 SharePoint Online List, 然後需使用時再使用 Connector 取回。

關閉後即可在 Button 的 OnSelect 內新增執行 Flow 的方法, 並且使用 Set 來取得變數。  (這裡變數名稱我使用 GetTable)

除此之外, 我送入 Flow 的 Collection 資料將使用 JSON 轉換為結構化資料, 如下:

Set(GetTable,TempRunCollect.Run(JSON(TempTable)).response);

最後 Button 的 OnSelect 內實際內容如下畫面:

最後, 我們簡單新增一個 Gallery 作為恢復顯示 Collection 的物件。

Items 裡我們即可使用 Table 加上 ParseJSON 復原我們的 Collection 資料以供顯示。 如下:

Table(ParseJSON(GetTable))

假如我們需要在 Gallery 顯示我們的結構化資料, 我們可能使用的方式與原本連結到 SharePoint List 等資料表內的方式不一樣。如:

ThisItem.No

以上方式一般即可顯示序號。 可是我們使用結構化資料復原時, 我們需要補上 Value 來進行顯示, 如下:

ThisItem.Value.No

實際 Items 於顯示的內容:

完成以上操作後, 我們即可測試結果, 執行測試並點擊 Button 即可看到 Gallery 顯示 No 出來。 如下:

若我們至 Flow 內確認, 即可看到存入的資料為結構化資料。

根據以上狀況, 我們即可簡單存放我們的明細資料並且不需要維護另一張表。 

至於如何不用使用 Form 來管理我們的明細又是另一個課題, 下回有機會再揭曉如何不用 Form 來管理明細資料。

 

以上內容為我個人的見解, 並感謝您的閱讀, 謝謝

分級: 入門是認識, 基本是運用, 進階是混合結合
範本是已可下載或可使用的範例, 至於教程當然是學習的結晶