Funzioni Relate e Unrelate

Si applica a: App canvas App basate su modello

Correla e annulla la relazione di record di due tabelle tramite una relazione uno-a-molti o molti-a-molti.

Descrizione

La funzione Relate collega due record tramite una relazione uno-a-molti o molti-a-molti in Microsoft Dataverse. La funzione Unrelate inverte il processo e rimuove il collegamento.

Per le relazioni uno-a-molti, la tabella Molti ha un campo di chiave esterna che punta a un record della tabella Uno. Relate imposta questo campo in modo che punti a un record specifico della tabella Uno, mentre Unrelate imposta questo campo su vuoto. Se il campo è già impostato quando si chiama Relate, il collegamento esistente viene perso a favore del nuovo collegamento. È anche possibile impostare questo campo usando la funzione Patch o un controllo Edit form; non è necessario utilizzare la funzione Relate.

Per le relazioni molti-a-molti, il sistema che collega i record mantiene una tabella di join nascosta. Non è possibile accedere direttamente a questa tabella di join; può essere letta solo mediante una proiezione uno-a-molti e impostata tramite le funzioni Relate e Unrelate. Nessuna delle tabelle correlate ha una chiave esterna.

I dati per la tabella specificati nel primo argomento verranno aggiornati per riflettere la modifica, ma non i dati per la tabella specificati nel secondo argomento. Quei dati devono essere aggiornati manualmente con la funzione Refresh per mostrare il risultato dell'operazione.

Queste funzioni non creano o eliminano mai un record. Collegano o scollegano due record già esistenti.

È possibile usare queste funzioni solo in formule di comportamento.

Nota

Queste funzioni fanno parte di una funzionalità di anteprima e il relativo comportamento è disponibile solo quando la funzionalità Dati relazionali, set di opzioni e altre nuove funzionalità per CDS è abilitata. Questa è un'impostazione a livello di app abilitata per impostazione predefinita per le nuove app. Per trovare questo interruttore della funzione, seleziona Impostazioni, quindi Funzionalità in arrivo. I commenti degli utenti sono molto apprezzati. Inviare commenti e suggerimenti nei forum della community di Power Apps.

Sintassi

Relate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable: obbligatorio. Per un record di Table1, la tabella dei record Table2 è correlata attraverso una relazione uno-a-molti o molti-a-molti.
  • Table2Record: obbligatorio. Il record Table2 da aggiungere alla relazione.

Unrelate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable: obbligatorio. Per un record di Table1, la tabella dei record Table2 è correlata attraverso una relazione uno-a-molti o molti-a-molti.
  • Table2Record: obbligatorio. Il record Table2 da rimuovere dalla relazione.

Esempi

Considera una tabella Prodotti con le seguenti relazioni come visto nel visualizzatore di tabelle del portale Power Apps:

Nome visualizzato relazione Tabella correlata Tipo di relazione
Prenotazione prodotto Prenotazione Uno-a-molti
Prodotto ↔ Contatto Contatto Molti-a-molti

Prodotti e Prenotazioni sono collegati mediante una relazione uno-a-molti. Per correlare il primo record della tabella Prenotazioni con il primo record della tabella Prodotti:

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

Per rimuovere la relazione tra questi record:

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

In nessun momento è stato creato o rimosso un record; solo la relazione tra i record è stata modificata.

Prodotti e Contatti sono collegati mediante una relazione molti-a-molti. Per correlare il primo record della tabella Contatti con il primo record della tabella Prodotti:

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

Poiché le relazioni molti-a-molti sono simmetriche, avremmo anche potuto eseguire la correlazione nell'altro senso:

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

Per rimuovere la relazione tra questi record:

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

oppure:

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

La guida che esegue esattamente queste operazioni su queste tabelle utilizzando un'app con i controlli Gallery e Combo box per la selezione dei record interessati.

Questi esempi dipendono dai dati di esempio installati nel proprio ambiente. Creare un ambiente di prova che include dati di esempio o aggiungere dati di esempio a un ambiente esistente.

Uno-a-molti

Funzione Relate

Per prima cosa si creerà una semplice app per visualizzare e riassegnare le prenotazioni associate a un prodotto.

  1. Creare un'app per tablet da zero.

  2. Nella scheda Visualizza seleziona Origini dati.

  3. Nel riquadro Dati seleziona Aggiungi dati> e Prodotti.
    La tabella Prodotti fa parte dei dati di esempio caricati sopra.

  4. Nella scheda Inserisci, aggiungere un controllo Gallery vuota verticale.

  5. Assicurarsi che il controllo appena aggiunto sia denominato Gallery1, quindi spostarlo e ridimensionarlo per riempire il lato sinistro della schermata.

  6. Nella scheda Proprietà, impostare la proprietà Items di Gallery1 su Prodotti e il relativo Layout su Immagine e titolo.

    Configurare ProductsGallery.

  7. In Gallery1, assicurarsi che il nome del controllo Label sia Title1 e quindi impostare la relativa proprietà Text su ThisItem.Name.

    Configurare l'etichetta in Gallery1.

  8. Selezionare lo schermo per evitare di inserire l'elemento successivo in Gallery1. Aggiungere un secondo controllo Gallery vuota verticale e assicurarsi che sia denominato Gallery2.

    Gallery2 mostrerà le prenotazioni per qualunque prodotto che l'utente seleziona in Gallery1.

  9. Spostare e ridimensionare Gallery2 per riempire il quadrante in alto a destra della schermata.

  10. (facoltativo) Aggiungere il controllo Label blu sopra Gallery2, come mostrato nell'illustrazione seguente.

  11. Nella barra della formula, impostare la proprietà Items di Gallery2 su Gallery1.Selected.Reservations.

    Configurare Items di Gallery2.

  12. Nel riquadro delle proprietà, impostare il layout di Gallery2 su Titolo.

    Configurare il layout di Gallery2.

  13. In Gallery2, aggiungere un controllo Combo box, assicurarsi che sia denominato ComboBox1, quindi spostarlo e ridimensionarlo per evitare di bloccare gli altri controlli in Gallery2.

  14. Nella scheda Proprietà, impostare la proprietà Items di ComboBox1 su Prodotti.

    Impostare la proprietà Items su Prodotti.

  15. Scorrere verso il basso nella scheda Proprietà e impostare la proprietà Allow multiple selection di ComboBox1 su Disattivato.

    Impostare Consenti selezioni multiple su Disattivato.

  16. Nella barra della formula, impostare la proprietà DefaultSelectedItems di ComboBox1 su ThisItem.'Product Reservation'.

    Impostare DefaultSelectedItems per ReserveCombo.

  17. In Gallery2, impostare la proprietà OnSelect di NextArrow2 su questa formula:

    Relate( ComboBox1.Selected.Reservations, ThisItem )
    

    Quando l'utente seleziona questa icona, la prenotazione corrente cambia nel prodotto che l'utente ha selezionato in ComboBox1.

    Configurare NextArrow2.

  18. Premere F5 per testare l'app in modalità Anteprima.

Con questa app, l'utente può spostare una prenotazione da un prodotto a un altro. Per una prenotazione di un prodotto, l'utente può selezionare un prodotto diverso in ComboBox1 e quindi selezionare NextArrow2 per cambiare quella prenotazione.

Dimostrare la funzione Relate in un'app uno-a-molti.

Funzione Unrelate

A questo punto, è possibile spostare la relazione da un record a un altro, ma non è possibile rimuovere del tutto la relazione. È possibile utilizzare la funzione Unrelate per disconnettere un record di prenotazione da qualsiasi prodotto.

  1. Nella scheda Visualizza seleziona Origini dati.

  2. Nel riquadro Dati selezionare Aggiungi origine dati>Microsoft Dataverse>Prenotazioni>Connetti.

  3. In Gallery2, impostare la formula OnSelect per NextArrow2 su questa formula:

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

    Configurare l'icona a destra.

  4. Selezionare Gallery2 e quindi premere CTRL-C per copiarlo negli Appunti.

  5. Incollare un duplicato di Gallery2 nella stessa schermata premendo Ctrl-V, quindi spostarlo nel quadrante in basso a destra della schermata.

  6. (facoltativo) Se si è aggiunta un'etichetta sopra Gallery2, ripetere i due passaggi precedenti per quell'etichetta.

  7. Assicurarsi che il duplicato di Gallery2 sia denominato Gallery2_1, quindi impostare la relativa proprietà Items su questa formula:

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

    Viene visualizzato un avviso di delega, ma non ha importanza con la piccola quantità di dati in questo esempio.

    Impostare la proprietà Items di Gallery2_1.

Con queste modifiche, gli utenti possono cancellare la selezione in ComboBox1 per un contatto se quella persona non ha prenotato un prodotto. I contatti che non hanno prenotato un prodotto sono visualizzati in Gallery2_1 dove gli utenti possono assegnare ogni contatto a un prodotto.

Dimostrare le funzioni Relate e Unrelate in un'app uno-a-molti.

Molti-a-molti

Creare una relazione molti a molti

I dati di esempio non includono una relazione molti a molti, ma ne creerai una tra la tabella Prodotti e la tabella Contatti. Gli utenti possono collegare ogni prodotto a più di un contatto e ogni contatto a più di un prodotto.

  1. Da questa pagina, seleziona Dati nella barra di spostamento a sinistra, quindi seleziona Tabelle.

    Aprire l'elenco delle tabelle.

  2. Modifica il filtro della tabella per includere tutte le tabelle.

    Per impostazione predefinita, le tabelle di esempio non vengono visualizzate.

    Rimuovere il filtro della tabella.

  3. Scorri verso il basso, apri la tabella Prodotto e seleziona Relazioni.

  4. Selezionare Aggiungi relazione>Molti-a-molti.

  5. Seleziona la tabella Contatto per la relazione.

  6. Seleziona Fatto>Salva tabella.

Collegare contatti a uno o più prodotti e scollegarli

Si creerà un'altra app simile a quella creata in precedenza in questo argomento, ma la nuova app offrirà una relazione molti-a-molti. Ogni contatto sarà in grado di prenotare più prodotti anziché uno solo.

  1. In un'app per tablet vuota, creare Gallery1 come descritto nella prima procedura di questo argomento.

  2. Aggiungere un altro controllo Gallery vuota verticale, assicurarsi che sia denominato Gallery2, quindi spostarlo nell'angolo in alto a destra della schermata.

    Più avanti in questo argomento, si aggiungerà un controllo Combo box sotto Gallery2.

  3. Nella barra della formula, impostare la proprietà Items di Gallery2 su Gallery1.Selected.Contacts.

    Configurare la proprietà ContattiGallery - Items.

  4. Nella scheda Proprietà, impostare Layout su Immagine e titolo.

    Configurare ContactsGallery - Layout.

  5. In Gallery2, assicurarsi che il controllo Label sia denominato Title2, quindi impostare la relativa proprietà Text su ThisItem.'Full Name'.

    Nessun testo apparirà in quel controllo fino a quando non si completerà questa procedura e si assegnerà un contatto a un prodotto.

    Visualizzare il nome del contatto.

  6. Eliminare NextArrow2, inserire un'icona Annulla e assicurarsi che sia denominata icon1.

  7. Impostare la proprietà OnSelect dell'icona Annulla su questa formula:

    Unrelate( Gallery1.Selected.Contacts, ThisItem )
    

    Configurare l'icona Annulla.

  8. Nella scheda Visualizza seleziona Origini dati.

  9. Nel riquadro Dati selezionare Aggiungi origine dati>Microsoft Dataverse>Contatti>Connetti.

  10. Sotto Gallery2, aggiungere un controllo Combo box, assicurarsi che sia denominato ComboBox1 e quindi impostare la relativa proprietà Items su Contatti.

    Configurare la proprietà Items della casella combinata.

  11. Nella scheda Proprietà, impostare Consenti selezione multipla su Disattivato.

    Configurare la proprietà Layout della casella combinata.

  12. Inserire un'icona Aggiungi e impostare la relativa proprietà OnSelect su questa formula:

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

    Configurare l'icona Aggiungi.

Con questa app, gli utenti possono collegare liberamente una serie di contatti a ciascun prodotto e scollegarli.

  • Per aggiungere un contatto a un prodotto, selezionare il contatto nella casella combinata nella parte inferiore della schermata, quindi selezionare l'icona Aggiungi.

  • Per rimuovere un contatto da un prodotto, selezionare l'icona Annulla per quel contatto.

    A differenza di una relazione uno-a-molti, una relazione molti-a-molti consente agli utenti di associare lo stesso contatto a più prodotti.

Dimostrare le funzioni Relate e Unrelate in un'app molti-a-molti.

In senso inverso: collegare i prodotti a più contatti e scollegarli

Le relazioni molti-a-molti sono simmetriche. È possibile estendere l'esempio per aggiungere prodotti a un contatto e quindi passare da una schermata all'altra per mostrare come appare la relazione nei due casi.

  1. Impostare la proprietà OnVisible di Screen1 su Refresh( Products ).

    Quando aggiorni una relazione uno-a-molti o molti-a-molti, solo i dati della prima tabella di argomenti della chiamata Relate o Unrelate vengono aggiornati. La seconda deve essere aggiornata manualmente se si desidera passare da una schermata all'altra dell'app.

    Impostare la proprietà OnVisible sulla funzione Refresh.

  2. Duplicare Screen1.

    Il duplicato verrà denominato Screen1_1 e consente di osservare la relazione dal lato contatti.

    Duplicare una schermata.

  3. Per creare la visualizzazione inversa, modificare queste formule nei controlli di 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 )

    Il risultato sarà molto simile alla schermata precedente ma la relazione è vista dal lato Contatti.

    Mostrare una relazione molti-a-molti a partire dai contatti.

  4. Inserire un'icona Frecce su/giù e impostare la relativa proprietà OnSelect su Navigate( Screen1, None ). Fare la stessa cosa in Screen1 con la formula Navigate( Screen1_1, None ).

    Aggiungere funzionalità di navigazione tra le schermate.

Con questa nuova schermata, gli utenti possono aggiungere un contatto a un prodotto, quindi passare a una visualizzazione dei contatti e vedere il prodotto associato. Le relazioni sono simmetriche e condivise tra due schermate.

Dimostrare una relazione molti-a-molti da entrambi i lati.