Accedere ai dati in SQL Server
Aggiungi un'origine dati
Accesso diretto:
Se scegli l'opzione Inizia con i dati durante la creazione di un'app, la proprietà Elementi della tua raccolta ha una formula Power Fx con un nome di origine dati che punta direttamente alla tabella del database.
Ad esempio, se hai una tabella BOOKLENDING
, vedrai la seguente formula:
Search([@'[dbo].[BOOKLENDING]'], SearchInput1.Text, author, author,book_name,category)
Visualizzazioni e stored procedure:
Un modello comune di accesso a dati professionali è quello di utilizzare visualizzazioni e stored procedure per creare, aggiornare ed eliminare anziché consentire l'accesso diretto. Se desideri utilizzare viste o stored procedure, devi modificare la formula di esempio. Allo stesso modo, il modulo per il record non utilizza neanche l'approccio diretto incorporato della formula. SubmitForm()
.
Trigger:
Un modello di database consiste nell'utilizzare trigger nelle tabelle. Se una tabella include un trigger, non puoi utilizzare il modello diretto Submit()
per creare, aggiornare ed eliminare. Submit()
presenta un conflitto tra la gestione dei trigger SQL e il comportamento Power Apps integrato, che utilizza lo stesso parametro di output.
Tuttavia, puoi accedere direttamente alla tabella per scopi di query, ma per gestire Create
, Update
o Delete
devi chiamare una stored procedure.
[!NOTE]
Il connettore SQL Server, come tutti i connettori che utilizzano dati relazionali, presuppone che le tabelle dispongano di una chiave primaria. Una chiave primaria è fondamentale per trovare record specifici da aggiornare. Se una tabella SQL Server non dispone di una chiave primaria, i dati verranno considerati di sola lettura. Se si dispone dei diritti di accesso e modifica per la tabella SQL Server, è consigliabile aggiungere una chiave generata automaticamente.
Utilizzare una vista
Una vista è una query salvata che viene visualizzata come un'unica tabella di dati.
Le viste vengono visualizzate nell'elenco delle tabelle che è possibile selezionare quando si aggiunge un'origine dati. Le visualizzazioni supportano solo le query, non gli aggiornamenti. Per gli aggiornamenti devi utilizzare una stored procedure.
Se si crea una tabella con l'opzione Start with data
, si ottengono schermate e formule che visualizzano i record in una galleria e in un modulo. Puoi vedere formule e funzionalità per la creazione, la modifica e l'eliminazione. Tuttavia, se utilizzi una visualizzazione, verrà visualizzata solo una schermata per la raccolta e il modulo.
Potresti aver bisogno delle schermate generate automaticamente da Start with data
per le visualizzazioni.
Per questa opzione generata automaticamente:
- Scegli
Start with data
con una tabella di base. - Elimina e sostituisci l'origine dati della tabella.
Esempio:
Ad esempio, se avevi una tabella BOOKLENDINGVIEW
e l'hai aggiunta come origine dati per Power Apps, la formula potrebbe essere semplice:
BOOKLENDINGVIEW
È inoltre possibile sostituire altre formule di creazione, aggiornamento ed eliminazione con una visualizzazione dell'origine dati e chiamate a stored procedure.
Usare stored procedure
Quando aggiungi una connessione SQL Server alla tua app, puoi aggiungere stored procedure e richiamarle direttamente in Power Fx.
Nota
Questa funzionalità funziona anche con connessioni implicite sicure.
Una volta selezionata una stored procedure, viene visualizzato un nodo figlio ed è possibile designare la stored procedure come Sicuro da utilizzare per raccolte e tabelle.
Una stored procedure è sicura se non esegue alcuna azione che potrebbe essere indesiderata in determinati scenari. Ad esempio, se una stored procedure raccogliesse tutti gli account di una determinata città e poi inviasse loro un'e-mail. Potresti non voler sempre inviare e-mail ogni volta che viene chiamata la stored procedure. Pertanto, la stored procedure non dovrebbe essere contrassegnata come sicura.
Contrassegna una stored procedure come sicura solo se:
Non ci sono effetti collaterali nel richiamare questa procedura su richiesta.
Dovresti essere in grado di chiamare la procedura più volte o ogni volta che Power Apps aggiorna il controllo. Se utilizzato con una proprietà Items di una raccolta o tabella, Power Apps chiama la stored procedure ogni volta che il sistema determina che è necessario un aggiornamento. Non è possibile controllare quando viene chiamata la stored procedure.
Nella stored procedure viene restituita una modesta quantità di dati.
Le chiamate di azioni, come le stored procedure, non hanno limiti nel numero di righe recuperate. Non vengono automaticamente impaginati con incrementi di 100 record come le origini dati tabulari come tabelle o visualizzazioni.
Se la stored procedure restituisce troppi dati (migliaia di record), l'app potrebbe rallentare o bloccarsi. Per motivi di prestazioni, recupera meno di 2.000 record.
Se selezioni una stored procedure come sicura, puoi assegnarla come proprietà Items nelle raccolte per le tabelle da utilizzare nell'app.
Importante
Lo schema dei valori restituiti dalla stored procedure dovrebbe essere statico, in modo che i valori non cambino da una chiamata all'altra. Ad esempio, se una stored procedure restituisce due tabelle, allora sempre restituisce due tabelle. È possibile lavorare sia con risultati tipizzati che non tipizzati.
Anche la struttura dei risultati deve essere statica. Ad esempio, se lo schema dei risultati è dinamico, i risultati non sono tipizzati e devi specificare un tipo per poterli utilizzare in Power Apps. Per ulteriori informazioni, vedi Risultati tipizzati.
Spazio dei nomi SQL anteposto al nome della stored procedure
Il nome dello spazio dei nomi di SQL Server in cui viene archiviata la procedura viene anteposto al nome della stored procedure. Ad esempio, tutte le stored procedure nello spazio dei nomi SQL Server 'DBO' hanno 'dbo' all'inizio del nome.
Ad esempio, quando aggiungi una stored procedure, potresti vedere più di un'origine dati nel tuo progetto.
Chiamata di una stored procedure
Per utilizzare una stored procedure in Power Apps, anteponi al nome della stored procedure il nome del connettore ad essa associato, ad esempio Paruntimedb.dbonewlibrarybook
.
Nota
Quando Power Apps introduce la stored procedure, concatena lo spazio dei nomi e il nome della procedura in modo che dbo.newlibrarybook
diventi dbonewlibrarybook
.
Gli argomenti vengono passati come record Power Apps con coppie di valori denominati:
<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >})
Suggerimento
Ricordati di convertire i valori, se necessario, quando li passi alla stored procedure, poiché stai leggendo un valore di testo in Power Apps. Ad esempio, se aggiorni un intero in SQL, devi convertire il testo nel campo utilizzando Value()
.
Di seguito è riportato un esempio di come potrebbero apparire le stored procedure quando assegnate a una proprietà OnSelect
.
Variabili e tutte le stored procedure
Puoi accedere a una stored procedure per la proprietà Items di una raccolta dopo averla dichiarata sicura per l'interfaccia utente. Fai riferimento al nome dell'origine dati e al nome della stored procedure seguiti da ResultSets
. È possibile accedere a più risultati facendo riferimento all'insieme di tabelle restituite, ad esempio Tabella 1, Tabella 2 e così via.
Ad esempio, una stored procedure a cui si accede dalla tabella Paruntimedb
con il nome dbo.spo_show_all_library_books()
si presenta come segue:
Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1
Questa query popola la raccolta con i record. Tuttavia, le stored procedure sono comportamenti azione nel modello tabulare. Refresh()
funziona solo con origini dati tabellari e non può essere utilizzato con stored procedure. È necessario aggiornare la raccolta quando si crea, si aggiorna o si elimina un record.
Nota
Quando utilizzi Submit()
in un modulo per un'origine dati tabulare, in pratica chiama Refresh()
in background e aggiorna la raccolta.
Utilizzare una variabile per popolare e aggiornare la raccolta
Utilizza una variabile nella proprietà OnVisible
per la schermata e imposta la stored procedure sulla variabile.
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
È quindi possibile impostare la proprietà Items
della raccolta sul nome della variabile.
SP_Books
Dopo aver creato, aggiornato o eliminato un record con una chiamata alla stored procedure, imposta nuovamente la variabile per aggiornare la raccolta.
Paruntimedb.dbonewlibrarybook({
book_name: DataCardValue3_2.Text,
author: DataCardValue1_2.Text,
...
});
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Utilizzare Power Automate per chiamare stored procedure
Power Automate gestisce al meglio le azioni asincrone. È possibile richiamare le stored procedure come parte di una serie di chiamate in un processo aziendale.
Per chiamare Power Automate seguito da una chiamata alle stored procedure, crea variabili di input come parte del flusso.
Quindi passa le variabili di input nella chiamata della stored procedure.
Aggiungi questo flusso Power Automate all'app e richiamalo. Gli argomenti facoltativi vengono passati come record "{ … }”. L'esempio seguente ha tutti gli argomenti facoltativi.