Chức năng liên kết và hủy liên kết

Áp dụng cho: Ứng dụng canvas Ứng dụng dựa trên mô hình

Liên kết và hủy liên kết bản ghi của hai bảng thông qua mối quan hệ một-nhiều hoặc nhiều-nhiều.

Mô tả

Hàm Relate liên kết 2 bản ghi thông qua mối quan hệ một-nhiều hoặc nhiều-nhiều trong Microsoft Dataverse. Hàm Unrelate ngược với hàm Relate và hủy liên kết.

Đối với mối quan hệ một-nhiều, bảng Nhiều có trường khóa ngoại trỏ đến bản ghi của bảng Một. Relate đặt trường này trỏ đến một bản ghi cụ thể của bảng Một, trong khi Unrelate đặt trường này thành blank. Nếu trường đã được đặt khi hàm Relate được gọi, thì liên kết hiện có sẽ được thay thế bằng liên kết mới. Bạn cũng có thể đặt trường này bằng cách sử dụng hàm Patch hoặc một công cụ điều khiển Chỉnh sửa biểu mẫu; bạn không cần sử dụng hàm Relate.

Đối với các mối quan hệ nhiều-nhiều, hệ thống liên kết các bản ghi sẽ duy trì một bảng tham gia ẩn. Bạn không thể trực tiếp truy cập vào bảng tham gia này mà chỉ có thể đọc thông qua phép chiếu một-nhiều và thiết lập thông qua các hàm RelateUnrelate. Cả hai bảng liên quan đều không có khóa ngoại.

Dữ liệu cho bảng mà bạn chỉ định trong đối số đầu tiên sẽ được làm mới để phản ánh thay đổi, nhưng dữ liệu cho bảng mà bạn chỉ định trong đối số thứ hai thì không. Dữ liệu đó phải được làm mới thủ công bằng hàm Refresh để hiển thị kết quả của thao tác.

Các hàm này không bao giờ tạo hoặc xóa bản ghi. Các hàm này chỉ có/không có mối liên hệ với hai bản ghi hiện có.

Bạn chỉ có thể sử dụng các hàm này trong công thức hành vi.

Lưu ý

Các hàm này là một phần của tính năng xem trước và các hàm này chỉ hoạt động khi tính năng Relational data, option sets, and other new features for CDS (Dữ liệu quan hệ, bộ tùy chọn và các tính năng mới khác của CDS) đang bật. Đây là tùy chọn cài đặt cấp ứng dụng, được bật theo mặc định cho các ứng dụng mới. Để bật/tắt tính năng này, chọn Thiết đặt rồi chọn Các tính năng sắp ra mắt. Phản hồi của bạn rất hữu ích đối với chúng tôi - vui lòng cho chúng tôi biết ý kiến của bạn trong diễn đàn cộng đồng Power Apps.

Cú pháp

Relate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable - Bắt buộc. Đối với bản ghi của Table1, bảng Table2 ghi lại dữ liệu liên quan thông qua mối quan hệ một-nhiều hoặc nhiều-nhiều.
  • Table2Record - Bắt buộc. Bản ghi Table2 để thêm vào mối quan hệ.

Unrelate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable - Bắt buộc. Đối với bản ghi của Table1, bảng Table2 ghi lại dữ liệu liên quan thông qua mối quan hệ một-nhiều hoặc nhiều-nhiều.
  • Table2Record - Bắt buộc. Bản ghi Table2 để xóa khỏi mối quan hệ.

Ví dụ

Hãy coi một bảng Sản phẩm có các mối quan hệ sau đây là đã được xem trong trình xem bảng của cổng thông tin Power Apps:

Tên hiển thị của mối quan hệ Bảng liên quan Loại mối quan hệ
Đặt trước sản phẩm Loại đặt trước Một-nhiều
Sản phẩm ↔ Người liên hệ Liên hệ Nhiều-nhiều

Sản phẩmĐặt trước được liên kết thông qua mối quan hệ một-nhiều. Để liên kết bản ghi đầu tiên của bảng Đặt trước với bản ghi đầu tiên của bảng Sản phẩm:

Relate( First( Products ).Reservations, First( Reservations ) )

Để xóa mối quan hệ giữa các bản ghi này:

Unrelate( First( Products ).Reservations, First( Reservations ) )

Chúng tôi không bao giờ tạo hoặc xóa bản ghi, mà chỉ sửa đổi mối quan hệ giữa các bản ghi.

Giữa Sản phẩmDanh bạ là mối quan hệ nhiều-nhiều. Để liên kết bản ghi đầu tiên của bảng Danh bạ với bản ghi đầu tiên của bảng Sản phẩm:

Relate( First( Products ).Contacts, First( Contacts ) )

Vì mối quan hệ nhiều-nhiều có tính đối xứng, chúng ta cũng có thể đã làm điều này theo hướng ngược lại:

Relate( First( Contacts ).Products, First( Products ) )

Để xóa mối quan hệ giữa các bản ghi này:

Unrelate( First( Products ).Contacts, First( Contacts ) )

hoặc:

Unrelate( First( Contacts ).Products, First( Products ) )

Hướng dẫn sau đó thực hiện chính xác các thao tác này trên các bảng này bằng cách sử dụng một ứng dụng có các tùy chọn điều khiển Thư việnHộp tổ hợp để chọn các bản ghi liên quan.

Những ví dụ này phụ thuộc vào dữ liệu mẫu được cài đặt trong môi trường của bạn. Hoặc tạo môi trường dùng thử bao gồm dữ liệu mẫu hoặc thêm dữ liệu mẫu vào môi trường hiện có.

Một-nhiều

Hàm Relate

Trước tiên, bạn sẽ tạo một ứng dụng đơn giản để xem và chỉ định lại các lượt đặt trước liên kết với một sản phẩm.

  1. Tạo ứng dụng máy tính bảng từ nội dung trống.

  2. Trên tab Dạng xem, chọn Nguồn dữ liệu.

  3. Trong ngăn Dữ liệu, chọn Thêm dữ liệu> chọn Sản phẩm.
    Bảng Sản phẩm là một phần của dữ liệu mẫu được tải ở trên.

  4. Trên tab Insert, thêm công cụ điều khiển Gallery trống, dạng dọc.

  5. Nhớ đặt tên cho công cụ điều khiển mà bạn vừa thêm là Gallery1, sau đó di chuyển và thay đổi kích thước của tùy chọn này để lấp đầy phía bên trái của màn hình.

  6. Trên tab Properties (Thuộc tính), đặt thuộc tính Items (Mục) của Gallery1 thành Products (Sản phẩm) và Layout (Bố cục) thành Image and title (Hình ảnh và tiêu đề).

    Đặt cấu hình ProductsGallery.

  7. Trong Gallery1, đảm bảo đặt tên cho công cụ điều khiển LabelTitle1 rồi đặt thuộc tính Văn bản thành ThisItem.Name.

    Đặt cấu hình nhãn trong Gallery1.

  8. Chọn màn hình để tránh chèn mục tiếp theo vào Gallery1. Thêm công cụ điều khiển Gallery trống, dạng dọc thứ hai và đặt tên là Gallery2.

    Gallery2 sẽ hiển thị các lượt đặt chỗ cho bất kỳ sản phẩm nào mà người dùng chọn trong Gallery1.

  9. Di chuyển và thay đổi kích thước Gallery2 để lấp đầy góc phần tư phía trên bên phải của màn hình.

  10. (tùy chọn) Thêm công cụ điều khiển Label ở trên Gallery2, như trong hình tiếp theo.

  11. Trong thanh công thức, đặt thuộc tính Items của Gallery2 thành Gallery1.Selected.Reservations.

    Đặt cấu hình Mục trong Gallery2.

  12. Trong ngăn thuộc tính, đặt Layout (Bố cục) của Gallery2 thành Title (Tiêu đề).

    Cấu hình Layout (Bố cục) trong Gallery2.

  13. Trong Gallery2, hãy thêm công cụ điều khiển Combo box (Hộp tổ hợp), đặt tên là ComboBox1, sau đó di chuyển và thay đổi kích thước của tùy chọn này để tránh chặn các công cụ điều khiển khác trong Gallery2.

  14. Trên tab Properties (Thuộc tính), đặt thuộc tính Items (Mục) của ComboBox1 thành Products (Sản phẩm).

    Đặt thuộc tính Items (Mục) thành Products (Sản phẩm).

  15. Cuộn xuống phía dưới trên tab Properties (Thuộc tính) rồi đặt thuộc tính Allow multiple selection (Cho phép nhiều lựa chọn) của ComboBox1 thành Off (Tắt).

    Đặt Allow multiple selection (Cho phép nhiều lựa chọn) thành Off (Tắt).

  16. Trong thanh công thức, đặt thuộc tính DefaultSelectedItems của ComboBox1 thành ThisItem.'Product Reservation'.

    Đặt DefaultSelectedItems cho ReserveCombo.

  17. Trong Gallery2, đặt thuộc tính OnSelect của NextArrow2 thành công thức sau:

    Relate( ComboBox1.Selected.Reservations, ThisItem )
    

    Khi người dùng chọn biểu tượng này, tùy chọn đặt trước hiện tại sẽ thay đổi thành sản phẩm mà người dùng đã chọn trong ComboBox1.

    Đặt cấu hình NextArrow2.

  18. Nhấn F5 để kiểm tra ứng dụng ở chế độ Xem trước.

Với ứng dụng này, người dùng có thể di chuyển tùy chọn đặt trước từ sản phẩm này sang sản phẩm khác. Để đặt trước một sản phẩm, người dùng có thể chọn một sản phẩm khác trong ComboBox1, sau đó chọn NextArrow2 để thay đổi tùy chọn đặt trước.

Minh họa hàm Relate trong ứng dụng một-nhiều.

Hàm Unrelate

Hiện tại, bạn có thể chuyển mối quan hệ từ bản ghi này sang bản ghi khác, nhưng không thể xóa hoàn toàn mối quan hệ. Bạn có thể dùng hàm Unrelate để ngắt kết nối một bản ghi đặt trước khỏi sản phẩm bất kỳ.

  1. Trên tab Dạng xem, chọn Nguồn dữ liệu.

  2. Trong ngăn Data (Dữ liệu), hãy chọn Add data source (Thêm nguồn dữ liệu)>Microsoft Dataverse>Reservations (Đặt trước)>Connect (Kết nối).

  3. Trong Gallery2, đặt công thức OnSelect của NextArrow2 thành công thức sau:

    If( IsBlank( ComboBox1.Selected ),
        Unrelate( Gallery1.Selected.Reservations, ThisItem ),
        Relate( ComboBox1.Selected.Reservations, ThisItem )
    );
    Refresh( Reservations )
    

    Cấu hình biểu tượng bên phải.

  4. Sao chép Gallery2 vào bảng tạm bằng cách chọn mục này rồi nhấn Ctrl-C.

  5. Dán bản sao của Gallery2 vào màn hình này bằng cách nhấn Ctrl-V, sau đó di chuyển bản sao này đến góc phần tư phía dưới bên phải của màn hình.

  6. (tùy chọn) Nếu bạn đã thêm một nhãn ở trên Gallery2, hãy lặp lại 2 bước trước cho nhãn đó.

  7. Nhớ đặt tên cho bản sao của Gallery2Gallery2_1 và sau đó đặt thuộc tính Items (Mục) thành công thức sau:

    Filter( Reservations, IsBlank( 'Product Reservation' ) )
    

    Một cảnh báo ủy nhiệm xuất hiện, nhưng sẽ không có vấn đề gì với lượng dữ liệu nhỏ trong ví dụ này.

    Đặt thuộc tính Items (Mục) của Gallery2_1.

Với những thay đổi này, người dùng có thể xóa lựa chọn trong ComboBox1 cho một người liên hệ nếu người đó không đặt trước sản phẩm. Những người liên hệ chưa đặt trước sản phẩm xuất hiện trong Gallery2_1, tại đây người dùng có thể chỉ định từng người liên hệ cho một sản phẩm.

Minh họa hàm Relate và Unrelate trong ứng dụng một-nhiều.

Nhiều-nhiều

Tạo mối quan hệ nhiều - nhiều

Dữ liệu mẫu không bao gồm mối quan hệ nhiều-nhiều, nhưng bạn sẽ tạo một mối quan hệ giữa bảng Sản phẩm và bảng Danh bạ. Người dùng có thể liên kết từng sản phẩm với nhiều người liên hệ và từng người liên hệ với nhiều sản phẩm.

  1. Từ trang này, chọn Dữ liệu trong thanh điều hướng bên trái, sau đó chọn Bảng.

    Mở danh sách bảng.

  2. Thay đổi bộ lọc bảng để bao gồm tất cả các bảng.

    Theo mặc định, các bảng mẫu không xuất hiện.

    Xóa bộ lọc bảng.

  3. Cuộn xuống, mở bảng Sản phẩm rồi chọn Mối quan hệ.

  4. Chọn Add relationship (Thêm mối quan hệ)>Many-to-many (Nhiều-nhiều).

  5. Chọn bảng Liên hệ cho mối quan hệ.

  6. Chọn Xong>Lưu bảng.

Liên kết và hủy liên kết người liên hệ với một hoặc nhiều sản phẩm

Bạn sẽ tạo một ứng dụng khác giống với ứng dụng đã tạo trước đó trong chủ đề này, nhưng ứng dụng mới sẽ cung cấp mối quan hệ nhiều-nhiều. Mỗi người liên hệ sẽ có thể đặt trước nhiều sản phẩm, chứ không chỉ một sản phẩm.

  1. Trong một ứng dụng trống của máy tính bảng, hãy tạo Gallery1 như mô tả ở quy trình đầu tiên trong chủ đề này.

  2. Thêm một công cụ điều khiển Gallery (Thư viện) khác, đặt tên là Gallery2 rồi di chuyển thư viện này vào góc trên bên phải màn hình.

    Ở phần sau trong chủ đề này, bạn sẽ thêm công cụ điều khiển Combo box trong mục Gallery2.

  3. Trong thanh công thức, đặt thuộc tính Items (Mục) của Gallery2 thành Gallery1.Selected.Contacts.

    Đặt cấu hình thuộc tính ContactsGallery - Mục.

  4. Trên tab Properties (Thuộc tính), đặt Layout (Bố cục) thành Image and title (Hình ảnh và tiêu đề).

    Đặt cấu hình ContactsGallery - Bố cục.

  5. Trong Gallery2, đảm bảo đặt tên cho công cụ điều khiển LabelTitle2 rồi đặt thuộc tính Văn bản thành ThisItem.'Full Name'.

    Văn bản sẽ chỉ xuất hiện trong công cụ điều khiển đó khi bạn hoàn thành quy trình này và chỉ định người liên hệ cho sản phẩm.

    Hiển thị tên người liên hệ.

  6. Xóa NextArrow2, chèn biểu tượng Cancel (Hủy) rồi đặt tên cho biểu tượng này là icon1.

  7. Đặt thuộc tính OnSelect của biểu tượng Cancel (Hủy) thành công thức sau:

    Unrelate( Gallery1.Selected.Contacts, ThisItem )
    

    Cấu hình biểu tượng Hủy.

  8. Trên tab Dạng xem, chọn Nguồn dữ liệu.

  9. Trong ngăn Data (Dữ liệu), hãy chọn Add data source (Thêm nguồn dữ liệu)>Microsoft Dataverse>Contacts (Người liên hệ)>Connect (Kết nối).

  10. Trong phần Gallery2, thêm công cụ điều khiển Combo box rồi đặt tên là ComboBox1. Sau đó, đặt thuộc tính Items (Mục) thành Contacts (Người liên hệ).

    Cấu hình thuộc tính Items (Mục) của hộp tổ hợp.

  11. Trên tab Properties (Thuộc tính), đặt Allow multiple selection (Cho phép nhiều lựa chọn) thành Off (Tắt).

    Cấu hình thuộc tính Layout (Bố cục) của hộp tổ hợp.

  12. Chèn biểu tượng Add (Thêm) rồi đặt thuộc tính OnSelect thành công thức sau:

    Relate( Gallery1.Selected.Contacts, ComboBox1.Selected )
    

    Cấu hình biểu tượng Thêm.

Với ứng dụng này, giờ đây người dùng có thể tự do liên kết và hủy liên kết nhóm người liên hệ với từng sản phẩm.

  • Để thêm người liên hệ cho sản phẩm, hãy chọn người liên hệ trong hộp tổ hợp ở cuối màn hình, sau đó chọn biểu tượng Add (Thêm).

  • Để xóa người liên hệ khỏi sản phẩm, hãy chọn biểu tượng Cancel (Hủy) cho người liên hệ đó.

    Không giống như mối quan hệ một - nhiều, mối quan hệ nhiều-nhiều cho phép người dùng liên kết cùng một người liên hệ với nhiều sản phẩm.

Minh họa hàm Relate và Unrelate trong ứng dụng nhiều-nhiều.

Ngược lại: liên kết và không liên kết sản phẩm với nhiều người liên hệ

Mối quan hệ nhiều-nhiều mang tính đối xứng. Bạn có thể mở rộng mẫu để thêm các sản phẩm cho một người liên hệ rồi chuyển giữa hai màn hình để hiển thị mối quan hệ từ một trong hai hướng.

  1. Đặt thuộc tính OnVisible (Hiển thị) của Screen1 (Màn hình 1) thành Refresh( Products ) (Làm mới (Sản phẩm)).

    Khi bạn cập nhật mối quan hệ một-nhiều hoặc nhiều-nhiều, chỉ dữ liệu của bảng đối số đầu tiên của cuộc gọi Liên kết hoặc Hủy liên kết được làm mới. Bạn phải làm mới thủ công lệnh gọi thứ hai nếu muốn chuyển giữa các màn hình của ứng dụng này.

    Đặt thuộc tính OnVisible cho hàm Refresh.

  2. Sao chép Screen1.

    Bản sao sẽ có tên là Screen1_1 và là cơ sở để xem xét các mối quan hệ từ phía người liên hệ.

    Sao chép màn hình.

  3. Để tạo chế độ xem ngược, hãy thay đổi các công thức này cho công cụ điều khiển của Screen1_1:

    • Screen1_1.OnVisible = Refresh( Contacts )
    • Gallery1_1.Items = Contacts
    • Title1_1.Text = ThisItem.'Full Name'
    • Label1_1.Text = "Selected Contact Products"
    • Gallery2_1.Items = Gallery1_1.Selected.Products
    • Title2_1.Text = ThisItem.Name
    • Icon1_1.OnSelect = Unrelate( Gallery1_1.Selected.Products, ThisItem )
    • ComboBox1_1.Items = Products
    • Icon2_1.OnSelect = Relate( Gallery1_1.Selected.Products, ComboBox1_1.Selected )

    Kết quả sẽ rất giống với màn hình trước nhưng tập liên quan đến mối quan hệ từ phía Contacts (Người liên hệ).

    Hiển thị mối quan hệ nhiều-nhiều bắt đầu từ người liên hệ.

  4. Thêm biểu tượng Arrows up down rồi đặt thuộc tính OnSelect thành Navigate( Screen1, None ). Thực hiện tương tự với Screen1 thông qua công thức Navigate( Screen1_1, None ).

    Thêm điều hướng giữa các màn hình.

Với màn hình mới này, người dùng có thể thêm người liên hệ cho sản phẩm rồi chuyển sang chế độ xem người liên hệ và xem sản phẩm được liên kết. Các mối quan hệ mang tính đối xứng và được chia sẻ giữa 2 màn hình.

Thể hiện mối quan hệ nhiều-nhiều từ hai phía.