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 UpdateIfPatch 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 thì 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 UpdateUpdateIf 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 được 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. Điều này có thể không đại diện cho câu chuyện hoàn chỉnh. Một cảnh báo có thể xuất hiện tại thời điểm soạn thảo để nhắc nhở bạn về hạn chế này.

Hỗ trợ ủy quyền (Thử nghiệm)

Hỗ trợ ủy quyền cho UpdateIf và RemoveIf hiện ở trong Bản xem trước thử nghiệm (TẮT mặc định) cho các nguồn dữ liệu hỗ trợ nó. 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 với kích thước tối đa là 500, 2000 hoặc kích thước trang dữ liệu. Sau đó, nó sẽ cập nhật các bản ghi đó và gửi lại từng bản ghi cho máy chủ để được cập nhật.

Cú pháp

Cập nhật( DataSource, Bản ghi cũ, Bản ghi mới [, RemoveFlags.All ] )

  • DataSource – 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, Condition1, ChangeRecord1 [, Condition2, ChangeRecord2, ... ] )

  • DataSource – 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.
  • Condition(s) – 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 đó.
  • ChangeRecord – 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:

Ví dụ về IceCream.

Công thức Mô tả Kết quả
Update( IceCream,
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. Thay thế một bản ghi.

Nguồn dữ liệu IceCream (Kem) cũng đã được sửa đổi.
UpdateIf( IceCream, Quantity > 175, { Quantity: Quantity + 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. Sửa đổi hồ sơ.

Nguồn dữ liệu IceCream (Kem) cũng đã được sửa đổi.
Update( IceCream,
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ả. Thay thế bản ghi khi số lượng không được cung cấp.

Nguồn dữ liệu IceCream (Kem) cũng đã được sửa đổi.
UpdateIf( IceCream, true, { Quantity: 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. Đặt số lượng cho tất cả thành 0.

Nguồn dữ liệu IceCream (Kem) cũng đã được sửa đổi.

Hướng dẫn chi tiết

  1. 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.

  2. Đặt tên cho thư viện ProductGallery.

  3. 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:
    ProductGallery.Selected.UnitsInStock

  4. Thê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(Inventory, ProductName = ProductGallery.Selected.ProductName, {UnitsInStock:UnitsInStock-UnitsSold.Value})

  5. 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.