Accéder aux données dans SQL Server
Ajouter une source de données
Accès direct :
Si vous choisissez l’option Démarrer avec les données lors de la création d’une application, la propriété Items de votre galerie a une formule Power Fx avec un nom de source de données qui pointe directement vers votre table de base de données.
Par exemple, si vous avez une table BOOKLENDING
, vous voyez la formule suivante :
Search([@'[dbo].[BOOKLENDING]'], SearchInput1.Text, author, author,book_name,category)
Vues et procédures stockées :
Un modèle courant d’accès aux données professionnelles consiste à utiliser des vues, puis des procédures stockées pour la création, la mise à jour et la suppression plutôt que d’autoriser un accès direct. Si vous souhaitez utiliser des vues ou des procédures stockées, vous devez modifier l’exemple de formule. De même, le formulaire de l’enregistrement n’utilise pas non plus l’approche directe intégrée de la formule SubmitForm()
.
Déclencheurs :
Un modèle de base de données consiste à utiliser des déclencheurs sur les tables. Si une table dispose d’un déclencheur, vous ne pouvez pas utiliser le modèle Submit()
de schéma direct pour la création, la mise à jour et la suppression. Submit()
a un conflit entre la gestion des déclencheurs SQL et le comportement Power Apps intégré, qui utilise le même paramètre de sortie.
Cependant, vous pouvez accéder directement à la table à des fins d’interrogation, mais pour traiter Create
, Update
ou Delete
, vous devez appeler une procédure stockée.
[!NOTE]
Le connecteur SQL Server, comme tous les connecteurs qui fonctionnent avec des données relationnelles, suppose que les tables ont une clé primaire. Une clé primaire est essentielle pour trouver des enregistrements spécifiques à mettre à jour. Si une table SQL Server n’a pas de clé primaire, les données sont traitées en lecture seule. Si vous disposez de droits d’accès et de modification sur la table SQL Server, envisagez d’ajouter une clé générée automatiquement.
Utiliser une vue
Une vue est une requête enregistrée qui s’affiche sous la forme d’une table de données unique.
Les vues s’affichent dans la liste des tables que vous pouvez sélectionner lorsque vous ajoutez une source de données. Les vues ne prennent en charge que les requêtes, pas les mises à jour. Vous devez utiliser une procédure stockée pour les mises à jour.
Si vous créez une table avec cette option Start with data
, vous obtenez des écrans et des formules qui affichent les enregistrements dans une galerie et un formulaire. Vous pouvez voir les formules et les fonctionnalités pour la création, la modification et la suppression. Toutefois, si vous utilisez une vue, vous ne voyez qu’un écran d’affichage pour la galerie et le formulaire.
Vous souhaiterez peut-être utiliser les écrans générés automatiquement depuis Start with data
pour les vues.
Pour cette option générée automatiquement :
- Choisissez
Start with data
avec une table de base. - Supprimez et remplacez la source de données de la table.
Example :
Par exemple, si vous avez une table BOOKLENDINGVIEW
et que vous l’ajoutez comme source de données pour Power Apps, la formule peut être aussi simple que :
BOOKLENDINGVIEW
Vous pouvez également remplacer d’autres formules de création, de mise à jour et de suppression par des appels de source de données de vue et de procédure stockée.
Utiliser les procédures stockées
Lorsque vous ajoutez une connexion SQL Server à votre application, vous pouvez ajouter des procédures stockées et les appeler directement dans Power Fx.
Note
Cette fonctionnalité fonctionne également avec des connexions implicites sécurisées.
Une fois que vous avez sélectionné une procédure stockée, un nœud enfant apparaît et vous pouvez désigner la procédure stockée comme Utilisation sécurisée pour les galeries et les tables.
Une procédure stockée est sécurisée si elle n’effectue aucune action qui pourrait être indésirable dans certains scénarios. Par exemple, si une procédure stockée a collecté tous les comptes d’une ville donnée, puis leur a envoyé un e-mail. Vous ne souhaitez peut-être pas toujours que des e-mails soient envoyés chaque fois que la procédure stockée est appelée. Par conséquent, la procédure stockée ne doit pas être marquée comme sécurisée.
Marquer une procédure stockée comme sécurisée uniquement si :
Il n’y a pas d’effets indésirables à appeler cette procédure à la demande.
Vous devriez être en mesure d’appeler la procédure plusieurs fois ou à chaque fois que le contrôle Power Apps est actualisé. Lorsqu’elle est utilisée avec une propriété Éléments d’une galerie ou d’une table, Power Apps appelle la procédure stockée chaque fois que le système détermine qu’une actualisation est nécessaire. Vous ne pouvez pas contrôler le moment où la procédure stockée est appelée.
Vous renvoyez une quantité modeste de données dans la procédure stockée.
Les appels à l’action, tels que les procédures stockées, n’ont pas de limite sur le nombre de lignes récupérées. Ils ne sont pas automatiquement paginés en incréments de 100 enregistrements comme les sources de données tabulaires telles que les tables ou les vues.
Si la procédure stockée renvoie trop de données (plusieurs milliers d’enregistrements), votre application risque de ralentir ou de planter. Pour des raisons de performances, importez moins de 2 000 enregistrements.
Si vous marquez une procédure stockée comme sécurisée, vous pouvez l’affecter en tant que propriété Items dans les galeries pour les tables à utiliser dans votre application.
Important
Le schéma des valeurs de retour de la procédure stockée doit être statique, de sorte que les valeurs ne changent pas d’un appel à l’autre. Par exemple, si une procédure stockée renvoie deux tables, elle renvoie toujours deux tables. Vous pouvez utiliser des résultats avec ou sans type.
La structure des résultats doit également être statique. Par exemple, si le schéma des résultats est dynamique, les résultats sont sans type et vous devez fournir un type pour les utiliser dans Power Apps. Pour plus d’informations, consultez Résultats sans type.
Espace de noms SQL ajouté au nom de la procédure stockée
Le nom de l’espace de noms SQL Server, dans lequel vous stockez la procédure, est ajouté au nom de la procédure stockée. Par exemple, toutes les procédures stockées dans l’espace DBO SQL Server affichent dbo au début du nom.
Par exemple, lorsque vous ajoutez une procédure stockée, vous pouvez voir plusieurs sources de données dans votre projet.
Appel d’une procédure stockée
Pour utiliser une procédure stockée dans Power Apps, faites précéder le nom de la procédure stockée du nom du connecteur qui lui est associé, suivi du nom de la procédure stockée, par exemple Paruntimedb.dbonewlibrarybook
.
Note
Lorsque Power Apps intègre la procédure stockée, elle concatène l’espace de noms et le nom de la procédure de sorte que dbo.newlibrarybook
devient dbonewlibrarybook
.
Les arguments sont transmis sous forme d’enregistrement Power Apps avec des paires de valeurs nommées :
<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >})
Astuce
N’oubliez pas de convertir les valeurs si nécessaire lorsque vous les transmettez à votre procédure stockée, puisque vous lisez à partir d’une valeur de texte dans Power Apps. Par exemple, si vous mettez à jour un nombre entier dans SQL, vous devez convertir le texte du champ à l’aide de Value()
.
Voici un exemple de ce à quoi peuvent ressembler les procédures stockées lors de leur affectation à une propriété OnSelect
.
Variables et toutes les procédures stockées
Vous pouvez accéder à une procédure stockée pour la propriété Items d’une galerie après l’avoir déclarée comme sûre pour l’interface utilisateur. Référencez le nom de la source de données et le nom de la procédure stockée suivi de ResultSets
. Vous pouvez accéder à plusieurs résultats en référençant l’ensemble de tables renvoyées, telles que Table 1, Table 2, etc.
Par exemple, une procédure stockée accessible à partir de la table Paruntimedb
avec le nom dbo.spo_show_all_library_books()
ressemble à :
Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1
Cette requête remplit la galerie avec des enregistrements. Cependant, les procédures stockées sont des comportementsd’action sur le modèle tabulaire. Refresh()
ne fonctionne qu’avec des sources de données tabulaires et ne peut pas être utilisé avec des procédures stockées. Vous devez actualiser la galerie lorsqu’un enregistrement est créé, mis à jour ou supprimé.
Note
Lorsque vous utilisez un Submit()
dans un formulaire pour une source de données tabulaire, il appelle Refresh()
en arrière-plan et met à jour la galerie.
Utiliser une variable pour remplir et actualiser la galerie
Utilisez une variable dans la propriété OnVisible
de l’écran et définissez la procédure stockée sur la variable.
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Vous pouvez ensuite définir la propriété Items
de la galerie sur le nom de la variable.
SP_Books
Après avoir créé, mis à jour ou supprimé un enregistrement avec un appel à la procédure stockée, définissez à nouveau la variable pour mettre à jour la galerie.
Paruntimedb.dbonewlibrarybook({
book_name: DataCardValue3_2.Text,
author: DataCardValue1_2.Text,
...
});
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Utiliser Power Automate pour appeler les procédures stockées
Power Automate gère le mieux les actions asynchrones. Vous pouvez appeler des procédures stockées dans le cadre d’une série d’appels dans un processus d’entreprise.
Pour appeler Power Automate suivi d’un appel à des procédures stockées, créez des variables d’entrée dans le cadre de votre flux.
Transmettez ensuite vos variables d’entrée à l’appel de votre procédure stockée.
Ajoutez ce flux Power Automate à votre application et appelez-le. Les arguments facultatifs sont transmis sous forme d’enregistrement "{ ... }”. L’exemple suivant contient tous les arguments facultatifs.