Chức năng If và Switch
Áp dụng cho: Ứng dụng canvas Dataverse cột công thức Luồng máy tính để bàn Ứng dụng dựa trên mô hình Power Pages Power Platform CLI
Xác định xem điều kiện nào trong tập hợp là đúng (If) hoặc kết quả của một công thức khớp với bất kỳ giá trị nào trong tập hợp (Switch) rồi trả về kết quả hoặc thực hiện hành động.
Mô tả
Hàm If kiểm tra một hoặc nhiều điều kiện cho đến khi tìm thấy kết quả true. Nếu tìm thấy kết quả như vậy, hàm sẽ trả về một giá trị tương ứng. Nếu không tìm thấy kết quả như vậy, hàm sẽ trả về giá trị mặc định. Trong cả hai trường hợp, giá trị được trả về có thể là một chuỗi sẽ hiển thị, một công thức sẽ đánh giá hoặc một dạng kết quả khác.
Hàm Switch đánh giá một công thức và xác định xem kết quả có khớp với bất kỳ giá trị nào trong chuỗi mà bạn chỉ định hay không. Nếu tìm thấy kết quả khớp, hàm sẽ trả về một giá trị tương ứng. Nếu không tìm thấy kết quả khớp, hàm sẽ trả về giá trị mặc định. Trong cả hai trường hợp, giá trị được trả về có thể là một chuỗi sẽ hiển thị, một công thức sẽ đánh giá hoặc một dạng kết quả khác.
Hàm If và Switch rất giống nhau, nhưng bạn nên sử dụng hàm phù hợp nhất với tình huống của mình:
- Sử dụng hàm If để đánh giá một điều kiện. Cú pháp phổ biến nhất cho hàm này là If( Condition, ThenResult, DefaultResult ), cung cấp thông tin chung "nếu … thì … else…” được thấy trong các công cụ lập trình khác.
- Sử dụng hàm If để đánh giá nhiều điều kiện không liên quan. Trong Power Apps (không giống Microsoft Excel), bạn có thể chỉ định nhiều điều kiện mà không cần phải dùng công thức If.
- Sử dụng hàm Switch để đánh giá một điều kiện với nhiều giá trị khớp có thể có. Bạn cũng có thể dùng hàm If trong trường hợp này, nhưng bạn cần lặp lại công thức đối với mỗi giá trị khớp có thể có.
Bạn có thể sử dụng cả hai hàm này trong công thức hành vi để phân nhánh giữa hai hoặc nhiều hành động. Chỉ một nhánh sẽ kích hoạt hành động. Hàm đánh giá các điều kiện và giá trị khớp theo thứ tự và dừng đánh giá nếu một điều kiện là true hoặc tìm thấy một giá trị khớp.
Hàm trả về giá trị Blank nếu không có điều kiện nào là true, không tìm thấy giá trị trùng khớp và bạn không chỉ định kết quả mặc định.
Cú pháp
If( Condition, ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )
- Condition(s) – Bắt buộc. Công thức để kiểm tra xem giá trị nào là true. Các công thức này thường chứa toán tử so sánh (chẳng hạn như <, > và =) và các hàm kiểm tra như IsBlank và IsEmpty.
- ThenResult - Bắt buộc. Giá trị tương ứng sẽ trả về cho một điều kiện được đánh giá là true.
- DefaultResult – Không bắt buộc. Giá trị trả về nếu không có điều kiện nào được đánh giá là true. Nếu bạn không chỉ định đối số này, hàm sẽ trả về giá trị blank.
Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )
- Formula – Bắt buộc. Công thức để đánh giá xem giá trị nào khớp. Công thức này chỉ được đánh giá một lần.
- Match - Bắt buộc. Giá trị để so sánh với kết quả từ Formula (Công thức). Nếu tìm thấy kết quả khớp chính xác, hàm sẽ trả về Result (Kết quả) tương ứng.
- Result - Bắt buộc. Giá trị tương ứng sẽ trả về khi tìm thấy kết quả khớp chính xác.
- DefaultResult – Không bắt buộc. Nếu không tìm thấy kết quả khớp chính xác, hàm sẽ trả về giá trị này. Nếu bạn không chỉ định đối số này, hàm sẽ trả về giá trị blank.
Ví dụ
Giá trị trong công thức
Trong các ví dụ sau, công cụ điều khiển Slider (có tên Slider1) có giá trị là 25.
Công thức | Description | Kết quả |
---|---|---|
If( Slider1.Value = 25, "Result1" ) | Điều kiện là true và hàm trả về kết quả tương ứng. | "Result1" |
If( Slider1.Value = 25, "Result1", "Result2" ) | Điều kiện là true và hàm trả về kết quả tương ứng. | "Result1" |
If( Slider1.Value>1000, "Result1" ) | Điều kiện là false và không có DefaultResult. | blank |
If( Slider1.Value>1000, "Result1", "Result2" ) | Điều kiện là false và hàm trả về DefaultResult mà bạn cung cấp. | "Result2" |
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) | Điều kiện đầu tiên là true và hàm trả về kết quả tương ứng. Điều kiện thứ hai cũng là true nhưng hàm không đánh giá điều kiện này vì đối số này xuất hiện sau đối số đầu tiên đã được đánh giá là true. | "Result1" |
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) | Điều kiện đầu tiên là false bởi vì thanh trượt không phải là blank. Điều kiện thứ hai là true bởi vì giá trị của thanh trượt là một số và hàm trả về kết quả tương ứng. | "Result2" |
If( Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") | Cả điều kiện đầu tiên và thứ hai đều là false và hàm trả về DefaultResult mà bạn cung cấp. | "Result3" |
Switch( Slider1.Value, 25, "Result1" ) | Giá trị của thanh trượt khớp với giá trị đầu tiên được kiểm tra và hàm trả về kết quả tương ứng. | "Result1" |
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) | Giá trị của thanh trượt khớp với giá trị thứ 2 được kiểm tra và hàm trả về kết quả tương ứng. | "Result2" |
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) | Giá trị của thanh trượt không khớp với bất kỳ giá trị nào cần kiểm tra. Bạn có cung cấp DefaultResult nên hàm sẽ trả về giá trị này. | "DefaultResult" |
Phân nhánh trong công thức hành vi
Trong những ví dụ này, công cụ điều khiển Nội dung nhập văn bản có tên FirstName (Tên) có giá trị nhập vào là "John".
Công thức | Mô tả | Kết quả |
---|---|---|
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) | Điều kiện là true, nên hàm Navigate sẽ chạy. Bạn có thể dùng hàm IsBlank để kiểm tra xem một trường mẫu bắt buộc đã được điền chưa. Nếu FirstName blank, công thức này sẽ không có hiệu lực. |
true Màn hình thay đổi thành Screen1. |
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) | Không có toán tử !, điều kiện là false, nên hàm Navigate không chạy. Hàm Back được cung cấp làm DefaultResult, nên hàm này sẽ chạy. |
true Màn hình quay trở lại màn hình đã hiển thị trước đó. |
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) | Giá trị của FirstName.Text được so sánh với "Carlos", "Kirstin" và "John" theo thứ tự đó. Nếu hàm tìm thấy giá trị khớp với "John", ứng dụng sẽ chuyển đến Screen3. |
true Màn hình thay đổi thành Screen3. |
Hướng dẫn chi tiết
Thêm công cụ điều khiển Nội dung nhập văn bản rồi đặt tên là Text1 nếu mặc định không có tên đó.
Trong Text1, hãy nhập 30.
Thêm tùy chọn Label rồi đặt thuộc tính Văn bản thành công thức sau:
If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )Điều khiển Nhãn hiển thị Đặt hàng thêm! vì giá trị của Text1 lớn hơn 20 nhưng nhỏ hơn 40.
Trong Text1, hãy nhập 15.
Điều khiển Nhãn hiển thị Đặt hàng NHIỀU thêm! vì giá trị của Text1 nhỏ hơn 20.
Trong Text1, hãy nhập 50.
Công cụ điều khiển Label hiển thị giá trị mà bạn đã nhập giá trị này lớn hơn 40.