使用 Power Fx 公式,有不同的方式可以連線到應用程式中 SQL Server 中的資料。 您可以直接存取資料,也可以使用檢視或儲存過程在應用程式中創建、更新或刪除資料。
必要條件
要直接存取資料,您可以為 SQL Server 資料創建一個 從資料 開始的應用程式。 此方法允許您獲得一個基本的、可工作的應用程式,您可以使用檢視和存儲過程對其進行修改。
登入 Power Apps,然後前往應用程式頁面。
選擇新應用程式>開始使用資料。
在開始使用資料頁面中,選擇連接外部資料。
在選擇要開始的資料集下,選擇從 SQL。
如果您已有 SQL Server 連接,則會載入該連接。
注意
如果您還沒有 SQL Server 連線,系統會提示您建立連線。
選取您的 SQL 連線。
輸入您的伺服器名稱和資料庫名稱,然後選擇連線。 從顯示的表清單中選擇一個表。
注意
一次只會顯示一個連線。 若要使用其他連接,請選擇 SQL 連接上的 ... 滾動功能表,然後找到新連接或建立新 SQL 連接。
選取建立應用程式。
存取資料
一旦您的應用程式連接到 SQL Server,您就可以存取資料:存取 SQL Server 中的資料。
檢視結果
若要查看 SQL 查詢的結果,請參閱:在 SQL Server 中檢視結果。
Power Apps 資料類型對應
| SQL Server | Power Apps |
|---|---|
bigint、decimal、int、money、numeric、smallint、smallmoney、tinyint、float、real |
Number |
char、nchar、varchar、nvarchar、text、ntext |
文字 |
bit |
布林值 |
date、datetime、datetime2、smalldatetime、datetimeoffset、time |
DateTime |
uniqueidentifier |
Guid |
注意
如果 SQL Server 資料類型未出現在上一個資料表中,則不支援該資料類型。
不支援的資料類型包括下列範例:binary()、varbinary()、sql_variant xmlimagecursorrowversionhierarchyid空間幾何類型、空間地理類型和表格。 此外,不支援 'tinyint' 和 'smallint' 作為主鍵。
Power Apps 函式和作業可委派至 SQL Server
Power Apps 可以將 Power Fx 查詢作業 (例如篩選) 委派給後端資料來源進行處理。 委派可讓後端資料服務 (例如 SQL Server) 執行篩選工作,因此只需要將少數記錄傳輸至您的裝置。
下表顯示哪些作業可依資料類型委派給 SQL Server。 以 、 Or和 Not 結合And的運算式是可委派的。
| 操作或功能 | Number | 文字 | 布林值 | DateTime | Guid |
|---|---|---|---|---|---|
*, +, -, / |
Yes | - | - | 否 | - |
<、<=、>、>= |
Yes | 否 | 否 | Yes | - |
=、<> |
Yes | Yes | Yes | Yes | Yes |
Average |
Yes | - | - | - | - |
EndsWith |
- | 是的 [1] | - | - | - |
Filter |
Yes | Yes | Yes | 是的 [2] | Yes |
In (子字串) |
- | 是的 [3] | - | - | - |
IsBlank [4] |
否 | 否 | 否 | 否 | 否 |
Len (長度) |
- | 是 [5] | - | - | - |
Lookup |
Yes | Yes | Yes | Yes | Yes |
Max |
Yes | - | - | 否 | - |
Min |
Yes | - | - | 否 | - |
Search |
否 | Yes | 否 | 否 | - |
Sort |
Yes | Yes | Yes | Yes | - |
SortByColumns |
Yes | Yes | Yes | Yes | - |
StartsWith |
- | 是的 [6] | - | - | - |
Sum |
Yes | - | - | - | - |
UpdateIf, RemoveIf [7] |
Yes | Yes | Yes | Yes | Yes |
註釋
支援但不支援
(EndsWith(\<column>, "string value"))(EndsWith("string value", \<column>))。 如果 char(10) 列的值為 “hello”,EndsWith(\<column>, "llo")則根據設計傳回 false。 char(10) 欄有 10 個字元。直接日期篩選不適用於具有內部部署資料閘道的 SQL Server。 不過,您可以建立有效的計算欄。 例如,您可以建立:
ALTER TABLE myTable ADD DateAsInt AS (YEAR([date]) * 10000 + MONTH([date]) * 100 + DAY([date]))
然後根據計算的數字列進行篩選。支援 ,但不
(\<column> in "string value")支援("string value" in \<column>)。運算式 (例如 won't
Filter('[dbo].[MyOrders]', !IsBlank(CustomerId))委派給伺服器)。 不過,您可以使用 之類Filter('[dbo].[MyOrders]', CustomerId <> Blank())的運算式,它會委派給伺服器,而且語意上很接近。 不同之處在於第二個運算式不會將空字串 (“”) 視為空。 雖然表達式並不等效,但後者可能適合您的目的。 您無法將此方法用於 Guid 資料類型。Power Apps 委派函
Len式,但行為可能無法如您預期般運作。 在 SQL Server 中,值為 “hello” 的 char(10) 資料行長度一律為 10。 不過,Power Apps 會將該字串視為長度為 5,這可能會導致差異和混淆。 不要在 SQL Server 上使用char/nchar,而是改用。varchar/nvarchar支援 ,但不支援
(StartsWith(\<column>, "string value"))(StartsWith("string value", \<column>))UpdateIf 和 RemoveIf 在本機運作,但會模擬委派限制為 500/2000 筆記錄。 他們陸續將記錄降低到非授權 500/2000 記錄限制之外。 會收集符合 If 條件的記錄。 一般而言,最多會個別收集 500/2000 筆記錄,然後每次執行變更。 不過,如果現有的本機資料快取很大,則可能會更新更多記錄,因為函式可能可以存取更多記錄進行評估。