Các hàm Update và UpdateIf
Áp dụng cho: Ứng dụng Canvas Ứng dụng dựa trên mô hình
Cập nhật các bản ghi trong một nguồn dữ liệu.
Description
Hàm Update
Sử dụng hàm Update để thay thế toàn bộ bản ghi trong nguồn dữ liệu. Ngược lại, các hàm UpdateIf và Patch sửa đổi một hoặc nhiều giá trị trong một bản ghi, để lại các giá trị khác.
Đối với bộ sưu tập, toàn bộ bản ghi phải trùng khớp. Bộ sưu tập cho phép các bản ghi trùng lặp nên nhiều bản ghi có thể trùng khớp. Bạn có thể sử dụng đối số RemoveFlags.All để cập nhật tất cả các bản sao của một bản ghi; nếu không, chỉ có một bản sao của bản ghi được cập nhật.
Nếu nguồn dữ liệu tự động tạo giá trị của cột, thì giá trị của cột đó phải được xác nhận lại.
Hàm UpdateIf
Sử dụng hàm UpdateIf để sửa đổi một hoặc nhiều giá trị trong một hoặc nhiều bản ghi phù hợp với một hoặc nhiều điều kiện. Điều kiện có thể là bất kỳ công thức nào trả về giá trị true hoặc false và có thể tham chiếu đến các cột của nguồn dữ liệu theo tên. Hàm này đánh giá điều kiện cho mỗi bản ghi và sửa đổi bất kỳ bản ghi nào có kết quả là true.
Để chỉ định một mục sửa đổi, hãy sử dụng bản ghi thay đổi có chứa các giá trị thuộc tính mới. Nếu bạn cung cấp bản ghi thay đổi này nội tuyến với dấu ngoặc nhọn, thì công thức thuộc tính có thể tham chiếu đến các thuộc tính của bản ghi đang được sửa đổi đó. Bạn có thể sử dụng hành vi này để sửa đổi các bản ghi dựa trên một công thức.
Tương tự như hàm UpdateIf, bạn cũng có thể sử dụng hàm Patch để thay đổi các cột cụ thể của bản ghi mà không ảnh hưởng đến các cột khác.
Cả hàm Update và UpdateIf trả về nguồn dữ liệu đã sửa đổi dưới dạng bảng. Bạn phải sử dụng một trong hai hàm này trong công thức hành vi.
Đại diện
Khi sử dụng với nguồn dữ liệu, các chức năng này không thể được ủy quyền. Chỉ có phần đầu tiên của nguồn dữ liệu mới được truy xuất, phần còn lại sau đó sẽ áp dụng hàm. Có thể đây không phải là toàn bộ câu chuyện. Một cảnh báo có thể xuất hiện khi biên soạn để nhắc nhở bạn về hạn chế này.
Hỗ trợ đoàn đại biểu
Chỉ một số nguồn dữ liệu hỗ trợ UpdateIf. Nếu nguồn dữ liệu không hỗ trợ tính năng này, Power Apps bây giờ sẽ gửi truy vấn đến máy chủ và truy xuất tất cả dữ liệu khớp với biểu thức bộ lọc lên đến tối đa 500 hoặc 2000 hoặc kích thước trang dữ liệu. Sau đó, nó sẽ cập nhật những bản ghi đó và gửi lại cho máy chủ để cập nhật.
Cú pháp
Cập nhật( Nguồn dữ liệu, Bản ghi cũ, Bản ghi mới [, Xóa cờ.Tất cả ] )
- Nguồn dữ liệu – Bắt buộc. Nguồn dữ liệu có chứa bản ghi mà bạn muốn thay thế.
- OldRecord – Bắt buộc. Bản ghi cần thay thế.
- NewRecord – Bắt buộc. Bản ghi thay thế. Đây không phải là bản ghi thay thế. Toàn bộ bản ghi được thay thế và các thuộc tính bị thiếu sẽ chứa giá trị trống.
- RemoveFlags.All – Tùy chọn. Trong bộ sưu tập, một bản ghi có thể xuất hiện nhiều lần. Chỉ định đối số RemoveFlags.All để cập nhật tất cả các bản sao của bản ghi.
UpdateIf( DataSource, Điều kiện1, ChangeRecord1 [, Điều kiện2, ChangeRecord2, ... ] )
- Nguồn dữ liệu – Bắt buộc. Nguồn dữ liệu có chứa (các) bản ghi mà bạn muốn sửa đổi.
- Điều kiện – Bắt buộc. Một công thức để đánh giá là true đối với (các) bản ghi mà bạn muốn sửa đổi. Bạn có thể sử dụng các tên cột trong DataSource (Nguồn dữ liệu) cho công thức đó.
- ChangeRecords - Bắt buộc. Đối với mỗi điều kiện tương ứng, bản ghi thay đổi của các giá trị thuộc tính mới sẽ được áp dụng cho các bản ghi của DataSource (Nguồn dữ liệu) thỏa mãn điều kiện. Nếu bạn cung cấp bản ghi nội tuyến bằng cách sử dụng dấu ngoặc nhọn, thì các giá trị thuộc tính của bản ghi hiện tại có thể được sử dụng trong các công thức thuộc tính.
Ví dụ
Trong các ví dụ này, bạn sẽ thay thế hoặc sửa đổi các bản ghi trong nguồn dữ liệu có tên IceCream (Kem) và bắt đầu với dữ liệu trong bảng sau:
Công thức | Mô tả | Kết quả |
---|---|---|
Cập nhật(Kem, First( Filter( IceCream, Flavor="Chocolate" ) ), { ID: 1, Flavor: "Mint Chocolate", Quantity:150 } ) |
Thay thế một bản ghi trong nguồn dữ liệu. | Nguồn dữ liệu IceCream (Kem) cũng đã được sửa đổi. |
UpdateIf(Kem, Số lượng > 175, { Số lượng: Số lượng + 10 } ) | Sửa đổi các bản ghi có Quantity (Số lượng) lớn hơn 175. Trường Quantity (Số lượng) được tăng thêm 10 và không có trường nào khác được sửa đổi. | Nguồn dữ liệu IceCream (Kem) cũng đã được sửa đổi. |
Cập nhật(Kem, First( Filter( IceCream, Flavor="Strawberry" ) ), { ID: 3, Flavor: "Strawberry Swirl"} ) |
Thay thế một bản ghi trong nguồn dữ liệu. Thuộc tính Quantity (Số lượng) chưa được cung cấp trong bản ghi thay thế, nên thuộc tính đó sẽ là trống trong kết quả. | Nguồn dữ liệu IceCream (Kem) cũng đã được sửa đổi. |
UpdateIf(Kem, đúng, { Số lượng: 0 } ) | Đặt giá trị của thuộc tính Quantity (Số lượng) cho tất cả các bản ghi trong nguồn dữ liệu thành 0. | Nguồn dữ liệu IceCream (Kem) cũng đã được sửa đổi. |
Hướng dẫn chi tiết
Nhập hoặc tạo bộ sưu tập tên là Inventory (Hàng tồn kho) và hiển thị bộ sưu tập này trong thư viện như mô tả trong phần Hiển thị dữ liệu trong thư viện.
Đặt tên cho thư viện ProductGallery.
Thêm một thanh trượt có tên UnitsSold (Các đơn vị được bán) và đặt thuộc tính Max (Tối đa) của thanh trượt đó cho biểu thức sau:
Bộ sưu tập sản phẩm.Đã chọn.Đơn vị trong khoThêm một nút rồi đặt thuộc tính OnSelect của nút này thành công thức sau:
UpdateIf(Kho, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})Nhấn F5, chọn một sản phẩm trong thư viện, chỉ định một giá trị với thanh trượt đó rồi chọn nút.
Số lượng đơn vị trong kho cho sản phẩm bạn đã chỉ định sẽ giảm theo số lượng mà bạn chỉ định.