Κοινή χρήση μέσω


Συναρτήσεις Relate και Unrelate

Ισχύει σε: Εφαρμογές καμβά Εφαρμογές βάσει μοντέλου

Καρτέλες συσχέτισης και κατάργησης συσχέτισης δύο πινάκων μέσω μιας σχέσης ένα-προς-πολλά ή πολλά-προς-πολλά.

Περιγραφή

Η συνάρτηση Relate συνδέει δύο καρτέλες μέσω μιας σχέσης ένα-προς-πολλά ή πολλά-προς-πολλά στο Microsoft Dataverse. Η λειτουργία Unrelate αντιστρέφει τη διεργασία και καταργεί τη σύνδεση.

Για σχέσεις ένα προς πολλά, ο πίνακας Πολλά διαθέτει ένα πεδίο εξωτερικού κλειδιού που παραπέμπει σε μια καρτέλα του πίνακα Ένα. Η συνάρτηση Συσχέτιση ορίζει αυτό το πεδίο να παραπέμπει σε συγκεκριμένη καρτέλα του πίνακα Ένα, ενώ η συνάρτηση Κατάργηση συσχέτισης ορίζει αυτό το πεδίο σε κενό. Εάν το πεδίο έχει ήδη οριστεί όταν καλείται η συνάρτηση Relate, η υπάρχουσα σύνδεση χάνεται υπέρ της νέας σύνδεσης. Μπορείτε, επίσης, να ορίσετε αυτό το πεδίο χρησιμοποιώντας τη συνάρτηση Patch ή ένα στοιχείο ελέγχου Edit form. Δεν χρειάζεται να χρησιμοποιήσετε τη συνάρτηση Relate.

Για σχέσεις πολλών με πολλούς, το σύστημα που συνδέει τις καρτέλες διατηρεί έναν κρυφό πίνακα συνδέσμου. Δεν είναι δυνατή η άμεση πρόσβαση σε αυτόν τον πίνακα συνδέσμου. Μπορεί να διαβαστεί μόνο μέσω μιας προβολής ενός προς πολλούς και να οριστεί μέσω των συναρτήσεων Relate και Unrelate. Κανένας από τους σχετιζόμενους πίνακες δεν έχει ξένο κλειδί.

Τα δεδομένα για τον πίνακα που καθορίζετε στο πρώτο όρισμα θα ανανεώνονται ώστε να αντικατοπτρίζουν την αλλαγή, αλλά τα δεδομένα για τον πίνακα που καθορίζετε στο δεύτερο όρισμα δεν θα ενημερώνονται. Τα δεδομένα αυτά πρέπει να ανανεωθούν με μη αυτόματο τρόπο με τη συνάρτηση Refresh για να εμφανίσουν το αποτέλεσμα της συνάρτησης.

Αυτές οι συναρτήσεις δεν δημιουργούν ποτέ ή δεν διαγράφουν μια καρτέλα. Μόνο συσχετίζουν ή καταργούν τη συσχέτιση δύο καρτελών που υπάρχουν ήδη.

Μπορείτε να χρησιμοποιήσετε αυτές τις συναρτήσεις μόνο σε τύπους συμπεριφοράς.

Σημείωμα

Αυτές οι συναρτήσεις αποτελούν μέρος μιας δυνατότητας προεπισκόπησης και η συμπεριφορά τους είναι διαθέσιμη μόνο όταν είναι ενεργοποιημένη η δυνατότητα Σχεσιακά δεδομένα, σύνολα επιλογών και άλλες νέες δυνατότητες για CDS. Πρόκειται για μια ρύθμιση σε επίπεδο εφαρμογής, η οποία ενεργοποιείται από προεπιλογή για νέες εφαρμογές. Για να βρείτε αυτήν την εναλλαγή δυνατοτήτων, επιλέξτε Ρυθμίσεις και, στη συνέχεια, επιλέξτε Επερχόμενες δυνατότητες. Τα σχόλιά σας είναι πολύτιμα για εμάς. Πείτε μας τη γνώμη σας στα φόρουμ της κοινότητας Power Apps.

Σύνταξη

Relate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable - Απαιτείται. Για μια καρτέλα του Table1, ο πίνακας των καρτελών Table2 που σχετίζονται με μια σχέση ένα προς πολλά ή πολλά προς πολλά.
  • Table2Record - Απαιτείται. Η καρτέλα Table2 που θα προστεθεί στη σχέση.

Unrelate( Table1RelatedTable, Table2Record )

  • Table1RelatedTable - Απαιτείται. Για μια καρτέλα του Table1, ο πίνακας των καρτελών Table2 που σχετίζονται με μια σχέση ένα προς πολλά ή πολλά προς πολλά.
  • Table2Record - Απαιτείται. Η καρτέλα Table2 που θα καταργηθεί από τη σχέση.

Παραδείγματα

Εξετάστε το ενδεχόμενο ενός πίνακα Προϊόντα με τις ακόλουθες σχέσεις όπως εμφανίζονται στην προβολή πίνακα πύλης Power Apps:

Όνομα εμφάνισης σχέσης Σχετικός πίνακας Τύπος σχέσης
Κράτηση προϊόντος Κράτηση Ένα προς πολλά
Προϊόν ↔ επαφή Επικοινωνία Πολλοί προς πολλούς

Τα Προϊόντα και Κρατήσεις σχετίζονται μέσω μιας σχέσης ενός προς πολλούς. Για να συσχετίσετε την πρώτη καρτέλα του πίνακα Κρατήσεις με την πρώτη καρτέλα του πίνακα Προϊόντα:

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

Για να καταργήσετε τη σχέση μεταξύ αυτών των καρτελών:

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

Δεν δημιουργήσαμε ή καταργήσαμε μια καρτέλα σε καμία περίπτωση, μόνο η σχέση μεταξύ των καρτελών τροποποιήθηκε.

Τα Προϊόντα και Επαφές σχετίζονται μέσω μιας σχέσης πολλών προς πολλούς. Για να συσχετίσετε την πρώτη καρτέλα του πίνακα Επαφές με την πρώτη καρτέλα του πίνακα Προϊόντα:

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

Όπως οι σχέσεις πολλών προς πολλούς είναι συμμετρικές, θα μπορούσαμε επίσης να έχουμε κάνει αυτό προς την αντίθετη κατεύθυνση:

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

Για να καταργήσετε τη σχέση μεταξύ αυτών των καρτελών:

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

ή:

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

Η αναλυτική διαδικασία που ακολουθεί εκτελεί ακριβώς αυτές τις λειτουργίες σε αυτούς τους πίνακες χρησιμοποιώντας μια εφαρμογή με στοιχεία ελέγχου Gallery και Combo box για την επιλογή των καρτελών που εμπλέκονται.

Αυτά τα παραδείγματα εξαρτώνται από το δείγμα δεδομένων που εγκαθιστάτε στο περιβάλλον σας. Είτε δημιουργήστε ένα δοκιμαστικό περιβάλλον συμπεριλαμβανομένου του δείγματος δεδομένων είτε προσθέστε δείγμα δεδομένων σε ένα υπάρχον περιβάλλον.

Ένα προς πολλά

Συνάρτηση Relate

Αρχικά, θα δημιουργήσετε μια απλή εφαρμογή για να προβάλετε και να αναθέσετε εκ νέου τις κρατήσεις που σχετίζονται με ένα προϊόν.

  1. Δημιουργήστε μια εφαρμογή για tablet από κενό.

  2. Στην καρτέλα Προβολή, επιλέξτε Προελεύσεις δεδομένων.

  3. Στο τμήμα παραθύρου Δεδομένα επιλέξτε Προσθήκη δεδομένων> επιλέξτε Προϊόντα.
    Ο πίνακας Προϊόντα είναι μέρος του δείγματος δεδομένων που φορτώνεται παραπάνω.

  4. Στην καρτέλα Ένθεμα, προσθέστε ένα κενό κάθετο στοιχείο ελέγχου Gallery.

  5. Βεβαιωθείτε ότι το στοιχείο ελέγχου που μόλις προσθέσατε ονομάζεται Gallery1 και, στη συνέχεια, μετακινήστε το και αλλάξτε το μέγεθός του για να γεμίσει την αριστερή πλευρά της οθόνης.

  6. Στην καρτέλα Ιδιότητες, ορίστε την ιδιότητα του Gallery1 Items σε Προϊόντα και τη Διάταξη σε Εικόνα και τίτλος.

    Ρύθμιση παραμέτρων του ProductsGallery.

  7. Στο Gallery1, βεβαιωθείτε ότι το στοιχείο ελέγχου Label ονομάζεται Title1 και, στη συνέχεια, ορίστε την ιδιότητά του Text σε ThisItem.Name.

    Ρύθμιση παραμέτρων της ετικέτας στο Gallery1.

  8. Επιλέξτε την οθόνη για να αποφύγετε την εισαγωγή του επόμενου στοιχείου στο Gallery1. Προσθέστε ένα δεύτερο κενό κάθετο στο στοιχείο ελέγχου Gallery και βεβαιωθείτε ότι ονομάζεται Gallery2.

    Το Gallery2 θα εμφανίσει τις κρατήσεις για όποιο προϊόν επιλέξει ο χρήστης στο Gallery1.

  9. Μετακινήστε και αλλάξτε το μέγεθος του Gallery2 για να συμπληρώσετε το άνω δεξιό τεταρτημόριο της οθόνης.

  10. (προαιρετικά) Προσθέστε το μπλε στοιχείο ελέγχου Label πάνω από το Gallery2, όπως δείχνει το επόμενο γραφικό.

  11. Στη γραμμή τύπων, ορίστε την ιδιότητα Items του Gallery2 σε Gallery1.Selected.Reservations.

    Ρύθμιση παραμέτρων στοιχείων Gallery2.

  12. Στο τμήμα παραθύρου ιδιοτήτων, ορίστε τη Διάταξη του Gallery2 σε Τίτλο.

    Ρύθμιση παραμέτρων διάταξης Gallery2.

  13. Στο Gallery2, προσθέστε ένα στοιχείο ελέγχου Combo box, βεβαιωθείτε ότι ονομάζεται ComboBox1 και, στη συνέχεια, μετακινήστε το και αλλάξτε το μέγεθός του, για να αποφύγετε τον αποκλεισμό των άλλων στοιχείων ελέγχου στο Gallery2.

  14. Στην καρτέλα Ιδιότητες, ορίστε την ιδιότητα Items του ComboBox1 σε Προϊόντα.

    Ορίστε την ιδιότητα Items σε προϊόντα.

  15. Κάντε κύλιση προς τα κάτω στην καρτέλα Ιδιότητες και ορίστε την ιδιότητα Allow multiple selection σε ComboBox1 στο Off.

    Ορίστε το

  16. Στη γραμμή τύπων, ορίστε την ιδιότητα DefaultSelectedItems του ComboBox1 σε ThisItem.'Product Reservation'.

    Ορισμός DefaultSelectedItems για ReserveCombo.

  17. Στο Gallery2, ορίστε την ιδιότητα OnSelect του NextArrow2 σε αυτόν τον τύπο:

    Relate( ComboBox1.Selected.Reservations, ThisItem )
    

    Όταν ο χρήστης επιλέγει αυτό το εικονίδιο, η τρέχουσα δέσμευση αλλάζει στο προϊόν που έχει επιλέξει ο χρήστης στο ComboBox1.

    Ρύθμιση παραμέτρων του NextArrow2.

  18. Πατήστε F5 για να δοκιμάσετε την εφαρμογή σε λειτουργία προεπισκόπησης.

Με αυτήν την εφαρμογή, ο χρήστης μπορεί να μετακινήσει μια κράτηση από ένα προϊόν σε ένα άλλο. Για μια κράτηση σε ένα προϊόν, ο χρήστης μπορεί να επιλέξει ένα διαφορετικό προϊόν στο ComboBox1 και, στη συνέχεια, να επιλέξει το NextArrow2 για να αλλάξει την κράτησή του.

Επίδειξη της συνάρτησης

Συνάρτηση Unrelate

Σε αυτό το σημείο, μπορείτε να μετακινήσετε τη σχέση από μια καρτέλα σε μια άλλη, αλλά δεν μπορείτε να καταργήσετε εντελώς τη σχέση. Μπορείτε να χρησιμοποιήσετε τη συνάρτηση Unrelate για να αποσυνδέσετε μια καρτέλα κράτησης από οποιοδήποτε προϊόν.

  1. Στην καρτέλα Προβολή, επιλέξτε Προελεύσεις δεδομένων.

  2. Στο παράθυρο Δεδομένα, επιλέξτε Προσθήκη προέλευσης δεδομένων>Microsoft Dataverse>Κρατήσεις>Σύνδεση.

  3. Στο Gallery2, ορίστε τον τύπο OnSelect για NextArrow2 σε αυτόν τον τύπο:

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

    Ρύθμιση παραμέτρων του δεξιού εικονιδίου.

  4. Αντιγράψτε το Gallery2 στο Πρόχειρο επιλέγοντάς το και, στη συνέχεια, πατώντας τον συνδυασμό πλήκτρων Ctrl-C.

  5. Επικολλήστε ένα διπλότυπο του Gallery2 στην ίδια οθόνη πατώντας τα πλήκτρα CTRL-V και, στη συνέχεια, μετακινήστε το στο κάτω δεξιό τεταρτημόριο της οθόνης.

  6. (προαιρετικά) Εάν προσθέσατε μια ετικέτα πάνω από το Gallery2, επαναλάβετε τα δύο προηγούμενα βήματα για αυτήν την ετικέτα.

  7. Βεβαιωθείτε ότι το διπλότυπο του Gallery2 ονομάζεται Gallery2_1 και, στη συνέχεια, ορίστε την ιδιότητά του Items σε αυτόν τον τύπο:

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

    Εμφανίζεται μια προειδοποίηση ανάθεσης, αλλά δεν θα έχει καμία σημασία με τη μικρή ποσότητα δεδομένων σε αυτό το παράδειγμα.

    Ορισμός της ιδιότητας Items του Gallery2_1.

Με αυτές τις αλλαγές, οι χρήστες μπορούν να ξεκαθαρίσουν την επιλογή στο ComboBox1 για μια επαφή, εάν αυτό το άτομο δεν έχει κάνει κράτηση για ένα προϊόν. Οι επαφές που δεν έχουν κάνει κράτηση για ένα προϊόν εμφανίζονται στο Gallery2_1 όπου οι χρήστες μπορούν να αναθέσουν κάθε επαφή σε ένα προϊόν.

Επίδειξη των συναρτήσεων

Πολλοί προς πολλούς

Δημιουργία νέας σχέσης πολλών προς πολλούς

Το δείγμα δεδομένων δεν περιλαμβάνει μια σχέση πολλά προς πολλά, αλλά θα δημιουργήσετε μια σχέση μεταξύ του πίνακα Προϊόντα και του πίνακα Επαφές. Οι χρήστες μπορούν να συσχετίσουν κάθε προϊόν με περισσότερες από μία επαφές και κάθε επαφή σε περισσότερα από ένα προϊόντα.

  1. Από αυτή τη σελίδα, επιλέξτε Δεδομένα στην αριστερή γραμμή περιήγησης και, στη συνέχεια, επιλέξτε Πίνακες.

    Ανοίξτε τη λίστα πινάκων.

  2. Αλλάξτε το φίλτρο πίνακα ώστε να περιλαμβάνει όλους τους πίνακες.

    Ως προεπιλογή, τα δείγματα πινάκων δεν εμφανίζονται.

    Καταργήστε το φίλτρο πίνακα.

  3. Μετακινηθείτε με κύλιση προς τα κάτω, ανοίξτε τον πίνακα Προϊόν και επιλέξτε Σχέσεις.

  4. Επιλέξτε Προσθήκη σχέσης>Πολλοί προς πολλούς.

  5. Επιλέξτε τον πίνακα Επαφή για τη σχέση.

  6. Επιλέξτε Ολοκληρώθηκε>Αποθήκευση πίνακα.

Συσχετίστε και καταργήστε τη συσχέτιση επαφών με ένα ή περισσότερα προϊόντα

Θα δημιουργήσετε μια άλλη εφαρμογή που μοιάζει με εκείνη που δημιουργήσατε νωρίτερα σε αυτό το θέμα, αλλά η νέα εφαρμογή θα προσφέρει μια σχέση πολλών προς πολλούς. Κάθε επαφή θα έχει τη δυνατότητα να κάνει κράτηση πολλών προϊόντων αντί για ένα.

  1. Σε μια κενή εφαρμογή για tablet, δημιουργήστε το Gallery1 όπως περιγράφει η πρώτη διαδικασία αυτού του θέματος.

  2. Προσθέστε ένα άλλο κενό κάθετο στοιχείο ελέγχου Gallery, βεβαιωθείτε ότι ονομάζεται Gallery2 και, στη συνέχεια, μετακινήστε το στην επάνω δεξιά γωνία της οθόνης.

    Στη συνέχεια αυτού του θέμα, θα προσθέσετε ένα στοιχείο ελέγχου Combo box στην περιοχή Gallery2.

  3. Στη γραμμή τύπων, ορίστε την ιδιότητα Items του Gallery2 σε Gallery1.Selected.Contacts.

    Ρύθμιση παραμέτρων της ιδιότητας ContactsGallery - Items.

  4. Στην καρτέλα Ιδιότητες, ορίστε τη Διάταξη σε Εικόνα και τίτλος.

    Ρύθμιση παραμέτρων της ιδιότητας ContactsGallery - Διάταξη.

  5. Στο Gallery2, βεβαιωθείτε ότι το στοιχείο ελέγχου Label ονομάζεται Title2 και, στη συνέχεια, ορίστε την ιδιότητά του Text σε ThisItem.'Full Name'.

    Δεν θα εμφανίζεται κείμενο σε αυτό το στοιχείο ελέγχου, μέχρι να ολοκληρώσετε αυτήν τη διαδικασία και να αναθέσετε μια επαφή σε ένα προϊόν.

    Εμφάνιση ονόματος επαφής.

  6. Διαγράψτε το NextArrow2, εισαγάγετε ένα εικονίδιο Άκυρο και βεβαιωθείτε ότι ονομάζεται icon1.

  7. Ορίστε την ιδιότητα OnSelect του εικονιδίου Άκυρο σε αυτόν τον τύπο:

    Unrelate( Gallery1.Selected.Contacts, ThisItem )
    

    Ρύθμιση παραμέτρων εικονιδίου

  8. Στην καρτέλα Προβολή, επιλέξτε Προελεύσεις δεδομένων.

  9. Στο παράθυρο Δεδομένα, επιλέξτε Προσθήκη προέλευσης δεδομένων>Microsoft Dataverse>Επαφές>Σύνδεση.

  10. Στην περιοχή Gallery2, προσθέστε ένα στοιχείο ελέγχου Combo box, βεβαιωθείτε ότι ονομάζεται ComboBox1 και, στη συνέχεια, ορίστε την ιδιότητα Items στις Επαφές.

    Ρύθμιση παραμέτρων της ιδιότητας Items σύνθετου πλαισίου.

  11. Στην καρτέλα Ιδιότητες, ορίστε την επιλογή Να επιτρέπεται η απενεργοποίηση πολλαπλών επιλογών στο Off.

    Ρύθμιση παραμέτρων της ιδιότητας Layout σύνθετου πλαισίου.

  12. Εισαγάγετε ένα εικονίδιο Προσθήκη και ορίστε την ιδιότητά του OnSelect σε αυτόν τον τύπο:

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

    Ρύθμιση παραμέτρων εικονιδίου

Με αυτήν την εφαρμογή, οι χρήστες μπορούν πλέον να συσχετίζουν και να καταργούν τη συσχέτιση ενός συνόλου επαφών με κάθε προϊόν.

  • Για να προσθέσετε μια επαφή σε ένα προϊόν, επιλέξτε την επαφή στο σύνθετο πλαίσιο που βρίσκεται στο κάτω μέρος της οθόνης και, στη συνέχεια, επιλέξτε το εικονίδιο Προσθήκη.

  • Για να καταργήσετε μια επαφή από ένα προϊόν, επιλέξτε το εικονίδιο Άκυρο για αυτήν την επαφή.

    Σε αντίθεση με τη σχέση ενός προς πολλούς, η σχέση πολλών προς πολλούς δίνει στους χρήστες τη δυνατότητα να συσχετίσουν την ίδια επαφή με πολλά προϊόντα.

Επίδειξη των συναρτήσεων

Αντίστροφα: συσχετίστε και καταργήστε τη συσχέτιση με προϊόντα με πολλές επαφές

Οι σχέσεις πολλών προς πολλούς είναι συμμετρικές. Μπορείτε να επεκτείνετε το παράδειγμα για να προσθέσετε προϊόντα σε μια επαφή και, στη συνέχεια, να κάνετε εναλλαγή μεταξύ των δύο οθονών για να δείτε πώς η σχέση εμφανίζεται και από τις δύο κατευθύνσεις.

  1. Ορίστε την ιδιότητα OnVisible της Screen1 σε Ανανέωση (προϊόντα).

    Όταν ενημερώνετε μια σχέση ένα προς πολλά ή πολλά προς πολλά, ανανεώνεται μόνο τα δεδομένα του πρώτου πίνακα ορισμάτων της κλήσης Συσχέτιση ή Κατάργηση συσχέτισης. Η δεύτερη πρέπει να ανανεώνεται με μη αυτόματο τρόπο, εάν θέλετε να κάνετε εναλλαγή μεταξύ των οθονών αυτής της εφαρμογής.

    Ορισμός ιδιότητας OnVisible για συνάρτηση

  2. Διπλότυπο Screen1.

    Το διπλότυπο θα ονομαστεί Screen1_1 και θα αποτελέσει τη βάση για εξέταση των σχέσεων από την πλευρά επαφών.

    Διπλότυπο οθόνης.

  3. Για να δημιουργήσετε την αντίστροφη προβολή, αλλάξτε αυτούς τους τύπους στα στοιχεία ελέγχου του 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 )

    Το αποτέλεσμα θα είναι πολύ παρόμοιο με αυτό της προηγούμενης οθόνης, αλλά θα εμφανίζεται στη σχέση από την πλευρά Επαφές.

    Εμφάνιση σχέσης πολλών προς πολλά ξεκινώντας από τις επαφές.

  4. Εισαγάγετε ένα εικονίδιο Βέλη πάνω κάτω και ορίστε την ιδιότητα OnSelect σε Navigate( Screen1, None ). Κάντε το ίδιο πράγμα στο Screen1 με τον τύπο Navigate( Screen1, None ).

    Προσθήκη περιήγησης μεταξύ οθονών.

Με αυτήν τη νέα οθόνη, οι χρήστες μπορούν να προσθέσουν μια επαφή σε ένα προϊόν και, στη συνέχεια, να αναστρέψουν την προβολή των επαφών και να δουν το σχετικό προϊόν. Οι σχέσεις είναι συμμετρικές και κοινόχρηστες μεταξύ των δύο οθονών.

Επίδειξη σχέσης πολλών προς πολλούς και από τις δύο πλευρές.