Πρόσβαση σε δεδομένα στον SQL Server
Προσθήκη προέλευσης δεδομένων
Άμεση πρόσβαση:
Εάν επιλέξτε την Έναρξη με δεδομένα κατά τη δημιουργία μιας εφαρμογής, η ιδιότητα Στοιχεία της συλλογής σας έχει έναν τύπο Power Fx με ένα όνομα προέλευσης δεδομένων που οδηγεί απευθείας στον πίνακα της βάσης δεδομένων.
Για παράδειγμα, εάν έχετε έναν πίνακα BOOKLENDING
, μπορείτε να δείτε τον ακόλουθο τύπο:
Search([@'[dbo].[BOOKLENDING]'], SearchInput1.Text, author, author,book_name,category)
Προβολές και αποθηκευμένες διαδικασίες:
Ένα συνηθισμένο επαγγελματικό μοτίβο πρόσβασης δεδομένων είναι η χρήση προβολών και, στη συνέχεια, αποθηκευμένες διαδικασίες για δημιουργία, ενημέρωση και διαγραφή αντί να επιτρέψετε άμεση πρόσβαση. Εάν θέλετε να χρησιμοποιήσετε προβολές ή αποθηκευμένες διαδικασίες, πρέπει να αλλάξετε το παράδειγμα τύπου. Ομοίως, η φόρμα για την καρτέλα δεν χρησιμοποιεί ούτε την ενσωματωμένη άμεση προσέγγιση του τύπου SubmitForm()
.
Εναύσματα:
Ένα μοτίβο βάσης δεδομένων είναι η χρήση εναυσμάτων σε πίνακες. Εάν ένας πίνακας έχει έναυσμα, τότε δεν μπορείτε να χρησιμοποιήσετε το άμεσο μοτίβο Submit()
για δημιουργία, ενημέρωση και διαγραφή. Το Submit()
έρχεται σε διένεξη μεταξύ του χειρισμού των εναυσμάτων SQL και της ενσωματωμένης συμπεριφοράς του Power Apps, η οποία χρησιμοποιεί την ίδια παράμετρο εξόδου.
Μπορείτε, ωστόσο, να αποκτήσετε απευθείας πρόσβαση στον πίνακα για σκοπούς ερωτήματος, αλλά για να χειριστείτε τα Create
, Update
ή Delete
πρέπει να καλέσετε μια αποθηκευμένη διαδικασία.
[!ΣΗΜΕΙΩΣΗ]
Η σύνδεση SQL Server, όπως όλες οι συνδέσεις που λειτουργούν με σχεσιακά δεδομένα, προϋποθέτει ότι οι πίνακες έχουν πρωτεύον κλειδί. Ένα πρωτεύον κλειδί είναι κρίσιμο για την εύρεση συγκεκριμένων εγγραφών προς ενημέρωση. Εάν ένας πίνακας SQL Server δεν έχει πρωτεύον κλειδί, τότε τα δεδομένα θα αντιμετωπίζονται ως μόνο για ανάγνωση. Εάν έχετε δικαιώματα πρόσβασης και επεξεργασίας στον πίνακα SQL Server, εξετάστε το ενδεχόμενο να προσθέσετε ένα κλειδί που δημιουργείται αυτόματα.
Χρήση προβολής
Μια προβολή είναι ένα αποθηκευμένο ερώτημα που εμφανίζεται ως ένας μεμονωμένος πίνακας δεδομένων.
Οι προβολές εμφανίζονται στη λίστα πινάκων που μπορείτε να επιλέξετε όταν προσθέτετε μια προέλευση δεδομένων. Οι προβολές υποστηρίζουν μόνο ερωτήματα—όχι ενημερώσεις. Πρέπει να χρησιμοποιήσετε μια αποθηκευμένη διαδικασία για ενημερώσεις.
Εάν δημιουργήσετε έναν πίνακα με αυτήν την επιλογή Start with data
, θα λάβετε οθόνες και τύπους που εμφανίζουν καρτέλες σε συλλογή και φόρμα. Μπορείτε να δείτε τύπους και λειτουργίες για δημιουργία, επεξεργασία και διαγραφή. Ωστόσο, εάν χρησιμοποιείτε μια προβολή, βλέπετε μόνο μια οθόνη εμφάνισης για τη συλλογή και τη φόρμα.
Μπορεί να θέλετε τις οθόνες που δημιουργούνται αυτόματα από το Start with data
για προβολές.
Για αυτήν την επιλογή αυτόματης δημιουργίας:
- Επιλέξτε
Start with data
με έναν βασικό πίνακα. - Διαγράψτε και αντικαταστήστε την προέλευση δεδομένων πίνακα.
Παράδειγμα:
Για παράδειγμα, εάν είχατε έναν πίνακα BOOKLENDINGVIEW
και τον προσθέσατε ως προέλευση δεδομένων για το Power Apps, ο τύπος θα μπορούσε να είναι τόσο απλός όσο:
BOOKLENDINGVIEW
Μπορείτε επίσης να αντικαταστήσετε άλλους τύπους δημιουργίας, ενημέρωσης και διαγραφής με μια προέλευση δεδομένων προβολής και αποθηκευμένες κλήσεις διαδικασίας.
Χρήση αποθηκευμένων διαδικασιών
Όταν προσθέτετε μια σύνδεση SQL Server στην εφαρμογή σας, μπορείτε να προσθέσετε αποθηκευμένες διαδικασίες και να τις καλέσετε απευθείας στο Power Fx.
Σημείωμα
Αυτή η δυνατότητα λειτουργεί επίσης με ασφαλείς έμμεσες συνδέσεις.
Αφού επιλέξετε μια αποθηκευμένη διαδικασία, εμφανίζεται ένας θυγατρικός κόμβος και μπορείτε να ορίσετε την αποθηκευμένη διαδικασία ως Ασφαλή για χρήση για συλλογές και πίνακες.
Μια αποθηκευμένη διαδικασία είναι ασφαλής εάν δεν εκτελεί καμία ενέργεια που μπορεί να είναι ανεπιθύμητη σε ορισμένα σενάρια. Για παράδειγμα, εάν μια αποθηκευμένη διαδικασία συγκέντρωνε όλους τους λογαριασμούς από μια δεδομένη πόλη, έπειτα τους έστελνε ένα μήνυμα ηλεκτρονικού ταχυδρομείου. Μπορεί να μην θέλετε πάντα να αποστέλλονται μηνύματα ηλεκτρονικού ταχυδρομείου κάθε φορά που καλείται η αποθηκευμένη διαδικασία. Επομένως, η αποθηκευμένη διαδικασία δεν πρέπει να επισημαίνεται ως ασφαλής.
Ελέγξτε μια αποθηκευμένη διαδικασία ως ασφαλή μόνο εάν:
Δεν υπάρχουν παρενέργειες στην κλήση αυτής της διαδικασίας κατόπιν αιτήματος.
Θα πρέπει να μπορείτε να καλέσετε τη διαδικασία πολλές φορές ή όποτε το Power Apps ανανεώνει το στοιχείο ελέγχου. Όταν χρησιμοποιείται με μια ιδιότητα Στοιχεία μιας συλλογής ή ενός πίνακα, το Power Apps καλεί την αποθηκευμένη διαδικασία όποτε το σύστημα καθορίζει μια ανανέωση που απαιτείται. Δεν μπορείτε να ελέγξετε πότε καλείται η αποθηκευμένη διαδικασία.
Μπορείτε να επιστρέψετε μια μικρή ποσότητα δεδομένων στην αποθηκευμένη διαδικασία.
Οι κλήσεις ενέργειας, όπως οι αποθηκευμένες διαδικασίες, δεν έχουν όριο στον αριθμό των γραμμών που ανακτώνται. Δεν εμφανίζονται αυτόματα σε 100 προσαυξήσεις καρτελών, όπως προελεύσεις δεδομένων σε πίνακα, όπως πίνακες ή προβολές.
Εάν η αποθηκευμένη διαδικασία επιστρέψει πάρα πολλά δεδομένα (πολλές χιλιάδες καρτέλες), τότε η εφαρμογή σας ενδέχεται να επιβραδυνθεί ή να παρουσιάσει σφάλμα. Για λόγους επιδόσεων, φέρτε λιγότερες από 2.000 καρτέλες.
Εάν ελέγξετε μια αποθηκευμένη διαδικασία ως ασφαλή, μπορείτε να αντιστοιχίσετε την αποθηκευμένη διαδικασία ως ιδιότητα Στοιχεία σε συλλογές για χρήση από πίνακες στην εφαρμογή σας.
Σημαντικό
Το σχήμα των τιμών επιστροφής της αποθηκευμένης διαδικασίας πρέπει να είναι στατικό, ώστε οι τιμές να μην αλλάζουν από κλήση σε κλήση. Για παράδειγμα, εάν μια αποθηκευμένη διαδικασία επιστρέφει δύο πίνακες, τότε επιστρέφει πάντα δύο πίνακες. Μπορείτε να εργαστείτε είτε με πληκτρολογημένα είτε με μη πληκτρολογημένα αποτελέσματα.
Η δομή των αποτελεσμάτων πρέπει επίσης να είναι στατική. Για παράδειγμα, εάν το σχήμα των αποτελεσμάτων είναι δυναμικό, τότε τα αποτελέσματα δεν πληκτρολογούνται και πρέπει να δώσετε έναν τύπο για να τα χρησιμοποιήσετε στο Power Apps. Για περισσότερες πληροφορίες, συμβουλευτείτε Μη πληκτρολογημένα αποτελέσματα.
Ο χώρος ονομάτων SQL προηγείται στο όνομα της αποθηκευμένης διαδικασίας
Το όνομα χώρου ονομάτων του SQL Server, όπου αποθηκεύετε τη διαδικασία, προηγείται του ονόματος της αποθηκευμένης διαδικασίας. Για παράδειγμα, όλες οι αποθηκευμένες διαδικασίες στον χώρο ονομάτων του SQL Server 'DBO' έχουν 'dbo'στην αρχή του ονόματος.
Για παράδειγμα, όταν προσθέτετε μια αποθηκευμένη διαδικασία, ενδέχεται να δείτε περισσότερες από μία προελεύσεις δεδομένων στο έργο σας.
Κλήση αποθηκευμένης διαδικασίας
Για να χρησιμοποιήσετε μια αποθηκευμένη διαδικασία στο Power Apps, θέστε ως πρόθεμα το όνομα της αποθηκευμένης διαδικασίας με το όνομα της σύνδεσης που σχετίζεται με αυτήν, ακολουθούμενο από το όνομα της αποθηκευμένης διαδικασίας, όπως Paruntimedb.dbonewlibrarybook
.
Σημείωμα
Όταν το Power Apps εισάγει την αποθηκευμένη διαδικασία, συνενώνει τον χώρο ονομάτων και το όνομα της διαδικασίας έτσι ώστε το dbo.newlibrarybook
να γίνει dbonewlibrarybook
.
Τα ορίσματα μεταβιβάζονται ως καρτέλα του Power Apps με κατονομαζόμενα ζεύγη τιμών:
<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >})
Φιλοδώρημα
Θυμηθείτε να μετατρέψετε τιμές, εάν χρειάζεται, καθώς τις μεταβιβάζετε στην αποθηκευμένη διαδικασία, καθώς διαβάζετε από μια τιμή κειμένου στο Power Apps. Για παράδειγμα, εάν ενημερώνετε έναν ακέραιο στο SQL πρέπει να μετατρέψετε το κείμενο στο πεδίο χρησιμοποιώντας το Value()
.
Ακολουθεί ένα παράδειγμα του πώς θα μπορούσαν να μοιάζουν οι αποθηκευμένες διαδικασίες κατά την εκχώρησή τους σε μια ιδιότητα OnSelect
.
Μεταβλητές και όλες οι αποθηκευμένες διαδικασίες
Μπορείτε να αποκτήσετε πρόσβαση σε μια αποθηκευμένη διαδικασία για την ιδιότητα Στοιχεία μιας συλλογής αφού τη δηλώσετε ασφαλή για το περιβάλλον εργασίας χρήστη. Αναφέρετε το όνομα της προέλευσης δεδομένων και το όνομα της αποθηκευμένης διαδικασίας που ακολουθείται από το ResultSets
. Μπορείτε να έχετε πρόσβαση σε πολλαπλά αποτελέσματα κάνοντας αναφορά στο σύνολο των πινάκων που επιστρέφονται, όπως Πίνακας 1, Πίνακας 2 κλπ.
Για παράδειγμα, μια αποθηκευμένη διαδικασία στην οποία έχετε πρόσβαση από τον πίνακα Paruntimedb
με το όνομα dbo.spo_show_all_library_books()
μοιάζει με:
Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1
Αυτό το ερώτημα συμπληρώνει τη συλλογή με καρτέλες. Ωστόσο, οι αποθηκευμένες διαδικασίες είναι συμπεριφορές ενεργειών στο μοντέλο σε μορφή πίνακα. Το Refresh()
λειτουργεί μόνο με προελεύσεις δεδομένων σε μορφή πίνακα και δεν μπορεί να χρησιμοποιηθεί με αποθηκευμένες διαδικασίες. Πρέπει να ανανεώσετε τη συλλογή κατά τη δημιουργία, ενημέρωση ή διαγραφή μιας καρτέλας.
Σημείωμα
Όταν χρησιμοποιείτε ένα Submit()
σε μια φόρμα για ένα αρχείο προέλευσης δεδομένων σε μορφή πίνακα, καλεί Refresh()
αποτελεσματικά κάτω από την επιφάνεια και ενημερώνει τη συλλογή.
Χρήση μεταβλητής για συμπλήρωση και ανανέωση της συλλογής
Χρησιμοποιήστε μια μεταβλητή στην ιδιότητα OnVisible
για την οθόνη και ορίστε την αποθηκευμένη διαδικασία στη μεταβλητή.
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Μπορείτε έπειτα να ορίσετε την ιδιότητα Items
της συλλογής στο όνομα της μεταβλητής.
SP_Books
Αφού δημιουργήσετε, ενημερώσετε ή διαγράψετε μια καρτέλα με μια κλήση στην αποθηκευμένη διαδικασία, ορίστε ξανά τη μεταβλητή για να ενημερώσετε τη συλλογή.
Paruntimedb.dbonewlibrarybook({
book_name: DataCardValue3_2.Text,
author: DataCardValue1_2.Text,
...
});
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Χρήση του Power Automate για κλήση αποθηκευμένων διαδικασιών
Το Power Automate χειρίζεται καλύτερα τις ασύγχρονες ενέργειες. Μπορείτε να καλέσετε αποθηκευμένες διαδικασίες ως μέρος μιας σειράς κλήσεων σε μια επιχειρηματική διαδικασία.
Για να καλέσετε το Power Automate ακολουθούμενο από μια κλήση σε αποθηκευμένες διαδικασίες, δημιουργήστε μεταβλητές εισόδου ως μέρος της ροής σας.
Στη συνέχεια, περάστε τις μεταβλητές εισόδου σας στην κλήση της αποθηκευμένης διαδικασίας σας.
Προσθέστε αυτήν τη ροή του Power Automate στην εφαρμογή σας και καλέστε την. Τα προαιρετικά ορίσματα περνούν ως καρτέλα "{ ... }”. Το παρακάτω παράδειγμα έχει όλα τα προαιρετικά ορίσματα.