Condividi tramite


Accedere ai dati in SQL Server

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 si desidera utilizzare viste o stored procedure, è necessario 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.

Aggiungi un'origine dati

Utilizzare una vista

Una vista è una query salvata che viene visualizzata come un'unica tabella di dati.

Le visualizzazioni vengono visualizzate nell'elenco delle tabelle a cui puoi aggiungere Seleziona quando aggiungi 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 si utilizza una visualizzazione, verrà visualizzata solo una schermata per la galleria e il modulo.

Potresti aver bisogno delle schermate generate automaticamente da Start with data per le visualizzazioni.

Per questa opzione generata automaticamente:

  1. Scegli Start with data con una tabella di base.
  2. Elimina e sostituisci la tabella origine dati.

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 vista 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.

Screenshot che mostra gli elenchi di tabelle, viste e stored procedure disponibili per l'aggiunta all'app.

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:

  1. Non ci sono effetti collaterali nell'eseguire 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.

  2. 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 gallerie per le tabelle da utilizzare nella tua 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.

SQL namespace anteposto al nome della stored procedure

Il nome dello spazio dei nomi del server SQL, 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.

Screenshot che mostra le origini dati SQL.

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

Ricordatevi di convertire i valori, se necessario, quando li passate alla stored procedure, poiché state 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.

Screenshot che mostra come richiamare direttamente le procedure archiviate utilizzando coppie chiave/valore e notazione con punto.

Variabili e tutte le procedure archiviate

Puoi accedere a una stored procedure per la proprietà Items di una raccolta dopo averla dichiarata sicura per l'interfaccia utente. Fare riferimento a nome dell'origine dati e al nome della stored procedure seguito 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 galleria 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 procedure archiviate. È necessario aggiornare la galleria 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.

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 galleria 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.

Screenshot che mostra l'input di Power Automate.

Quindi passa le variabili di input nella chiamata della stored procedure.

Eseguire una stored procedure

Aggiungi questo Power Automate flusso alla tua app e chiamalo. Gli argomenti facoltativi vengono passati come record "{ … }”. L'esempio seguente ha tutti gli argomenti facoltativi.

Flusso di Power Automate