用PowerApps做一個簡單查詢系統

Edward Kuo
EK.Technology Learn
6 min readOct 12, 2019

--

PowerApps是屬於Power Platform家族中的一個雲端服務(Power Platform包含三個服務,分別是PowerApps、Microsoft Flow和Power BI,而這些原本也是屬於Office 365),PowerApps能讓我們可以最少的程式碼去快速的開發一套應用程式也還可以轉換成手機App。因此,就來實作一個資料查詢系統吧。

透過PowerApps似乎只需要簡單拖拉就可以完成呢,而這次要做得場景為:

使用日期來查詢這段日期間的資料,日期必須使用Date picker方式讓用戶點選日曆

首先要建立PowerApp就必須登入該服務平台網站,PowerApps網站

使用自己的Office 365帳號就可以登入進去

建立一個新的Apps

在PowerApp中,如果一開始不知道要怎樣設計畫面,裡面也提供了很多種範本讓你來使用。當然,也配置好可預期的資料來源。如果都不喜歡,當然也可以透過空白的應用程式,來設計自己想要的介面。而在這介面部分,也可以選擇你是要做成手機模式還是平板模式,基本上如果是要在PC上觀看就是選擇平台模式了。

一旦選定後,就會從空白畫布開始設計,如果想要改變白白的風格,但又不知道怎樣配設色才好,可以透過佈景主題去配置App整體的色系

然後,在插入的地方設置我們要的查詢介面

這些控制項只要透過拖拉的方式,就可以拖拉的畫布上面。在Power App中,提供給使用者設計界面的成作為畫布

藍色框的部分,稱作該物件的名稱,這些名稱是唯一的,紅色框是該物件的屬性,可以透過屬性方式去變更物件的Style或是值。然後,把相關元素放到畫布中,就完成第一階段了

增加來源資料源

完成以上步驟後,就是要新增資料源,要新增資料源就是到檢視表中,選擇資料來源,這邊可以用的資料源其實算不少

因為,我們把資料放在SQL Database中,所以,這裡選擇SQL Database連接器,這個連接器可以讓你選擇是地端還是雲端的SQL Database,如果是雲端的只要填上在Azure SQL Database連線字串和帳號密碼,就可以直接連線了,但是,如果是存放在地端的,你還必須建立一個Getaway,才可以與地端SQL連線。連線成功之後,就會顯示資料庫的資料表。

有了資料源之後,就可以到剛剛的資料表中,設定要抓取資料來源的資料表是哪一個,取得資料表後,就可以把相關資料表欄位設定到畫布的資料表中

到這邊,其實會發現整個操作部分,有點跟Excel是相同概念。如果,對於表格自動生成的樣式不太喜歡,還可以點選每個欄位細調其中的內容。

建立資料篩選

要在資料表做資料篩選,如果對EXCEL的函式熟悉的人可能很容易,如果不熟的,就會有一點難度。因為大部分的資料處裡都是透過函式方式進行

上述提到希望是透過日期去篩選資料,不過,在PowerApps內有一個奇怪限制。就是要做Filter基本上沒問題,但是要篩選DateTime屬性的欄位就不可以

解決方案如下:

Direct date filters do not work for SQL Server. However, you can create a calculated column that will work. For instance, ALTER TABLE myTable ADD DateAsInt AS (YEAR([date]) * 10000 + MONTH([date]) * 100 + DAY([date])) and then filter on the calculated number column.

因此,做法有兩種,一種就是在資料來源的資料表針對時間欄位進行如上方式的處理,第二種方式就是在PowerApps的資料表中,新增一個欄位,而這欄位就是針對上述方式將時間欄位作二次處理。不過,我建議採用第一種方式是比較好的。

因為,採用上面方式將時間欄位資料修改後,欄位屬性就會從原本的時間型別,轉換成數值型別,也因此,就必須將Date Picker的值透過Text()和Value(),將選取到的日期轉換成數值型別,這樣才可以比對

Value(Text(StartDate.SelectedDate,”[$-en-us]yyyymmdd”)))

最後,要針對資料表進行資料搜尋,只要在資料表的公式列中,輸入下面這樣資訊,就可以依照最初的開始與結束日期,然後針對資料做搜尋了

這時候,因該會擔心如果資料很大是否會一次抓取全部資料呢?其實也不太需要擔心,因為在設定中已經設定好批次取資料的機制

也不會因為瞬間撈取大量資料,造成效能不好。

以上幾個步驟,就可以做出一個查詢資料的系統。

--

--

Enterprise IT Manager / Microsoft Regional Director / Microsoft MVP / DevOps Expert / Speaker, About me: https://profile.edwardkuo.dev/about/