資訊以小的離散值流經 Power Fx,就像試算表的儲存格一樣。 例如, 「生日」 欄位和 「週年紀念日」 欄位中的資料都會以包含年、月和日的 「日期」 值的形式流經。 Power Fx 會格式化這些值,將輸入限制為適合每個值的內容,並與資料庫共用這些值。 生日和週年紀念日可能因人而異,但系統會以相同的方式處理它們。 在此案例中,Date 就是 資料類型 的範例。
本文說明 Power Fx 中的每種資料類型、其運作方式,以及它們如何對應至外部資料來源。
| 資料類型 | Description | 範例 |
|---|---|---|
| Boolean | true 或 false 值。 您可以直接在 If、 Filter 和其他函數中使用它,而無需進行比較。 | True |
| 選擇 | 由一組選項 (以數位為後盾) 所選擇的選項。 這種資料類型會將可當地語系化的文字標籤與一個數值合併。 標籤會出現在應用程式中,而數值會儲存並用於比較。 如果您依名稱使用 Choice 欄位的實例,則 Type 函數支援此資料類型。 | ThisItem.OrderStatus |
| 色彩 | 包含 Alpha 通道的色彩規格。 |
Color.Red ColorValue( “#102030” ) RGBA( 255, 128, 0, 0.5 ) |
| 貨幣 | 儲存在浮點數中的貨幣值。 貨幣值與含貨幣格式選項的數位值相同。 Type 函式不支援 Currency 資料類型。 |
123 4.56 |
| 日期 | 沒有時間的日期,在應用程序用戶的時區中。 | 日期( 2019, 5, 16 ) |
| 日期時間 | 帶有時間的日期,以應用程式使用者的時區為單位。 | DateTimeValue( “2019 年 5 月 16 日下午 1:23:09” ) |
| 小數點 | 精度高、以 10 為基數、範圍有限的數字。 |
123 十進制( “1.2345” ) |
| 動態 (先前稱為 UntypedObject) | 值的類型是動態的,並且可以在運行時間變化。 動態值可以是任何現有類型,並且可以使用 Boolean()、Value()、Table() 等函數轉換為相容類型。如需詳細資訊,請參閱動態值和使用 JSON。 | ParseJSON(“{ ”“field”“ : 1234 }”)。田 |
| 自由流通股 | 表準精確度、以 2 為底數運算且範圍較廣的數字。 |
123 8.903e121 1.234y-200 |
| GUID | 全域唯一識別碼。 |
GUID() GUID( “123e4567-e89b-12d3-a456-426655440000” ) |
| 超連結 | 包含超連結的文字字串。 | "https://powerapps.microsoft.com"; |
| 影像 | 以.jpeg、.png、.svg、.gif或其他常見網頁影像格式顯示影像的 通用資源識別碼 (URI) 文字字串。 Type 函式不支援 Image 資料類型。 |
MyImage 新增為應用程式資源 "https://northwindtraders.com/logo.jpg"; "appres://blobmanager/7b12ffa2 ..." |
| 媒體 | 到影片或音訊錄製的 URI 文字字串。 Type 函式不支援 Media 資料類型。 |
MyVideo 新增為應用程式資源 "https://northwindtraders.com/intro.mp4"; "appres://blobmanager/3ba411c ..." |
| 號碼 | Decimal (大多數 Power Fx 主機) 或 Float (畫布應用程式) 的別名。 如果您可以針對情況使用任一數字,請使用 數字 以獲得最大相容性。 |
123 0.0123 1e4 |
| 錄製 | 資料值的記錄。 此複合資料類型包含本文中列出的其他資料類型的執行個體。 如需詳細資訊,請參閱 使用表格。 如果您使用 Record 的實例,Type 函數支援此資料類型。 |
{ 公司:“北風商人”, 員工:35, 非營利組織:false } |
| 記錄參考 | 對資料表中之記錄的參照。 這些參照通常與多態查核一起使用。 如需詳細資訊,請參閱 使用參照。 Type 函式不支援此資料類型。 | First(Accounts).Owner |
| 資料表 | 一組記錄。 所有記錄必須具有相同的欄位名稱和資料類型,省略的欄位將被視為 空白。 此複合資料類型包含本文中列出的其他資料類型的執行個體。 如需詳細資訊,請參閱 使用表格。 如果您使用 Table 的執行個體,Type 函式會支援此資料類型。 |
table( { FirstName: “Sidney”, 姓氏:“比嘉” }, { 名字:“南希”, 姓氏:“安德森” } ) |
| 文字 | 統一碼文字字串。 | "Hello, world" |
| 時間 | 沒有日期的時間,在應用程式使用者的時區中。 | 時間( 11, 23, 45 ) |
| 無效 | 僅由行為使用者定義的函式使用,它表示函式沒有傳回類型。 Type 函式不支援此資料類型。 即使函數沒有傳回類型或值,它一律可以傳回錯誤。 | 嗨(): void = { notify( “你好! |
| 是/否 | 由一組兩個選項 (以布林值為後盾) 所選擇的選項。 這種資料類型會將可當地語系化的文字標籤與一個布林值合併。 標籤會出現在應用程式中,而布林值會儲存並用於比較。 如果您依名稱使用「是/否」欄位的實例,則 Type 函數支援此資料類型。 | ThisItem.Taxable |
其中許多資料類型相似,並具有相同的基礎表示法,例如將 超連結 欄位視為 文字。 額外的資料型別可在表單和其他控制項中提供更好的預設體驗。
空白
所有資料類型都可以有 空白 (無值) 的值。 術語「null」通常用於此概念的資料庫中。
使用帶有 Set 或 Patch 函數的 Blank 函數,將變數或欄位設為 Blank。 例如, Set( x, Blank() ) 會 移除全域變數 x 中的值。
使用 IsBlank 函式測試空白值。 使用 Coalesce 函數取代可能的 blank 值與非 blank 值。
由於所有資料類型都支援 空白,因此 布林值 和 兩個選項 資料類型有三個可能的值。
文字、超連結、映像和媒體
所有這四種資料類型都是以 統一碼 文字字串為基礎。
嵌入文字
在公式中的嵌入文字字串會括在雙引號中。 在文字字串中使用兩個雙引號一起來表示一個雙引號。 例如,在 Button 控制項的 OnSelect 屬性中使用下列公式:
Notify( "Jane said ""Hello, World!""" )
按下按鈕時會產生橫幅,其中第一個和最後一個雙引號會省略 (因為它們會分隔文字字串),而 Hello, World! 周圍重複的雙引號會取代為單雙引號:
單引號用於包含特殊字元且在文字字串中未有特殊意義的識別碼名稱。
字串插補
使用字串插補在文字字串中嵌入公式。 與使用 Concatenate 函數或 & 運算子相比,這種方法通常更容易使用和視覺化輸出。
以美元符號 $ 為文字字串加上首碼,並使用大括號 {} 將要嵌入的公式括在一起。 若要在文字字串中包括大括弧,請使用重複的大括弧:{{或 }}。 字串插補可在可以使用標準文字字串的任何地方使用。
例如,考慮以下公式,其中全域變數蘋果 設為 3,香蕉設定為 4:
$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."
此公式會傳回文字字串我們有 3 個蘋果,4 個香蕉,共收穫 7 個水果。變數蘋果和香蕉與數學公式 蘋果+香蕉的結果一起插入到文字中以替換大括號。 大括弧周圍的空格與其他字元會保留原樣。
嵌入的公式可以包含任何函數或運算子。 所需要的只是公式的結果可以強制為文本字符串。 例如,此公式在問候語中插入 NickName (如果提供了) 或 FirstName (如果沒有提供):
$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!"
如果 NickName 設為 "Joe",則此公式將產生文字字串歡迎 Joe,很高興認識你!。 但是如果NickName 為空白且 FirstName 為 "Joseph",那麼這個公式會改為產生親愛的 Joseph,很高興認識你!
字串插補值可以在嵌入公式中包括標準文字字串。 例如,如果既沒有提供 NickName 也沒有提供 FirstName,我們仍然可以提供 "Friend" 作為替代:
$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"
字串插補甚至可以嵌套。 請考慮以下範例,其中名字、中間名 和姓氏 會組合成一個問候語。 即使這些值中的一個或兩個為空,名稱部分之間仍會保持正確數量的空格。 如果未提供任何組成部分,則內部字串插補值將會折疊為空字串,並由 "Friend" 取代為 Coalesce 函數。
$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
| 名字 | 中間名 | 姓氏 | 結果 |
|---|---|---|---|
| John | Qunicy | Doe | Welcome John Quincy Doe! |
| John | 空白 | Doe | Welcome John Doe! |
| 空白 | 空白 | Doe | Welcome Doe! |
| 空白 | 空白 | 空白 | Welcome Friend! |
換行
嵌入的文字字串可以包含換行。 例如,考慮將 Label 控制項的 Text 屬性設為以下各項:
"Line 1
Line 2
Line 3"
此公式會導致標籤控制項中顯示三行:
字串插值也支援換行符:
$"Line {1}
Line {1+1}
Line {1+1+1}"
輸出結果相同:
影像和媒體資源
透過檔案功能表,您可以新增影像、影片及音訊檔做為應用程式資源。 匯入檔案的名稱會變成應用程式中的資源名稱。 在此圖中,名為 nwindlogo 的 Northwind Traders 標誌已新增至應用程式:
若要在應用程式中使用此資源,請在 Image 控制項的 Image 屬性中加以指定:
映像和其他媒體的 URI
您可以將 Label 控制項的 Text 屬性設定為 nwindlogo,深入研究最後一個範例。 標籤會顯示文字字串:
每個畫布應用程式會在雲端參考每個映像或其他媒體檔 (不論該檔案是否位於雲端),或是以 URI 文字字串方式新增應用程式資源 。
例如,映像控制項的 Image 屬性不僅接受應用程式資源,也接受連結至網站上的映像,例如 " https://northwindtraders.com/logo.jpg"。 此屬性也接受使用 資料 URI 方案 的嵌入映像,如下列範例所示:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"
該 URI 會顯示兩個紫色方塊的向上伸縮版本:
若將映像控制項的 Image 屬性設為映像控制項的 Photo 屬性,您可以顯示在 Camera 控制項所捕抓的最新映像。 應用程式會將映像保留在記憶體中,相機控制項的 Photo 屬性會將 URI 參照返回至映像。 例如,您可以拍攝照片,而相機的 Photo 屬性會返回 "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1"。
您可以使用 URI 來參考資料庫中儲存的映像或其他媒體檔案。 如此一來,直到需要時,應用程式才會擷取實際資料。 例如,Microsoft Dataverse 資料表中的附件可能會傳回 "appres://datasources/Contacts/table/..."。正如在相機範例中一樣,您可以將影像控制項的 Image 屬性設定此參考 (這會擷取二進位資料),以顯示此影像。
當您將媒體資料類型 (如映像) 儲存到資料庫時,應用程式會傳送實際映像或媒體資料,而不是 URI 參考。
大小限制
就像文字字串和 URI 一樣,這些資料類型的長度不會有預設限制。
這些資料類型參考的二進位資料也沒有預設的大小限制。 例如,透過參考「appres://...」的相機控制所捕捉的影像可以與裝置相機所能達到的大小和解析度一樣大。 媒體檔案的解析度、畫面播放速率和其他屬性不受資料類型的限制,但是用於播放和捕獲媒體的特定控制項可能有自己的限制。
但是,所有的資料大小都會受應用程式中可用記憶體的限制。 在桌上型電腦上執行的瀏覽器通常支援超過 100 mb 的資料。 但是,裝置 (例如手機) 上的可用記憶體量可能會較低,通常是在 30-70 mb 的範圍內。 若要確定您的應用程式是否在這些限制內執行,請在所有應執行該應用程式的裝置上測試常見情境。
最佳的作法是只要有必要,就只保留記憶體中的資料。 儘快將影像傳至資料庫;只有在應用程式的使用者要求時,才下載映像。
數字
注意
Power Apps 目前僅支援 浮動 ,它是所有數字的類型。 很快將新增十進位支援。
Power Fx 支援兩種數字:十進位和浮點數 (同義詞為數字和貨幣)。
對於大多數業務計算來說,十進位是最適合的。 它可以準確地表示十進位數字,這代表 0.1 可以精確表示並避免計算過程中的捨入誤差。 它的範圍夠大,可以滿足任何業務需求,最多 1028,精確度高達 28 位數。
十進位是大多數 Power Fx 主機的預設數字資料類型,如果只是簡單地寫入 2*2 就會使用。
浮點數最適合科學計算。 它可以表示更大範圍的數字,最大可達 10308。 精度限制為小數點後 15 位,數學基於以 2 為基數,因此它無法精確表示一些常見的小數點值。 浮點 還具有更高的性能,如果這是一個因素並且精度不重要,則受到青睞。
十進位數字
十進位資料型態最常使用 .NET 小數資料類型。 某些主機 (例如 SQL Server 中執行的 Dataverse 公式資料行) 會使用 SQL Server 十進位資料類型。
十進位以您在學校學到的方式進行數學運算,使用十進位數字,這對於避免使用二進位數學運算 (如浮點數所用) 時可能累積的非常小的差異而導致的捨入誤差非常重要。
範圍從正 79,228,162,514,264,337,593,543,950,335 到負 79,228,162,514,264,337,593,543,950,335。 小數位分隔符號可以放置在這些數字中的任何位置,提供高達 28 位數的精確度,並且仍然可以精確表示。 例如,79,228,162,514,264.337593543950335 可以精確表示,7.9228162514264337593543950335 也可以。
浮點數
浮點數資料類型也稱為數字或貨幣,使用 IEEE 754 雙精度浮點標準。 這個標準提供大量的數位,從–1.79769 x 10 308 到 1.79769 x 10 308。 可表示的最小值是 5 x 10 –324。
浮點數可以精確表示 -9,007,199,254,740,991 (-(253 - 1)) 和 9,007,199,254,740,991 (253 - 1) 之間的整數。 這個範圍大於資料庫經常使用的 32 位 (或 4 位元組) 整數資料類型。 但是,畫布應用程式不能代表 64 位 (或 8 位元組) 整數資料類型。 您可能希望將數字儲存在文字欄位中或使用計算列在文字欄位中複製數字,以便它對應到畫布應用程式中的文字資料類型。 通過這種方式,您可以保存、顯示和輸入這些值,並進行比較以確定這些值是否相等;但您不能以這種形式對其執行數字計算。
浮點運算是近似的,因此有時可能會出現未預期的結果,其中有許多有記載的範例。 您可能會想要讓公式 55/100 * 100,完全返回 55 和 (55/100 * 100)-55 只返回零。 但是後一種公式會返回 7.1054 x 10 –15,只是會很小,但不是零。 微小差異通常不會造成問題,而應用程式會在顯示結果時將其四捨五入。 但是,後續計算中可能會有較小的差別,而且看起來會給出錯誤的答案。
資料庫系統通常會使用小數點數學來儲存貨幣並執行計算,這提供的是較小的範圍,但是可以更好地控制有效位數。 根據預設,畫布應用程式會將貨幣加入和移出浮點數值;因此,結果可能與以本機十進位資料類型進行的計算不同。 視應用程式的精確度需求而定,您可能想要將這些值當作 Text 來使用,如稍早針對大型整數所述。
預設值和轉換
注意
Power Apps 目前僅支援 浮動 ,它是所有數字的類型。 很快將新增十進位支援。
大多數 Power Fx 主控件預設使用十進位。 擁有此預設設定代表:
- 公式中的常值數字。 數字
1.234被解釋為十進位值。 例如,公式1.234 * 2將1.234和2解釋為十進位並傳回十進位結果。 - Value 函式。
Value( "1.234" )傳回一個十進位值。 例如,在公式Value( "1.234" ) * 2中,Value 函數將文字字串"1.234"的內容解釋為十進位。
若要使用浮點數值,請使用 Float 函式。 擴展我們的範例,Float( 1.234 ) 將十進位1.234 轉換為浮點數。
浮點數也可以用來取代 Value,將包含浮點數的字串 Float( "1.234" ) 轉換為浮點數值,如果數字不能表示為十進位,則需要這樣做。
摘要中:
| 使用狀況 | 小數點 | 自由流通股 |
|---|---|---|
| 公式中的常值數字 | 1.234 |
Float( 1.234 )Float( "1.234" ) |
| 從文字字串轉換 | Value( "1.234" )Decimal( "1.234" ) |
Float( "1.234" ) |
| 數值類型之間的轉換 | Decimal( float ) |
Float( decimal ) |
| 轉換到文字字串 | Text( decimal ) |
Text( float ) |
混合數值類型
浮點數和十進位值可以自由混合。 混合時,由於範圍較大,十進位值將轉換為浮點數值。 由於這種轉換可能會導致精度損失,因此不要不必要地混合兩者非常重要。 由於 Decimal 是預設的文字資料類型,而且大多數數值函數都會保留該類型,因此相對容易避免在不需要的情況下移動到 Float 。
例如,請考慮在安裝 pac power-fx repl 後使用 進行下列計算。 由於兩個數字都是十進位,因此計算以 十進位進行,並且結果保留完整精確度:
>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002
相反,如果將第二個操作數改為浮點數浮點數,那麼整個計算將以浮點數完成,並且微小的小數部分將會遺失:
>> 1.0000000000000000000000000001 * Float(2)
2
日期、時間和日期時間。
時區
日期/時間值屬於這些類別:
- User local:這些值是以 UTC (協調世界時) 進行儲存,但是應用程式使用者的時區會影響應用程式顯示這些值的方式,以及應用程式使用者指定它們的方式。 例如,同一個時刻看上去和在日本的使用者不同。
- Time zone independent:應用程序以相同的方式顯示這些值,而應用程式使用者會以相同的方式來指定,不論時區如何。 對於加拿大的使用者而言,相同的時刻看起來與對日本的使用者相同。 未預期應用程式在不同時區執行的應用程式作者會使用這些值,因為它們在整體上比較簡單。
下表顯示一些範例:
| 日期/時間類型 | 儲存在資料庫中的值 | 顯示值並輸入 UTC 以西7小時 | 顯示值並輸入 UTC 以東4小時 |
|---|---|---|---|
| 使用者區域 | 星期日,5 月 19 日,2019 上午 4:00 |
星期六,5 月 18 日,2019 下午 9:00 |
星期日,5 月 19 日,2019 上午 8:00 |
| 時區獨立 | 星期日,5 月 19 日,2019 上午 4:00 |
星期日,5 月 19 日,2019 上午 4:00 |
星期日,5 月 19 日,2019 上午 4:00 |
至於 User local日期/時間,畫布應用程式會使用瀏覽器或裝置的時區,但是模型驅動應用程式會使用 Dataverse 中的使用者設定。 這些設定通常相符,但如果這些設定不同,結果就會有所不同。
使用 DateAdd 和 TimeZoneInformation 函數可將本機時間轉換為 UTC,並再次備份。 請參閱這些功能的文件結尾範例。
數位等效
畫布應用程式會保留並計算所有日期/時間值,不論是 UTC 中的 User local 或 Time zone independent。 在顯示值和應用程式使用者指定時,應用程序將根據應用程式使用者的時區轉換值。
當畫布應用程式從資料來源讀取 Time zone independent 值,或將這類值寫入資料來源時,應用程式會自動調整值以補償應用程式使用者的時區。 然後,應用程式會將該值視為 UTC 值,並與應用程式中的所有其他日期/時間值一致。 由於此補償,當應用程式調整應用程式使用者所在時區的 UTC 值時,就會顯示原始 Time zone independent。
您可以使用 Value 函數來存取日期/時間值的基礎數值,從而更緊密地查看此行為。 此函數會將日期/時間值返回為自 1 月 1 日之後的毫秒數,1970 00:00:00.000 UTC。
因為每個日期/時間值都是以 UTC 為限,所以公式 Value( Date( 1970, 1, 1 ) ) 在大部分的世界中不會傳回零,因為 Date 函數會返回 UTC 格式的日期。 例如,公式會將在 UTC 時差為八小時的時區中返回 28,800,000。 這個數目反映了在八小時的毫秒數。
回到我們的例子:
| 日期/時間類型 | 儲存在資料庫中的值 | 顯示值並輸入 UTC 以西7小時 | Value 函數返回 |
|---|---|---|---|
| 使用者區域 | 星期日,5 月 19 日,2019 上午 4:00 |
星期六,5 月 18 日,2019 下午 9:00 |
1,558,238,400,000 (星期日,5 月 19 日,2019 上午 4:00 UTC) |
| 時區獨立 | 星期日,5 月 19 日,2019 上午 4:00 |
星期日,5 月 19 日,2019 上午 4:00 |
1,558,263,600,000 (星期日,5 月 19 日,2019 上午 11:00 UTC) |
轉換 Unix 時間
Unix 時間反映了從 1 月 1 日起 1970 00:00:00 UTC 的秒數。 因為畫布應用程式使用毫秒而不是秒,所以您可以在兩個之間,乘以或除以 1,000。
例如,Unix 時間顯示 2001年 9 月 9 日 01:46:40 UTC 為 1,000,000,000。 若要在畫布應用程式中顯示日期/時間值,請將此數乘以 1,000,將其轉換為毫秒,然後在 Text 函數中使用它。 公式 Text( 1000000000 * 1000, DateTimeFormat.UTC ) 返回字串 2001-09-09T 01:46:40.000Z。
但是,如果您在一個比 UTC 時差-7個小時 (比 UTC 偏西7個小時)的時區使用 DateTimeFormat.LongDateTime24 格式 ,則該函數會返回 Saturday, September 8, 2001 18:46:40。 此結果會根據當地時區正確顯示 DateTime 值。
若要轉換成 Unix 時間,請從 Value 中除以 1,000:
RoundDown( 值( UnixTime ) / 1000, 0 )
如果您需要在 Date 值中進行進一步計算或在 Power Apps 中顯示,請使用此公式:
DateAdd( 日期( 1970,1,1 ), UnixTime, 秒 )
SQL Server
SQL Server 具有 Datetime、Datetime2 以及其他 未包括時間區時差量的日期/時間資料類型,而且並未指出它們所在的時區。 畫布應用程式假設這些值是以 UTC 儲存,並將它們視為 User local。 如果值要獨立於時區,請使用 TimeZoneOffset 函數來更正 UTC 轉換 。
將值轉換成應用程式的內部 UTC 標記法時,畫布應用程式使用 Datetimeoffset 欄位中包含的時間區域資訊。 應用程式在寫入資料時,通常會使用 UTC 做為時區 (零時區時差)。
畫布應用程式會將 SQL Server 中 Time 資料類型的讀取和寫入值做為 ISO 8601 期間格式的文字字串 。 例如,您必須解析此字串格式,並使用 Time 函數將文字字串 "PT2H1M39S" 轉換為 Time 值:
With(
Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)
混用日期與時間資訊
Date、Time 和 DateTime 有不同的名稱,但它們都保留有關日期和時間的相同資訊。
Date 值可以包括它的時間資訊,通常是午夜。 Time 值可以攜帶日期資訊,通常是 1997 年 1 月 1 日。 Dataverse 也會儲存含 Date Only 欄位的時間資訊,但預設只顯示日期資訊。 同樣地,畫布應用程式有時會區分這些資料類型以判斷預設格式和控制項。
因為時間和其他轉換可能會造成混亂的結果,所以不建議您直接新增與減少日期與時間值。 您可以使用 Value 函數,將日期/時間值轉換成毫秒,並將其納入應用程式使用者的時區,或者使用 DateAdd 和 DateDiff 函數來新增或減去其中一個值。
選項和「是/否」。
選擇和雙選項資料類型提供兩個或多個選項供應用程式使用者選擇。 例如,訂單狀態選項可能提供新增、已運送、已開立發票和已關閉的選項。 雙選項資料類型只會提供兩個選項。
這兩種資料類型都會將其標籤顯示為文字。 例如,如果控制項的Text屬性設定為參考該選項的公式,則標籤控制項會顯示其中一個訂單狀態選項。 選項標籤可以針對不同位置的應用程式使用者進行當地語系化。
當應用程式使用者選取選項並儲存變更時,應用程式會將資料傳送至資料庫,資料庫會以與語言無關的方式儲存資料。 選擇中的選項會傳送並儲存為數字,而雙選項資料類型的選項會傳送並儲存為布林值。
標籤僅供顯示。 您無法直接比較標籤,因為它們是特定於語言的。 相反地,每個選項都有一個與基礎數字或布林值一起使用的列舉。 例如,您不可使用這公式︰
If( ThisItem.OrderStatus = "Active", ...
但是您可以使用此公式:
If( ThisItem.OrderStatus = OrderStatus.Active, ...
如果是全域選項 (哪些資料表共用),則選項群組列舉的名稱會與全域選項的名稱相符。 對於本端選擇 (範圍為資料表) ,名稱可以包含資料表名稱。 如果多個資料表具有相同名稱的選擇,則此行為可避免衝突。 例如,帳戶資料表可能有 OrderStatus 選項,而其名稱可能是 OrderStatus (Accounts)。 該名稱包含空格和括號,因此如果您在公式中引用它,則需要用單引號括住它。
兩個選項值也會表現為布林值。 例如,名為 TaxStatus 的兩個選項值可能具有 Taxable 和 Non-Taxable 標籤,對應至 true 和 false。 若要顯示這一點,請使用以下公式:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
您也可以使用以下公式:
If( ThisItem.Taxable, ...