Tháng Mười Một 28, 2022 / Thủ Thuật

Power Apps là một ứng dụng ưu việt, bao gồm rất nhiều công cụ mạnh mẽ cho phép người dùng truy cập, tìm kiếm thông tin và dữ liệu của họ. Đối với những ứng dụng sử dụng cơ sở dữ liệu, việc này tương đương với việc viết một SQL Query để truy vấn cơ sở dữ liệu.

Chìa khóa để xây dựng các ứng dụng hiệu quả là giảm thiểu lượng dữ liệu mà ứng dụng phải lưu tạm (cache) và truyền về thiết bị của bạn khi khởi động ứng dụng. Cỏ thể bạn chỉ cần một số ít bản ghi từ hàng triệu bản ghi hoặc một giá trị tổng hợp duy nhất được tính ra từ hàng nghìn dòng dữ liệu,  hoặc đơn giản chỉ một số bản ghi đầu tiên khi khởi động ứng dụng và phần còn lại được tải về khi người dùng cần thêm thông tin (ví dụ như bấm trang tiếp theo, hoặc scroll đến cuối trang).

Cơ Chế ủy quyền (delegation) là cách cho phép các công thức Power Apps đáp ứng nhu cầu giảm thiểu dữ liệu di chuyển qua mạng và lưu về thiết bị. Bằng cách ủy thác việc xử lý dữ liệu cho nguồn dữ liệu, thay vì di chuyển tất cả dữ liệu đến ứng dụng và thiết bị để xử lý cục bộ.

Việc ủy quyền này sẽ hỗ trợ khác nhau tùy theo loại nguồn dữ liệu, cơ sở dữ liệu mà các hàm có thể dùng để ủy quyền cũng khác nhau. Ví dụ như với SharePoint chúng ta chỉ có thể ủy thác cho SharePoint truy vấn bằng những hàm như: Filter, Sort, Lookup … mà không thể dùng hàm Search. Khi chúng ta dùng hàm Search với SharePoint chúng ta sẽ nhận được cảnh báo Delegation cũng như kết quả trả lại là kết quả dựa trên lượng dữ liệu cache trên ứng dụng mà không phải tất cả giá trị của nguồn dữ liệu.

Chúng ta có thể cấu hình để cache đến 2.000 dòng dữ liệu, bởi vậy bạn sẽ không thể tìm thấy bất kỳ kết quả nào ở hàng thứ 2.000 trở đi trong Power Apps do tính năng delegation. Vậy, giải pháp nào để khắc phục những hạn chế này là gì?

Bài viết này sẽ giới thiệu đến bạn các giải pháp có thể thay thế chức năng tìm kiếm do cảnh báo deligation, thông qua việc mô phỏng một ứng dụng tìm kiếm kho xe trong thực tế. Hãy cùng tìm hiểu ngay sau đây.

Giới thiệu Ứng dụng tìm kiếm xe trong kho bãi 

Ứng dụng Tìm kiếm xe trong kho bãi được nhân viên bán hàng tại đại lý ô tô sử dụng để xác định ô tô nào hiện đang có trong kho.

Ban đầu, bạn cần tạo một SharePoint List mới có tên là  Car Sales Inventory  với các cột sau:

  • Year (number)
  • Make (single-line text)
  • Model (single-line text)

Nhập dữ liệu sau vào SharePoint List:

Year Make Model
2000 Honda Accord
1998 Oldsmobile Aurora
1984 Maserati Quattroporte
2011 Chevrolet Malibu
2006 Mercedes-Benz G-Class
1985 Ford Laser
2009 Kia Spectra
1996 Dodge Ram Van 3500
1985 Buick Century
2009 Mercedes-Benz S-Class

(3.000 dòng)

Bắt đầu một ứng dụng mới trong Power Apps Studio. Tạo một Text Iput với đầu vào văn bản ở trên cùng nơi người dùng có thể nhập từ khóa để thực hiện tìm kiếm.

Thêm SharePoint List Cars Inventory vào dữ liệu nguồn, sau đó chèn Gallery vào màn hình…

…và sử dụng mã này trong thuộc tính Items.

'Car Sales Inventory'

Thay đổi bố cục của gallery thành Title để chỉ có một nhãn trên mỗi hàng. Viết mã này vào thuộc tính Text của nhãn. Giờ đây, ứng dụng sẽ hiển thị danh mục các xe được lưu trong kho với đầy đủ các thông tin như năm lưu kho, các thông số và kiểu dáng của mỗi chiếc xe.

Concatenate(
     Text(
         ThisItem.Year,
         "0000"
     ),
     " ",
     ThisItem.Make,
     " ",
     ThisItem.Model
 )

Viết chức năng tìm kiếm với một cảnh báo delegation

Khi người dùng nhập cụm từ tìm kiếm của họ vào thanh tìm kiếm, thư viện bên dưới sẽ cập nhật để chỉ hiển thị các kết quả phù hợp.

Cập nhật mã trong thuộc tính Items của gallery để bao gồm chức năng Tìm kiếm . Có thể tìm kiếm các cột nhãn hiệu và kiểu máy vì chúng ở dạng văn bản nhưng cột năm thì không thể tìm kiếm được vì đây là một số.

Search('Car Sales Inventory', txt_Search.Text, "Make", "Model")

Chức năng tìm kiếm sẽ đưa ra một cảnh báo delegation vì nó không có trong danh sách các chức năng có thể delegation cho SharePoint . Điều này có nghĩa là theo mặc định, chỉ 500 hàng đầu tiên của Khoảng không quảng cáo bán ô tô sẽ được tìm kiếm và trả về hoặc 2.000 hàng nếu bạn tăng giới hạn trong cài đặt nâng cao.

Chức năng Tìm kiếm delegation Cảnh báo Giải pháp thay thế

Có 2 cách giải quyết delegation cho Chức năng tìm kiếm:

1. Cách giải quyết bắt đầu với delegation cho chức năng tìm kiếm

Mặc dù không thể delegate chức năng Search trong SharePoint nhưng chức năng StartsWith có thể thay thế. Điều này có nghĩa là chúng ta có thể tạo một thanh tìm kiếm dựa vào số ký tự đầu tiên của mỗi từ và hiển thị tất cả các kết quả trong thư viện. Một điều hạn chế là bất kỳ từ nào được tìm thấy ở giữa cột văn bản sẽ không được trả lại khi tìm kiếm.

Để sử dụng giải pháp thay thế delegation StartsWith để tìm kiếm, hãy sử dụng mã này trong thuộc tính Items của thư viện.

Filter(
    'Car Sales Inventory',
    StartsWith(make, txt_Search.Text)
    Or StartsWith(model, txt_Search.Text)
) 

2. Search + Cách giải quyết delegation 

Một cách giải quyết khác là lọc trước kết quả theo một số tiêu chí sẽ trả về ít hơn 2.000 hàng, sau đó thực hiện tìm kiếm trên đoạn dữ liệu nhỏ hơn đó. Ví dụ: kho ô tô có 3.000 hàng ô tô được đặt tại 5 thành phố. Chúng ta biết rằng bất kỳ thành phố nào được chọn sẽ trả về ít hơn 2.000 hàng nên bạn có thể sử dụng giải pháp thay thế này.

Đặt Dropdown ở góc trên cùng bên phải của ứng dụng và sử dụng mã này trong thuộc tính Items để hiển thị tên thành phố.

["Austin", "Dallas", "Fort Worth", "Houston", "San Antonio"]

Sau đó viết mã này vào thuộc tính Items của gallery. Cảnh báo delegation sẽ vẫn xuất hiện nhưng bạn không cần quan tâm đến yếu tố này.

Search(
    Filter('Car Sales Inventory', location=Dropdown1.Selected.Value),
    txt_Search.Text,
    "Make",
    "Model"
)

Sưu tầm và dịch.

Related Posts

Leave a Comment

Email của bạn sẽ không được hiển thị công khai.