Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
Thông tin di chuyển qua Power Fx trong các giá trị nhỏ, riêng biệt, chẳng hạn như các ô của bảng tính. Ví dụ: dữ liệu trong trường Sinh nhật và trường Ngày kỷ niệm đều chuyển qua dưới dạng giá trị Ngày bao gồm năm, tháng và ngày. Power Fx định dạng các giá trị này, ràng buộc đầu vào vào những gì thích hợp cho mỗi giá trị và chia sẻ các giá trị với một cơ sở dữ liệu. Ngày sinh và ngày kỷ niệm có thể khác với mọi người, nhưng hệ thống sẽ xử lý chúng theo cùng một cách. Trong trường hợp này, Ngày là ví dụ về kiểu dữ liệu.
Bài viết này giải thích từng kiểu dữ liệu trong Power Fx, cách chúng hoạt động và cách chúng ánh xạ với các nguồn dữ liệu bên ngoài.
| Loại dữ liệu | Description | Ví dụ |
|---|---|---|
| Boolean | Giá trị đúng hoặc sai. Bạn có thể sử dụng trực tiếp trong If, Filter và các hàm khác mà không cần so sánh. | ĐÚNG VẬY |
| Sự lựa chọn | Lựa chọn từ một bộ tùy chọn, được hỗ trợ bằng một số. Kiểu dữ liệu này kết hợp nhãn văn bản có thể bản địa hóa với giá trị số. Nhãn xuất hiện trong ứng dụng và giá trị số được lưu trữ và dùng để so sánh. Hàm Type hỗ trợ kiểu dữ liệu này nếu bạn sử dụng một phiên bản của trường Lựa chọn theo tên. | ThisItem.Trạng thái đơn hàng |
| Màu sắc | Đặc tả màu bao gồm kênh alpha. |
Màu sắc.Đỏ Giá trị màu( "#102030" ) RGBA( 255, 128, 0, 0,5 ) |
| Tiền tệ | Giá trị tiền tệ được lưu trữ trong một số dấu chấm động. Giá trị tiền tệ giống như giá trị số với các tùy chọn định dạng tiền tệ. Hàm Type không hỗ trợ kiểu dữ liệu Tiền tệ. |
123 4,56 |
| Ngày | Ngày không có thời gian, trong múi giờ của người dùng ứng dụng. | Ngày (2019, 5, 16) |
| Ngày giờ | Ngày có thời gian, trong múi giờ của người dùng ứng dụng. | DateTimeValue( "16 tháng 5, 2019 1:23:09 PM" ) |
| Số thập phân | Một số có độ chính xác cao, thao tác cơ số 10 và phạm vi giới hạn. |
123 Thập phân( "1.2345") |
| Động (trước đây là UntypedObject) | Loại của giá trị là động và có thể khác nhau ở thời gian chạy. Giá trị Động có thể là bất kỳ kiểu hiện có nào và có thể được chuyển đổi thành các kiểu tương thích bằng cách sử dụng các hàm như Boolean(), Value(), Table(), v.v. Để biết thêm thông tin, hãy xem mục Giá trị độngvà Làm việc với JSON. | ParseJSON("{ ""Trường"" : 1234 }").Trường |
| Trôi nổi | Một số có độ chính xác chuẩn, hệ cơ số 2 và phạm vi rộng. |
123 8.903e121 1.234e-200 |
| Hướng dẫn sử dụng | Mã định danh duy nhất trên toàn cầu. |
GUID() GUID( "123e4567-e89b-12d3-a456-426655440000" ) |
| Siêu liên kết | Chuỗi văn bản có chứa siêu kết nối. | "https://powerapps.microsoft.com" |
| Hình ảnh | Chuỗi văn bản mã định danh tài nguyên chung (URI) cho một hình ảnh trong .jpeg, .png, .svg, .gif, hoặc một định dạng hình ảnh web phổ biến khác. Hàm Type không hỗ trợ kiểu dữ liệu Hình ảnh. |
MyImage được thêm vào như một tài nguyên ứng dụng "https://northwindtraders.com/logo.jpg" "ứng dụng://blobmanager/7b12ffa2..." |
| Phương tiện truyền thông | Một chuỗi văn bản URI để ghi video hoặc âm thanh. Hàm Type không hỗ trợ kiểu dữ liệu Phương tiện. |
MyVideo được thêm vào như một tài nguyên ứng dụng "https://northwindtraders.com/intro.mp4" "ứng dụng://blobmanager/3ba411c..." |
| Con số | Một bí danh cho Decimal (hầu hết Power Fx máy chủ) hoặc Float (ứng dụng Canvas). Nếu bạn có thể sử dụng nhiều số cho một tình huống, hãy sử dụng Số để tương thích tối đa. |
123 0,0123 1e4 |
| Ghi | Một bản ghi các giá trị dữ liệu. Kiểu dữ liệu kết hợp này chứa các trường hợp của các kiểu dữ liệu khác được liệt kê trong bài viết này. Để biết thêm thông tin, hãy xem Làm việc với bảng. Hàm Type hỗ trợ kiểu dữ liệu này nếu bạn sử dụng phiên bản của Bản ghi. |
{ Công ty: "Northwind Traders", Nhân viên: 35, NonProfit: false } |
| Ghi lại tham chiếu | Tham chiếu đến bản ghi trong bảng. Các tham chiếu này thường được sử dụng với tra cứu đa hình. Để biết thêm thông tin, hãy xem Làm việc với tham chiếu. Hàm Type không hỗ trợ kiểu dữ liệu này. | Đầu tiên (Tài khoản).Chủ sở hữu |
| Bàn | Một bảng các bản ghi. Tất cả các bản ghi phải có cùng tên trường và kiểu dữ liệu và trường bị bỏ qua được coi là trống. Kiểu dữ liệu kết hợp này chứa các trường hợp của các kiểu dữ liệu khác được liệt kê trong bài viết này. Để biết thêm thông tin, hãy xem Làm việc với bảng. Hàm Type hỗ trợ kiểu dữ liệu này nếu bạn sử dụng phiên bản của Bảng. |
Bảng( { Tên: "Sidney", Họ: "Higa" }, { FirstName: "Nancy", Họ: "Anderson" } ) |
| Chữ | Một chuỗi văn bản Unicode. | "Xin chào thế giới" |
| Thời gian | Thời gian không có ngày, trong múi giờ của người dùng ứng dụng. | Thời gian( 11, 23, 45 ) |
| Hư vô | Chỉ được dùng bởi các hàm do người dùng xác định, nó chỉ ra rằng một hàm không có kiểu trả về. Hàm Type không hỗ trợ kiểu dữ liệu này. Ngay cả khi hàm không có kiểu hoặc giá trị trả về, hàm vẫn luôn có thể trả về lỗi. | Xin chào(): Void = { Thông báo( "Xin chào!" ) } |
| Có/Không | Lựa chọn từ một bộ 2 tùy chọn, được hỗ trợ bằng giá trị boolean. Kiểu dữ liệu này kết hợp nhãn văn bản có thể bản địa hóa với giá trị boolean. Nhãn xuất hiện trong ứng dụng và giá trị boolean được lưu trữ và dùng để so sánh. Hàm Type hỗ trợ kiểu dữ liệu này nếu bạn sử dụng phiên bản của trường Có/ Không theo tên. | ThisItem.Có thể đánh thuế |
Nhiều kiểu dữ liệu trong số này giống nhau và có cùng một dạng biểu diễn cơ bản, chẳng hạn như trường Siêu kết nối đang được coi là Văn bản. Các kiểu dữ liệu bổ sung cung cấp trải nghiệm mặc định tốt hơn trong biểu mẫu và các điều khiển khác.
Trống
Tất cả các kiểu dữ liệu có thể có giá trị trống (không có giá trị). Thuật ngữ "null" thường được dùng trong cơ sở dữ liệu cho khái niệm này.
Sử dụng hàm Blank với hàm Set hoặc Patch để đặt biến hoặc trường thành blank. Ví dụ: Set( x, Blank() ) loại bỏ giá trị trong biến số chung x.
Kiểm tra giá trị trống bằng hàm IsBlank . Thay thế giá trị blank có thể bằng các giá trị không phải là blank bằng cách dùng hàm Coalesce.
Vì tất cả các kiểu dữ liệu đều hỗ trợ trống nên kiểu dữ liệu tùy chọn Booleanvà Hai có ba giá trị khả thi.
Văn bản, Siêu liên kết, Hình ảnh và phương tiện
Tất cả 4 kiểu dữ liệu này đều dựa trên chuỗi văn bản Unicode.
Văn bản nhúng
Các chuỗi văn bản nhúng trong một công thức được đặt trong dấu ngoặc kép. Sử dụng hai dấu ngoặc kép cùng với nhau để biểu thị một dấu ngoặc kép trong một chuỗi văn bản. Ví dụ: sử dụng công thức sau trong thuộc tính OnSelect của một tùy chọn kiểm soát Button:
Notify( "Jane said ""Hello, World!""" )
Kết quả là một biểu ngữ khi nhấn nút, nơi dấu ngoặc kép đầu tiên và cuối cùng được bỏ qua (khi chúng phân cách chuỗi văn bản) và các dấu ngoặc kép lặp lại xung quanh Hello, World! được thay thế bằng một dấu ngoặc kép duy nhất:
Dấu nháy đơn được dùng cho tên định danh chứa các ký tự đặc biệt và không có ý nghĩa đặc biệt trong chuỗi văn bản.
Nội suy chuỗi
Sử dụng phép nội suy chuỗi để nhúng các công thức trong một chuỗi văn bản. Cách tiếp cận này thường dễ làm việc và trực quan hóa đầu ra hơn so với việc sử dụng hàm Concatenate hoặc toán tử & .
Đặt tiền tố cho chuỗi văn bản bằng ký hiệu đô la $ và cho công thức sẽ được nhúng vào dấu ngoặc nhọn { }. Để thêm dấu ngoặc nhọn vào chuỗi văn bản, hãy sử dụng dấu ngoặc nhọn lặp lại: {{ hoặc }}. Bạn có thể sử dụng phép nội suy chuỗi ở bất kỳ đâu mà một chuỗi văn bản tiêu chuẩn có thể được sử dụng.
Ví dụ: hãy xem xét công thức sau đây với các biến toàn cục Apples được đặt thành 3 và Bananas được đặt thành 4:
$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."
Công thức này trả về chuỗi văn bản We have 3 apples, 4 bananas, yielding 7 fruit total. Các biến Apples và Bananas được chèn vào văn bản thay thế dấu ngoặc nhọn, cùng với kết quả của công thức tính Apples+Bananas. Dấu cách và các ký tự khác xung quanh dấu ngoặc nhọn được giữ nguyên.
Những công thức đã nhúng có thể bao gồm bất kỳ hàm hoặc toán tử nào. Tất cả những gì bắt buộc là kết quả của công thức có thể được ép buộc vào một chuỗi văn bản. Ví dụ, công thức này sẽ chèn Biệt danh nếu có, hoặc Tên nếu không, vào lời chào:
$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!"
Nếu NickName được đặt là "Joe" thì công thức này sẽ tạo chuỗi văn bản Welcome Joe, it's great to meet you!. Nhưng nếu NickName là giá trị blank và FirstName là "Joseph" thì công thức này sẽ tạo chuỗi văn bản Dear Joseph, great to meet you!.
Phép nội suy chuỗi có thể bao gồm các chuỗi văn bản tiêu chuẩn trong công thức đã nhúng. Ví dụ: nếu cả NickName lẫn FirstName đều không được cung cấp thì chúng tôi vẫn có thể cung cấp "Friend" để thay thế:
$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"
Phép nội suy chuỗi thậm chí có thể được lồng vào nhau. Hãy xem xét ví dụ dưới đây, trong đó tên First, Middle và Last được kết hợp thành một lời chào. Ngay cả khi một hoặc hai trong số các giá trị này trống, số lượng khoảng trắng chính xác vẫn được duy trì giữa các phần tên. Nếu không có phần nào được cung cấp, phép nội suy chuỗi bên trong sẽ thu gọn thành một chuỗi trống và được thay thế bằng hàm Coalesce thành "Friend".
$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
| Đầu tiên | Giữa | Cuối cùng | Kết quả |
|---|---|---|---|
| John | Qunicy | Doe | Welcome John Quincy Doe! |
| John | trống | Doe | Welcome John Doe! |
| trống | trống | Doe | Welcome Doe! |
| trống | trống | trống | Welcome Friend! |
Dòng mới
Chuỗi văn bản đã nhúng có thể chứa các dòng mới. Ví dụ: hãy cân nhắc việc đặt thuộc tính Text của thành phần kiểm soát Label thành như sau:
"Line 1
Line 2
Line 3"
Công thức này cho kết quả là ba dòng được hiển thị trong phần điều khiển nhãn:
Các dòng mới cũng được hỗ trợ bằng cách nội suy chuỗi:
$"Line {1}
Line {1+1}
Line {1+1+1}"
Kết quả cho ra cùng một kết quả:
Nguồn lực hình ảnh và phương tiện
Thông qua menu Tệp, bạn có thể thêm hình ảnh, video và tệp âm thanh dưới dạng nguồn lực ứng dụng. Tên của tệp đã nhập trở thành tên nguồn lực trong ứng dụng. Trong đồ họa này, logo của Northwind Traders có tên là nwindlogo đã được thêm vào ứng dụng:
Để sử dụng nguồn lực này trong ứng dụng, hãy chỉ định nguồn lực trong thuộc tính Image của một tùy chọn kiểm soát Hình ảnh:
URI cho hình ảnh và phương tiện khác
Bạn có thể tìm hiểu sâu hơn về ví dụ cuối cùng đó bằng cách đặt thuộc tính Text của một tùy chọn kiểm soát Nhãn thành nwindlogo. Nhãn sẽ hiển thị một chuỗi văn bản:
Các ứng dụng Canvas tham chiếu từng hình ảnh hoặc tệp phương tiện khác, cho dù đó là trong đám mây hay được thêm dưới dạng nguồn lực ứng dụng, bằng chuỗi văn bản URI.
Ví dụ: thuộc tính Image của thành phần kiểm soát hình ảnh không chỉ chấp nhận tài nguyên ứng dụng mà còn chấp nhận cả đường liên kết đến các hình ảnh trên web, chẳng hạn như "https://northwindtraders.com/logo.jpg". Thuộc tính này cũng chấp nhận các hình ảnh nội tuyến sử dụng lược đồ URI dữ liệu, như trong ví dụ này:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"
URI đó hiển thị phiên bản thu nhỏ của hai viên kim cương màu tím:
Bạn có thể hiển thị hình ảnh gần đây nhất chụp trong kiểm soát Máy ảnh nếu đặt thuộc tính Image của tùy chọn kiểm soát hình ảnh thành thuộc tính Photo của tùy chọn kiểm soát máy ảnh. Ứng dụng lưu giữ hình ảnh trong bộ nhớ, và thuộc tính Photo của tùy chọn kiểm soát máy ảnh trả về tham chiếu URI cho hình ảnh. Ví dụ: bạn có thể chụp ảnh và thuộc tính Photo của máy ảnh có thể trả về "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1".
Bạn sử dụng URI để tham chiếu hình ảnh hoặc tệp phương tiện khác được lưu trữ trong cơ sở dữ liệu. Bằng cách đó, ứng dụng không truy xuất dữ liệu thực tế cho đến khi cần. Ví dụ: một tệp đính kèm trong bảng Microsoft Dataverse có thể trả về "appres://datasources/Contacts/table/..." Như trong ví dụ về camera, bạn có thể hiển thị hình ảnh này bằng cách đặt thuộc tính Hình ảnh của tùy chọn kiểm soát hình ảnh thành tham chiếu này để truy xuất dữ liệu nhị phân.
Khi bạn lưu kiểu dữ liệu phương tiện, chẳng hạn như hình ảnh, vào cơ sở dữ liệu, ứng dụng sẽ gửi hình ảnh thực tế hoặc dữ liệu phương tiện, chứ không phải tham chiếu URI.
Giới hạn kích thước
Đối với chuỗi văn bản và URI, các kiểu dữ liệu này không có giới hạn độ dài đặt trước.
Dữ liệu nhị phân mà các kiểu dữ liệu này tham chiếu cũng không có giới hạn kích thước đặt trước. Ví dụ, hình ảnh được chụp thông qua bộ điều khiển camera được tham chiếu là "appres://..." có thể có kích thước và độ phân giải cao tùy theo khả năng của camera trên thiết bị. Độ phân giải, tỷ lệ khung hình và các thuộc tính khác của tệp phương tiện không bị giới hạn bởi kiểu dữ liệu, nhưng các kiểm soát cụ thể để phát và chụp phương tiện có thể có hạn chế riêng.
Tuy nhiên, tất cả kích thước của dữ liệu tùy thuộc vào dung lượng bộ nhớ khả dụng trong ứng dụng. Các trình duyệt chạy trên máy tính để bàn thường hỗ trợ hơn 100 megabyte dữ liệu. Tuy nhiên, dung lượng bộ nhớ khả dụng trên thiết bị như điện thoại có thể thấp hơn nhiều, thường là trong khoảng 30-70 megabyte. Để xác định xem ứng dụng của bạn có chạy trong những giới hạn này hay không, hãy thử nghiệm các tình huống phổ biến trên tất cả các thiết bị mà ứng dụng đó có thể chạy.
Cách tốt nhất là chỉ lưu giữ dữ liệu trong bộ nhớ khi cần thiết. Tải hình ảnh lên cơ sở dữ liệu ngay khi có thể; chỉ tải hình ảnh xuống khi người dùng ứng dụng yêu cầu.
Số
Lưu ý
Power Apps chỉ hỗ trợ Float hôm nay và đó là loại của tất cả các số. Hỗ trợ thập phân sẽ sớm được bổ sung.
Power Fx hỗ trợ hai loại số: Số thập phân và Số thực (có từ đồng nghĩa Số và Tiền tệ).
Hệ thập phân là hệ thống tốt nhất cho hầu hết các phép tính kinh doanh. Nó có thể biểu diễn chính xác các số ở cơ số 10, nghĩa là 0.1 có thể được biểu diễn chính xác và sẽ tránh được lỗi làm tròn trong quá trình tính toán. Nó có phạm vi đủ lớn cho mọi nhu cầu kinh doanh, lên đến 1028 với độ chính xác lên đến 28 chữ số.
Số thập phân là kiểu dữ liệu số mặc định cho hầu hết Power Fx máy chủ, được sử dụng nếu người ta chỉ ghi 2*2.
Float là tốt nhất cho các tính toán khoa học. Nó có thể biểu diễn các số trong phạm vi lớn hơn, lên tới 10308. Độ chính xác được giới hạn ở 15 vị trí thập phân và toán học dựa trên cơ số 2 nên nó không thể đại diện cho một số giá trị thập phân phổ biến một cách chính xác. Float cũng có hiệu suất cao hơn và được ưa chuộng nếu đó là một yếu tố và độ chính xác là không quan trọng.
Số thập phân
Kiểu dữ liệu Thập phân thường sử dụng kiểu dữ liệu thập phân .NET. Một số máy chủ, chẳng hạn như cột công thức Dataverse chạy trong SQL Server, sử dụng kiểu dữ liệu thập phân SQL Server.
Hệ thập phân thực hiện phép tính theo cách bạn đã học ở trường, sử dụng các chữ số cơ số 10, điều quan trọng là tránh lỗi làm tròn từ những khác biệt rất nhỏ có thể tích tụ khi sử dụng phép toán cơ số 2 (như được sử dụng bởi hệ thập phân Float).
Phạm vi từ 79,228,162,514,264,337,593,543,950,335 dương đến 79,228,162,514,264,337,593,543,950,335 âm. Dấu phân cách thập phân có thể được đặt ở bất kỳ đâu trong các số này, cung cấp độ chính xác lên đến 28 chữ số và vẫn được biểu diễn một cách chính xác. Ví dụ, 79,228,162,514,264.337593543950335 có thể được biểu diễn chính xác, cũng như 7.9228162514264337593543950335.
Số dấu phẩy động
Kiểu dữ liệu Float , còn được gọi là Số hoặc Tiền tệ, sử dụng tiêu chuẩn dấu phẩy động độ chính xác kép IEEE 754. Tiêu chuẩn này cung cấp một lượng lớn để làm việc, từ –1,79769 x 10308 đến 1,79769 x 10308. Giá trị nhỏ nhất có thể được biểu diễn là 5 x 10–324.
Float có thể biểu diễn chính xác các số nguyên (hoặc số nguyên) trong khoảng từ –9,007,199,254,740,991 (–(253 – 1)) đến 9,007,199,254,740,991 (253 – 1), bao gồm cả hai. Phạm vi này lớn hơn các kiểu dữ liệu số nguyên 32 bit (hoặc 4 byte) mà cơ sở dữ liệu thường sử dụng. Tuy nhiên, các ứng dụng canvas không thể biểu thị các kiểu dữ liệu số nguyên 64 bit (hoặc 8 byte). Bạn có thể muốn lưu trữ số trong trường văn bản hoặc sử dụng cột đã tính toán để tạo bản sao của số trong trường văn bản, sao cho nó ánh xạ vào kiểu dữ liệu Văn bản của ứng dụng canvas. Theo cách này, bạn có thể giữ, hiển thị và nhập các giá trị này và so sánh chúng để xác định xem chúng có bằng nhau hay không; tuy nhiên, bạn không thể thực hiện các phép tính số đối với các giá trị trong biểu mẫu này.
Số học dấu phẩy động là gần đúng, do đó, đôi khi có thể tạo ra kết quả bất ngờ qua nhiều ví dụ được ghi lại. Bạn có thể kỳ vọng công thức 55/100*100 trả về chính xác là 55 và (55/100*100)-55 trả về chính xác bằng 0. Tuy nhiên, công thức sau trả về 7,1054 x 10–15, rất nhỏ nhưng không phải bằng 0. Sự khác biệt nhỏ đó thường không gây ra vấn đề và ứng dụng sẽ làm tròn khi hiển thị kết quả. Tuy nhiên, những khác biệt nhỏ có thể kết hợp trong các phép tính tiếp theo và có vẻ đưa ra câu trả lời sai.
Các hệ thống cơ sở dữ liệu thường lưu trữ đơn vị tiền tệ và thực hiện phép tính bằng cách sử dụng phép toán thập phân, mang lại phạm vi nhỏ hơn nhưng kiểm soát chính xác hơn. Theo mặc định, các ứng dụng canvas ánh xạ đơn vị tiền tệ vào hoặc ra các giá trị dấu phẩy động; kết quả có thể khác với các phép tính được thực hiện trong kiểu dữ liệu thập phân gốc. Tùy thuộc vào nhu cầu chính xác của ứng dụng, bạn có thể muốn làm việc với các giá trị này dưới dạng Văn bản, như được mô tả cho các số nguyên lớn trước đó.
Mặc định và chuyển đổi
Lưu ý
Power Apps chỉ hỗ trợ Float hôm nay và đó là loại của tất cả các số. Hỗ trợ thập phân sẽ sớm được bổ sung.
Hầu hết Power Fx máy chủ sử dụng Decimal theo mặc định. Có mặc định này có nghĩa là:
- Số thực trong công thức. Số
1.234được hiểu là giá trị thập phân . Ví dụ, công thức1.234 * 2diễn giải1.234và2là Số thập phân và trả về kết quả Số thập phân . - Hàm giá trị.
Value( "1.234" )trả về giá trị Thập phân . Ví dụ, trong công thứcValue( "1.234" ) * 2, hàm Giá trị sẽ diễn giải nội dung của chuỗi văn bản"1.234"dưới dạng Số thập phân.
Để làm việc với các giá trị Float , hàm Float được sử dụng. Mở rộng ví dụ của chúng tôi, Float( 1.234 ) chuyển đổi số thập phân1.234 thành số thực.
Float cũng có thể được sử dụng để thay thế cho Giá trị để chuyển đổi một chuỗi chứa số dấu phẩy động như Float( "1.234" ) thành một giá trị Float , giá trị này là bắt buộc nếu số không thể được biểu diễn dưới dạng số thập phân.
Tóm lại:
| Mức sử dụng | Số thập phân | Trôi nổi |
|---|---|---|
| Số thực trong công thức | 1.234 |
Float( 1.234 )Float( "1.234" ) |
| Chuyển đổi từ chuỗi văn bản | Value( "1.234" )Decimal( "1.234" ) |
Float( "1.234" ) |
| Chuyển đổi giữa các kiểu số | Decimal( float ) |
Float( decimal ) |
| Chuyển đổi sang chuỗi văn bản | Text( decimal ) |
Text( float ) |
Trộn các loại số
Các giá trị số thực và số thập phân có thể được kết hợp một cách tự do. Khi trộn, các giá trị thập phân được chuyển đổi thành các giá trị số thực do có phạm vi lớn hơn. Vì chuyển đổi này có thể dẫn đến việc mất độ chính xác, điều quan trọng là không trộn lẫn hai điều vô ích. Vì Decimal là kiểu dữ liệu bằng chữ mặc định và hầu hết các hàm số đều giữ nguyên kiểu, nên khá dễ dàng để tránh di chuyển sang Trôi nổi mà không mong muốn.
Ví dụ, hãy xem xét phép tính sau đây sử dụng pac power-fx repl sau khi cài đặt Power Platform CLI. Vì cả hai số đều là Số thập phân, phép tính được thực hiện ở Số thập phân và kết quả vẫn giữ nguyên độ chính xác:
>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002
Nếu thay vào đó, toán hạng thứ hai được đổi thành Float thì toàn bộ phép tính sẽ được thực hiện trong Float và phần phân số nhỏ sẽ bị mất:
>> 1.0000000000000000000000000001 * Float(2)
2
Ngày, giờ và Ngày giờ
Múi giờ
Các giá trị ngày/giờ thuộc các loại sau:
- Người dùng cục bộ: Các giá trị này được lưu trữ theo UTC (Giờ Phối hợp Quốc tế), nhưng múi giờ của người dùng ứng dụng ảnh hưởng đến cách ứng dụng hiển thị các giá trị này và cách người dùng ứng dụng chỉ định chúng. Ví dụ: một thời điểm lại xuất hiện theo cách khác nhau với người dùng ở Canada và người dùng ở Nhật Bản.
- Không phụ thuộc vào múi giờ: Ứng dụng hiển thị các giá trị này theo cùng một cách và người dùng ứng dụng chỉ định chúng theo cùng một cách, bất kể múi giờ. Một thời điểm xuất hiện theo cách giống nhau với người dùng ở Canada và người dùng ở Nhật Bản. Các tác giả ứng dụng không muốn ứng dụng của họ chạy ở các múi giờ khác nhau sẽ sử dụng những giá trị này vì nhìn chung, chúng đơn giản hơn.
Bảng này cho thấy một số ví dụ:
| Kiểu ngày/giờ | Giá trị lưu trữ trong cơ sở dữ liệu | Giá trị được hiển thị và nhập 7 giờ về phía tây của UTC | Giá trị được hiển thị và nhập 4 giờ về phía đông của UTC |
|---|---|---|---|
| Người dùng cục bộ | Chủ nhật,19tháng 5,2019 4:00 SA |
Thứ bảy,18tháng 5,2019 9:00 CH |
Chủ nhật,19tháng 5,2019 8:00 SA |
| Không phụ thuộc vào múi giờ | Chủ nhật,19tháng 5,2019 4:00 SA |
Chủ nhật,19tháng 5,2019 4:00 SA |
Chủ nhật,19tháng 5,2019 4:00 SA |
Đối với ngày/giờ Địa phương của người dùng, các ứng dụng canvas sử dụng múi giờ của trình duyệt hoặc thiết bị, nhưng ứng dụng dựa trên mô hình sử dụng thiết đặt của người dùng trong Dataverse. Các cài đặt này thường khớp nhưng kết quả sẽ khác nhau nếu các cài đặt này khác nhau.
sử dụng các hàm DateAdd và TimeZoneInformation để chuyển giờ địa phương sang UTC và ngược lại. Xem ví dụ ở cuối tài liệu về các hàm này.
Số tương đương
Ứng dụng Canvas lưu giữ và tính toán tất cả các giá trị ngày/giờ, cho dù là Địa phương của người dùng hay Múi giờ độc lập theo UTC. Ứng dụng chuyển các giá trị theo múi giờ của người dùng ứng dụng khi hiển thị và khi người dùng ứng dụng chỉ định các giá trị đó.
Khi một ứng dụng canvas đọc một giá trị Múi giờ độc lập từ nguồn dữ liệu hoặc ghi giá trị đó vào nguồn dữ liệu, ứng dụng sẽ tự động điều chỉnh giá trị để bù cho múi giờ của người dùng ứng dụng. Sau đó, ứng dụng sẽ coi giá trị là giá trị UTC, phù hợp với tất cả các giá trị ngày/giờ khác trong ứng dụng. Do việc bù này, giá trị Múi giờ độc lập ban đầu sẽ xuất hiện khi ứng dụng điều chỉnh giá trị UTC cho múi giờ của người dùng ứng dụng.
Bạn có thể quan sát hành vi này chặt chẽ hơn bằng cách dùng hàm Value để truy cập vào giá trị số cơ bản của một giá trị ngày/giờ. Hàm này trả về giá trị ngày/giờ dưới dạng số milli giây kể từ ngày 1 tháng 1, 1970 00:00:00.000 UTC.
Vì mọi giá trị ngày/giờ được lưu trữ theo UTC, công thức Value( Date( 1970, 1, 1 ) ) sẽ không trả về số 0 ở hầu hết các nơi trên thế giới vì hàm Date trả về ngày theo UTC. Ví dụ: công thức sẽ trả về 28,800,000 theo múi giờ được bù 8 giờ so với UTC. Số đó phản ánh số milli giây trong 8 giờ.
Quay lại ví dụ của chúng ta:
| Kiểu ngày/giờ | Giá trị lưu trữ trong cơ sở dữ liệu | Giá trị được hiển thị và nhập 7 giờ về phía tây của UTC | Giá trị hàm trả về |
|---|---|---|---|
| Người dùng cục bộ | Chủ nhật,19tháng 5,2019 4:00 SA |
Thứ bảy,18tháng 5,2019 9:00 CH |
1,558,238,400,000 (Chủ nhật,19tháng 5,2019 4:00 SA UTC) |
| Không phụ thuộc vào múi giờ | Chủ nhật,19tháng 5,2019 4:00 SA |
Chủ nhật,19tháng 5,2019 4:00 SA |
1,558,263,600,000 (Chủ nhật,19tháng 5,2019 11:00 SA UTC) |
Chuyển đổi giờ Unix
Giờ Unix phản ánh số giây kể từ ngày 1 tháng 1, 1970 00:00:00 UTC. Vì các ứng dụng canvas sử dụng mili giây thay vì giây, bạn có thể chuyển đổi giữa hai ứng dụng bằng cách nhân hoặc chia cho 1.000.
Ví dụ: giờ Unix hiển thị ngày 9 tháng 9 năm 2001, lúc 01:46:40 UTC là 1.000.000.000. Để hiển thị giá trị ngày/giờ đó trong ứng dụng canvas, hãy nhân số đó với 1.000 để chuyển thành mili giây, sau đó sử dụng trong hàm Text. Công thức Text(1000000000*1000,DateTimeFormat.UTC) trả về chuỗi 2001-09-09T01:46:40.000Z.
Tuy nhiên, hàm đó trả về Thứ bảy, ngày 8 tháng 9, 2001 18:46:40 nếu bạn dùng định dạng DateTimeFormat.LongDateTime24 theo múi giờ bù -7 giờ so với UTC (7 giờ về phía tây của UTC). Kết quả này cho biết giá trị DateTime một cách chính xác dựa trên múi giờ địa phương.
Để chuyển sang giờ Unix, hãy chia kết quả từ Value cho 1.000:
RoundDown(Giá trị(UnixTime) / 1000, 0)
Nếu bạn cần giờ Unix ở giá trị Ngày để tính toán thêm hoặc hiển thị trong Power Apps, hãy sử dụng công thức này:
DateAdd( Ngày( 1970,1,1 ), UnixTime, Giây )
SQL Server
Máy chủ SQL có Datetime, Datetime2 và các kiểu dữ liệu ngày/giờ khác không bao gồm phần bù múi giờ và không cho biết các kiểu dữ liệu thuộc múi giờ nào. Các ứng dụng Canvas giả định những giá trị này được lưu trữ trong UTC và xem chúng là Địa phương của người dùng. Nếu giá trị có nghĩa là độc lập về múi giờ, hãy sửa các bản dịch UTC bằng cách dùng hàm TimeZoneOffset.
Các ứng dụng Canvas sử dụng thông tin múi giờ đi kèm trong trường Datetimeoffset khi chuyển đổi giá trị thành cách biểu thị UTC nội bộ của ứng dụng. Các ứng dụng này luôn sử dụng UTC làm múi giờ (bù múi giờ bằng 0) khi ghi dữ liệu.
Ứng dụng Canvas đọc và ghi giá trị của kiểu dữ liệu Giờ trong máy chủ SQL khi chuỗi văn bản ở định dạng thời lượng ISO 8601. Ví dụ: bạn phải phân tích định dạng chuỗi này và sử dụng hàm Time để chuyển chuỗi văn bản "PT2H1M39S" thành giá trị Giờ:
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)
Kết hợp thông tin ngày và giờ
Ngày, Giờ và NgàyGiờ có tên gọi khác nhau, nhưng tất cả đều chứa thông tin giống nhau về ngày và giờ.
Giá trị Ngày có thể bao gồm thông tin thời gian, thường là nửa đêm. Giá trị Giờ có thể chứa thông tin ngày, thường là 1 tháng 1 năm 1970. Dataverse cũng lưu trữ thông tin thời gian bằng trường Chỉ ngày nhưng chỉ hiển thị thông tin ngày theo mặc định. Tương tự, các ứng dụng canvas đôi khi phân biệt giữa những kiểu dữ liệu này để xác định các định dạng và tùy chọn kiểm soát mặc định.
Không nên thêm và trừ các giá trị ngày và giờ trực tiếp vì múi giờ và các phép chuyển đổi khác có thể gây ra kết quả khó hiểu. Sử dụng hàm Value để chuyển đổi giá trị ngày/giờ thành mili giây trước rồi xem xét múi giờ của người dùng ứng dụng hoặc sử dụng các hàm DateAdd và DateDiff để thêm hoặc trừ từ một trong các giá trị này.
Lựa chọn và Có/Không
Các lựa chọn và loại dữ liệu hai tùy chọn cung cấp hai hoặc nhiều lựa chọn cho người dùng ứng dụng để chọn. Ví dụ: một lựa chọn Trạng thái đơn hàng có thể cung cấp các lựa chọn Mới, Đã vận chuyển, Đã lập hóa đơn và Đã đóng. Kiểu dữ liệu hai tùy chọn chỉ đưa ra hai lựa chọn.
Cả hai kiểu dữ liệu này đều hiển thị nhãn dưới dạng văn bản. Ví dụ: tùy chọn kiểm soát nhãn hiển thị một trong các tùy chọn trạng thái đơn hàng nếu thuộc tính Văn bản của tùy chọn kiểm soát này được đặt thành một công thức tham chiếu đến lựa chọn đó. Nhãn tùy chọn có thể được bản địa hóa cho người dùng ứng dụng ở các vị trí khác nhau.
Khi người dùng ứng dụng chọn một tùy chọn và lưu thay đổi, ứng dụng sẽ gửi dữ liệu đến cơ sở dữ liệu, lưu trữ dữ liệu theo cách độc lập với ngôn ngữ. Một tùy chọn trong lựa chọn được gửi và lưu trữ dưới dạng số và một tùy chọn trong kiểu dữ liệu hai tùy chọn sẽ được gửi và lưu trữ dưới dạng giá trị boolean.
Nhãn chỉ để hiển thị. Bạn không thể so sánh các nhãn trực tiếp vì chúng dành riêng cho một ngôn ngữ. Thay vào đó, mỗi lựa chọn có một kiểu liệt kê hoạt động với số cơ bản hoặc giá trị boolean. Ví dụ: bạn không thể sử dụng công thức này:
If( ThisItem.OrderStatus = "Active", ...
Nhưng bạn có thể sử dụng công thức này:
If( ThisItem.OrderStatus = OrderStatus.Active, ...
Đối với các lựa chọn chung (bảng nào sẽ chia sẻ), tên của kiểu liệt kê tập hợp tùy chọn sẽ khớp với tên của lựa chọn chung. Đối với các lựa chọn cục bộ (trong phạm vi bảng), tên có thể bao gồm tên bảng. Hành vi này tránh xung đột nếu nhiều bảng có lựa chọn có cùng tên. Ví dụ: bảng Tài khoản có thể có lựa chọn Trạng thái đơn hàng và tên của lựa chọn đó có thể là Trạng thái đơn hàng (Tài khoản). Tên đó có dấu cách và dấu ngoặc đơn, vì vậy bạn cần đặt tên trong dấu ngoặc đơn nếu bạn tham chiếu tên trong công thức.
Các giá trị hai tùy chọn cũng hoạt động như các giá trị boolean. Ví dụ: một giá trị hai tùy chọn có tên là TaxStatus có thể có nhãn Chịu thuế và Không chịu thuế, giá trị này tương ứng với true và false. Để hiện điều này, hãy dùng công thức này:
If( ThisItem.Taxable = TaxStatus.Taxable, ...
Bạn cũng có thể dùng công thức này:
If( ThisItem.Taxable, ...