Chức năng Lọc, Tìm kiếm và Tra cứu
Áp dụng cho: Ứng dụng Canvas Luồng máy tính để bàn Ứng dụng dựa trên mô hình Power Pages Power Platform CLI
Tìm một hoặc nhiều bản ghi trong một bảng.
Xem video này để tìm hiểu cách sử dụng các chức năng Lọc, **Tìm kiếm và Tra cứu :
Lưu ý
Các lệnh pac power-fx của CLI PAC không hỗ trợ chức năng Tìm kiếm .
Description
Hàm Filter tìm các bản ghi trong một bảng, thỏa mãn một công thức. Sử dụng Bộ lọc để tìm một tập hợp các bản ghi khớp với một hoặc nhiều tiêu chí và loại bỏ những bản ghi không khớp.
Hàm LookUp tìm bản ghi đầu tiên trong bảng, thỏa mãn một công thức. Sử dụng hàm LookUp để tìm một bản ghi phù hợp với một hoặc nhiều tiêu chí.
Cả hai hàm đều dùng công thức để đánh giá mỗi bản ghi của bảng. Hàm sẽ trả về kết quả chứa các bản ghi được đánh giá là true. Ngoài các toán tử công thức thông thường, bạn có thể dùng các toán tử in và exactin để khớp các chuỗi con.
Các trường bản ghi hiện đang được xử lý đều có sẵn trong công thức. Sử dụng toán tử ThisRecord hoặc chỉ đơn giản là tham chiếu các trường theo tên như khi làm với bất kỳ giá trị nào khác. Bạn cũng có thể dùng toán tử As để đặt tên cho bản ghi đang được xử lý, điều này có thể giúp cho công thức của bạn dễ hiểu hơn và làm cho các bản ghi lồng nhau có thể truy cập được. Để biết thêm thông tin, hãy xem ví dụ bên dưới và xử lý phạm vi bản ghi.
Hàm Search tìm các bản ghi trong bảng, có một trong các cột chứa chuỗi. Chuỗi có thể xuất hiện ở bất kỳ đâu trong cột; ví dụ, tìm kiếm "rob" hoặc "bert" sẽ tìm thấy kết quả trùng khớp trong cột có chứa "Robert". Tìm kiếm có phân biệt chữ hoa chữ thường. Không giống với hàm Filter và LookUp, hàm Search dùng chuỗi (chứ không dùng công thức) để so khớp.
Lọc và Tìm kiếm trả về một bảng chứa các cột giống như bảng gốc và các bản ghi khớp với tiêu chí. LookUp chỉ trả về bản ghi đầu tiên được tìm thấy, sau khi áp dụng công thức để giảm bản ghi thành một giá trị duy nhất. Nếu không tìm thấy bản ghi nào, hàm Filter và Search sẽ trả về bảng trống còn hàm LookUp trả về blank.
Bảng là một giá trị trong Power Apps, giống như một chuỗi hoặc số. Các hàm cũng có thể sử dụng hoặc trả về giá trị này. Lọc, Tìm kiếm và Tra cứu không sửa đổi bảng. Thay vào đó, các hàm này sử dụng bảng làm đối số và trả về một bảng, bản ghi hoặc một giá trị duy nhất từ đối số đó. Xem phần thao tác với bảng để biết thêm chi tiết.
Đại diện
Khi có thể, Power Apps sẽ ủy nhiệm cho bộ lọc và sắp xếp các thao tác với nguồn dữ liệu và trang thông qua kết quả theo yêu cầu. Ví dụ: khi bạn bắt đầu một ứng dụng hiển thị một kiểm soát Thư viện có dữ liệu thì chỉ bộ bản ghi đầu tiên mới được chuyển đến thiết bị từ ban đầu. Khi người dùng cuộn, dữ liệu bổ sung sẽ được đưa xuống từ nguồn dữ liệu. Kết quả là thời gian bắt đầu nhanh hơn cho ứng dụng và khả năng truy cập vào các tập hợp dữ liệu rất lớn.
Tuy nhiên, không phải lúc nào cũng có thể ủy nhiệm được. Nguồn dữ liệu thay đổi theo các hàm và toán tử mà nguồn dữ liệu hỗ trợ với việc ủy nhiệm. Nếu không thể ủy nhiệm hoàn toàn một công thức, môi trường tác giả sẽ gắn cờ cảnh báo cho phần không thể ủy nhiệm. Khi có thể, hãy cân nhắc việc thay đổi công thức để tránh các hàm và toán tử không thể ủy nhiệm. Chi tiết danh sách ủy nhiệm mà nguồn dữ liệu và thao tác có thể được ủy nhiệm.
Nếu không thể ủy nhiệm, Power Apps sẽ chỉ kéo xuống một tập hợp bản ghi nhỏ để làm việc tại chỗ. Các hàm bộ lọc và sắp xếp sẽ hoạt động trên một tập hợp bản ghi đã giảm. Những nội dung có trong Thư viện có thể không phải là một câu chuyện hoàn chỉnh, từ đó có thể gây khó hiểu cho người dùng.
Hãy xem tổng quan ủy nhiệm để biết thêm thông tin.
Cú pháp
Bộ lọc(Bảng*, Công thức1 [, *Công thức2*, ... ] )
- Bảng - Bắt buộc. Bảng sẽ tìm kiếm.
- Công thức - Bắt buộc. Công thức mà hàm dùng để đánh giá từng bản ghi trong bảng. Hàm trả về tất cả các bản ghi được đánh giá là true. Bạn có thể tham chiếu các cột trong bảng. Nếu bạn cung cấp nhiều công thức, kết quả của tất cả các công thức sẽ được kết hợp bằng hàm And.
Tìm kiếm(Bảng*, Chuỗi tìm kiếm, Cột1 [, *Cột2*, ... ] )
- Bảng - Bắt buộc. Bảng sẽ tìm kiếm.
- SearchString - Bắt buộc. Chuỗi cần tìm. Nếu có chuỗi trống hoặc giá trị blank, hàm sẽ trả về tất cả bản ghi.
- Cột - Bắt buộc. Tên của các cột trong Table sẽ tìm kiếm. Nếu tìm thấy SearchString trong dữ liệu của bất kỳ cột nào dưới dạng khớp một phần, hàm sẽ trả về bản ghi đầy đủ.
Lưu ý
Trước phiên bản 3.24042, tên cột cho hàm Power Apps Tìm kiếm được chỉ định bằng chuỗi văn bản sử dụng dấu ngoặc kép và nếu được kết nối với nguồn dữ liệu, chúng cũng cần phải là tên logic. Ví dụ, tên logic "cr43e_name" có dấu ngoặc kép đã được sử dụng thay cho tên hiển thị Tên không có dấu ngoặc kép. Đối với SharePoint và các nguồn dữ liệu Excel có chứa tên cột có khoảng trắng, mỗi khoảng trắng được chỉ định bằng "_x0020_", ví dụ "Tên cột" là "Tên cột_x0020". Sau phiên bản này, tất cả các ứng dụng đều được tự động cập nhật theo cú pháp mới được mô tả trong bài viết này.
Tra cứu(Bảng*, Công thức [, Công thức giảm] )
- Bảng - Bắt buộc. Bảng sẽ tìm kiếm. Trong giao diện người dùng, cú pháp hiển thị là source phía trên hộp hàm.
- Công thức - Bắt buộc. Công thức mà hàm dùng để đánh giá từng bản ghi trong bảng. Hàm trả về bản ghi đầu tiên được đánh giá là true. Bạn có thể tham chiếu các cột trong bảng. Trong giao diện người dùng, cú pháp hiển thị là condition phía trên hộp chức năng.
- Công thức rút gọn - Tùy chọn. Hàm sẽ đánh giá công thức này đối với bản ghi tìm thấy rồi giảm xuống một giá trị cho bản ghi này. Bạn có thể tham chiếu các cột trong bảng. Nếu bạn không sử dụng thông số này, hàm sẽ trả về bản ghi đầy đủ của bảng. Trong giao diện người dùng, cú pháp hiển thị là result phía trên hộp chức năng.
Ví dụ
Dưới đây là các ví dụ sử dụng nguồn dữ liệuIceCream:
Công thức | Description | Kết quả |
---|---|---|
Bộ lọc(IceCream, OnOrder > 0) | Trả về các bản ghi trong đó OnOrder lớn hơn 0. | |
Bộ lọc (Kem, Số lượng + Đang đặt hàng > 225) | Trả về các bản ghi trong đó tổng của các cột Quantity và OnOrder lớn hơn 225. | |
Bộ lọc (Kem, "sô cô la" trong Lower (Hương vị)) | Trả về các bản ghi trong đó từ "chocolate" xuất hiện trong tên Flavor, không phân biệt chữ hoa hay chữ thường. | |
Bộ lọc (Kem, Số lượng < 10 && Theo đơn hàng < 20) | Trả về bản ghi, trong đó Quantity nhỏ hơn 10 và OnOrder nhỏ hơn 20. Không có bản ghi nào phù hợp với các tiêu chí này, vì vậy hàm trả về bảng trống. | |
Tìm kiếm(Kem, "choc", Hương vị) | Trả về các bản ghi trong đó chuỗi "choc" xuất hiện trong tên Flavor, không phân biệt chữ hoa hay chữ thường. | |
Tìm kiếm(Kem, "", Hương vị) | Bởi vì cụm từ tìm kiếm trống, nên hàm trả về tất cả bản ghi. | |
Tra cứu(Kem, Hương vị = "Sôcôla", Số lượng) | Tìm kiếm bản ghi có Hương vị bằng với "Chocolate", trong đó có một bản ghi. Khi tìm thấy bản ghi đầu tiên, hàm sẽ trả về Quantity của bản ghi này. | 100 |
Tra cứu(Kem, Số lượng > 150, Số lượng + Đang đặt hàng) | Tìm kiếm bản ghi có Quantity lớn hơn 150 (có nhiều). Khi tìm thấy bản ghi đầu tiên (Flavor "Vanilla"), hàm sẽ trả về tổng các cột Quantity và OnOrder. | 250 |
LookUp(Kem, Hương vị = "Hạt dẻ cười", Đang đặt hàng) | Tìm kiếm bản ghi có Flavor là "Pistachio" (không có). Vì không tìm thấy kết quả khớp, nên Lookup trả về kết quả trống. | trống |
LookUp(Kem, Hương vị = "Vanilla") | Tìm kiếm bản ghi có Hương vị bằng với "Vanilla", trong đó có một bản ghi. Vì không có công thức giảm, nên hàm sẽ trả về toàn bộ bản ghi. | { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 } |
Lọc với các cột lựa chọn
Ví dụ sau sử dụng bảng Tài khoản trong Microsoft Dataverse làm nguồn dữ liệu. Ví dụ này cho thấy cách Lọc danh sách tài khoản dựa trên các giá trị điều khiển Hộp tổ hợp được chọn:
Hướng dẫn chi tiết
Mở ứng dụng trống.
Thêm màn hình mới bằng cách chọn tùy chọn Màn hình mới.
Trên tab Chèn, chọn Thư viện rồi chọn Dọc.
Trên tab Thuộc tính của ngăn bên phải, hãy mở Nguồn dữ liệu rồi chọn Tài khoản.
(Không bắt buộc) Trong danh sách Bố cục, chọn các tùy chọn khác nhau.
Trên tab Chèn, hãy chọn Đầu vào rồi chọn Hộp tổ hợp. Lặp lại bước này để thêm hai bộ điều khiển hộp tổ hợp khác.
Đối với mỗi bộ điều khiển hộp tổ hợp, trên tab Thuộc tính của ngăn bên phải, hãy mở Nguồn dữ liệu rồi chọn Tài khoản. Chọn Chỉnh sửa bên cạnh tùy chọn Trường, rồi chọn các giá trị Văn bản chính và SearchField. Văn bản chính phải là cột lựa chọn mà bạn muốn thêm vào hộp tổ hợp. Lặp lại bước này đối với hai bộ điều khiển hộp tổ hợp khác.
Bây giờ, hãy chọn bộ điều khiển Thư viện và thiết lập thuộc tính Mục cho công thức sau:
Filter(Accounts, 'Industry' = ComboBox3.Selected.Industry Or IsBlank(ComboBox3.Selected.Industry), 'Relationship Type' = ComboBox2.Selected.'Relationship Type' Or IsBlank(ComboBox2.Selected.'Relationship Type'), 'Preferred Method of Contact' = ComboBox1.Selected.'Preferred Method of Contact' Or IsBlank(ComboBox1.Selected.'Preferred Method of Contact'))
Trải nghiệm người dùng Tìm kiếm
Dưới đây là các ví dụ sử dụng nguồn dữ liệuIceCream:
Trong nhiều ứng dụng, bạn có thể nhập một hoặc nhiều ký tự vào hộp tìm kiếm để lọc danh sách các bản ghi trong một tập hợp dữ liệu lớn. Khi bạn nhập, danh sách chỉ hiển thị những bản ghi khớp với tiêu chí tìm kiếm.
Các ví dụ trong phần còn lại của bài viết này hiển thị kết quả tìm kiếm trong danh sách có tên Khách hàng có chứa dữ liệu này:
Để tạo nguồn dữ liệu này dưới dạng bộ sưu tập, hãy tạo một công cụ điều khiển Button (Nút) và đặt thuộc tính OnSelect theo công thức sau:
ClearCollect(Khách hàng, Bảng({ Tên: "Fred Garcia", Công ty: "Northwind Traders" }, { Tên: "Cole Miller", Công ty: "Contoso" }, { Tên: "Glenda Johnson", Công ty: "Contoso" }, { Tên: "Mike Collins", Công ty: "Adventure Works" }, { Tên: "Colleen Jones", Công ty: "Adventure Works" }) )
Như trong ví dụ này, bạn có thể hiển thị danh sách các bản ghi trong công cụ điều khiển Gallery (Thư viện) ở dưới cùng của một màn hình. Gần đầu màn hình, bạn có thể thêm một công cụ điều khiển Text input (Nhập văn bản) có tên là SearchInput, để người dùng có thể chỉ định bản ghi nào họ quan tâm.
Khi người dùng nhập các ký tự vào SearchInput, kết quả trong thư viện được lọc tự động. Trong trường hợp này, thư viện được cấu hình để hiển thị các bản ghi mà tên của khách hàng (không phải tên của công ty) bắt đầu bằng chuỗi ký tự trong SearchInput. Nếu người dùng nhập co vào hộp tìm kiếm, thư viện sẽ hiển thị các kết quả sau:
Để lọc dựa trên cột Name (Tên), hãy đặt thuộc tính Items (Mục) của công cụ điều khiển thư viện theo một trong các công thức sau:
Công thức | Mô tả | Kết quả |
---|---|---|
Lọc(Khách hàng, Bắt đầu bằng(Tên, SearchInput.Text) ) | Lọc nguồn dữ liệu Customers (Khách hàng) cho các bản ghi trong đó chuỗi tìm kiếm xuất hiện ở đầu cột Name (Tên). Kiểm tra này phân biệt chữ hoa chữ thường. Nếu người dùng nhập co vào hộp tìm kiếm, thư viện hiển thị Colleen Jones và Cole Miller. Thư viện không hiển thị Mike Collins do cột Name (Tên) cho bản ghi đó không bắt đầu bằng chuỗi tìm kiếm. | |
Bộ lọc (Khách hàng, SearchInput. Văn bản trong Tên) | Lọc nguồn dữ liệu Customers (Khách hàng) cho các bản ghi trong đó chuỗi tìm kiếm xuất hiện ở mọi nơi trong cột Name (Tên). Kiểm tra này phân biệt chữ hoa chữ thường. Nếu người dùng nhập co vào hộp tìm kiếm, thư viện sẽ hiển thị Colleen Jones,Cole Miller, và Mike Collins vì chuỗi tìm kiếm xuất hiện ở vị trí nào đó trong cột Name (Tên) của tất cả những bản ghi như vậy. | |
Tìm kiếm(Khách hàng, SearchInput.Text, Tên) | Tương tự như việc sử dụng toán tử in, hàm Search tìm kiếm một kết quả trùng khớp ở vị trí bất kỳ trong cột Name (Tên) của mỗi bản ghi. Bạn phải đặt tên cột trong dấu ngoặc kép. |
Bạn có thể mở rộng lệnh tìm kiếm của mình để bao gồm cột Công ty và cột Tên:
Công thức | Mô tả | Kết quả |
---|---|---|
Bộ lọc(Khách hàng, Bắt đầu bằng(Tên, SearchInput.Text) || Bắt đầu bằng(Công ty, SearchInput.Text) ) | Lọc nguồn dữ liệu Customers (Khách hàng) cho các bản ghi trong đó cột Name (Tên) hoặc cột Company (Công ty) bắt đầu bằng chuỗi tìm kiếm (ví dụ: co). Toán tử || là true nếu hàm StartsWith là true. | |
Bộ lọc (Khách hàng, SearchInput.Text trong Tên || SearchInput. Text trong Công ty) | Lọc nguồn dữ liệu Customers (Khách hàng) cho các bản ghi trong đó cột Name (Tên) hoặc cột Company (Công ty) chứa chuỗi tìm kiếm (ví dụ: co) ở vị trí bất kỳ trong nguồn dữ liệu đó. | |
Tìm kiếm(Khách hàng, SearchInput.Text, Tên, Công ty) | Tương tự như việc sử dụng toán tử in, hàm Search tìm kiếm nguồn dữ liệu Customers (Khách hàng) cho các bản ghi trong đó cột Name (Tên) hoặc cột Company (Công ty) chứa chuỗi tìm kiếm (ví dụ: co) ở vị trí bất kỳ trong nguồn dữ liệu đó. Hàm Search dễ đọc và viết hơn hàm Filter nếu bạn muốn chỉ định nhiều cột và nhiều toán tử in. |