Få adgang til data i SQL Server
Tilføj en datakilde
Direkte adgang:
Hvis du vælger indstillingen Start med data, når du opretter en app, indeholder egenskaben Items for galleriet en Power Fx-formel med et datakildenavn, der peger direkte på databasetabellen.
Hvis du f.eks. har en BOOKLENDING
-tabel, kan du se følgende formel:
Search([@'[dbo].[BOOKLENDING]'], SearchInput1.Text, author, author,book_name,category)
Visninger og gemte procedurer:
Et almindeligt professionelt dataadgangsmønster er at bruge visninger og derefter gemte procedurer til oprettelse, opdatering og sletning i stedet for at tillade direkte adgang. Hvis du vil bruge visninger eller gemte procedurer, skal du ændre eksempelformlen. På samme måde bruger formularen for posten heller ikke den indbyggede direkte tilgang til SubmitForm()
-formlen.
Udløsere:
Ét databasemønster er at bruge udløsere på tabeller. Hvis en tabel har en udløser, kan du ikke bruge det direkte mønster Submit()
til oprettelse, opdatering og sletning. Submit()
har en konflikt mellem håndteringen af SQL-udløsere, og den indbyggede Power Apps-funktionsmåde, der bruger den samme outputparameter.
Du kan dog få direkte adgang til tabellen til forespørgselsformål, men hvis du vil håndtere Create
, Update
eller Delete
, du skal kalde en gemt procedure.
[Bemærk!]
Connectoren SQL Server antager ligesom alle de connectorer, der arbejder med relationsdata, at tabeller har en primær nøgle. En primær nøgle er afgørende for at finde bestemte poster, der skal opdateres. Hvis en SQL Server-tabel ikke har en primær nøgle, behandles dataene som skrivebeskyttede. Hvis du har adgangs- og redigeringsrettigheder til SQL Server-tabellen, kan du overveje at tilføje en automatisk genereret nøgle.
Bruge en visning
En visning er en gemt forespørgsel, der vises som en enkelt tabel med data.
Visninger vises på listen over tabeller, du kan vælge, når du tilføjer en datakilde. Visninger understøtter kun forespørgsler – ikke opdateringer. Du skal bruge en gemt procedure til opdateringer.
Hvis du opretter en tabel med indstillingen Start with data
, får du skærmbilleder og formler, der viser poster i et galleri og en formular. Du kan se formler og funktioner til oprettelse, redigering og sletning. Men hvis du bruger en visning, kan du kun se en skærm for galleriet og formularen.
Du vil måske have de automatisk genererede skærmbilleder fra Start with data
til visninger.
For denne automatisk genererede indstilling:
- Vælg
Start with data
med en grundlæggende tabel. - Slet og erstat tabeldatakilden.
Eksempel:
Hvis du f.eks. har en BOOKLENDINGVIEW
-tabel og tilføjer den som datakilde for Power Apps, kan formlen være så enkel som:
BOOKLENDINGVIEW
Du kan også erstatte andre formler til oprettelse, opdatering og sletning med en visningsdatakilde og lagrede procedurekald.
Brug gemte procedurer
Når du føjer en SQL Server-forbindelse til din app, kan du tilføje gemte procedurer og kalde dem direkte i Power Fx.
Bemærk
Denne funktion fungerer også sammen med sikre implicitte forbindelser.
Når du har valgt en lagret procedure, vises der en underordnet node, og du kan angive den lagrede procedure som Sikker at bruge til gallerier og tabeller.
En gemt procedure er sikker, hvis den ikke har nogen handling, den udfører, som kan være uønsket i visse scenarier. Hvis for eksempel en gemt procedure indsamler alle konti fra en given by og derefter sender dem en mail. Du ønsker måske ikke altid, at der sendes mails, hver gang den gemte procedure kaldes. Derfor bør den gemte procedure ikke markeres som sikker.
Kontrollér kun, at en gemt procedure er sikker, hvis:
Der er ingen bivirkninger ved at kalde denne procedure efter behov.
Du bør kunne kalde proceduren flere gange eller hver gang, Power Apps-kontrolelementet opdateres. Når den bruges sammen med egenskaben Items for et galleri eller en tabel, kalder Power Apps den lagrede procedure, når systemet bestemmer, at det er nødvendigt at opdatere systemet. Du kan ikke styre, hvornår den lagrede procedure kaldes.
Du returnerer en beskeden mængde data i den lagrede procedure.
Handlingsopkald, f.eks. gemte procedurer, har ikke en grænse for antallet af hentede rækker. De sideinddeles ikke automatisk i trin på 100 poster ligesom tabel- eller visningsdatakilder.
Hvis den lagrede procedure returnerer for mange data (mange tusinde poster), kan appen blive langsommere eller gå ned. Af hensyn til ydeevnen skal du hente mindre end 2.000 poster.
Hvis du markerer en gemt procedure som sikker, kan du tildele den gemte procedure som en egenskab af typen Items i gallerier for tabeller, der skal bruges i appen.
Vigtigt!
Skemaet for returværdierne for den gemte procedure skal være statisk, så værdierne ikke ændres fra opkald til opkald. Hvis en gemt procedure f.eks. returnerer to tabeller, returnerer den altid to tabeller. Du kan arbejde med enten resultater med type eller uden type.
Strukturen af resultaterne skal også være statisk. Hvis skemaet for resultaterne f.eks. er dynamisk, er resultaterne uden type, og du skal angive en type for at kunne bruge dem i Power Apps. Du kan få flere oplysninger under Resultater uden type.
SQL-navneområde foran navnet på den lagrede procedure
Navnet på SQL Server-navneområdet, hvor du gemmer proceduren, sættes foran navnet på den lagrede procedure. Alle gemte procedurer i SQL Server-navneområdet 'DBO' har f.eks. 'dbo' i starten af navnet.
Når du f.eks. tilføjer en gemt procedure, kan du muligvis se mere end én datakilde i projektet.
Kalde en gemt procedure
Hvis du vil bruge en gemt procedure i Power Apps, skal du foranstille navnet på den lagrede procedure med navnet på den tilknyttede connector efterfulgt af navnet på den lagrede procedure, f.eks. Paruntimedb.dbonewlibrarybook
.
Bemærk
Når Power Apps henter den gemte procedure, sammenkædes navneområdet og procedurenavnet, så dbo.newlibrarybook
bliver til dbonewlibrarybook
.
Argumenter overføres som en Power Apps-post med navngivne værdipar:
<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >})
Tip
Husk at konvertere værdier, hvis det er nødvendigt, når du overfører dem til den lagrede procedure, da du læser fra en tekstværdi i Power Apps. Hvis du f.eks. opdaterer et heltal i SQL, skal du konvertere teksten i feltet ved hjælp af Value()
.
Her er et eksempel på, hvordan lagrede procedurer kan se ud, når de tildeles en OnSelect
-egenskab.
Variabler og alle lagrede procedurer
Du kan få adgang til en gemt procedure for egenskaben Items i et galleri, når du har erklæret den sikker for brugergrænsefladen. Henvis til datakildenavnet og navnet på den gemte procedure efterfulgt af ResultSets
. Du kan få adgang til flere resultater ved at referere til det sæt tabeller, der returneres, f.eks. Tabel 1, Tabel 2 osv.
En gemt procedure, der åbnes fra tabellen Paruntimedb
med navnet dbo.spo_show_all_library_books()
, ser f.eks. sådan ud:
Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1
Denne forespørgsel udfylder galleriet med poster. Gemte procedurer er funktionsmåder for handlinger på tabelmodellen. Refresh()
fungerer kun med tabeldatakilder og kan ikke bruges sammen med lagrede procedurer. Du skal opdatere galleriet, når en post oprettes, opdateres eller slettes.
Bemærk
Når du bruger en Submit()
i en formular til en tabeldatakilde, kalder den Refresh()
i baggrunden og opdaterer galleriet.
Brug en variabel til at udfylde og opdatere galleriet
Brug en variabel i egenskaben OnVisible
for skærmen, og angiv den gemte procedure til variablen.
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Du kan derefter angive egenskaben Items
for galleriet til variabelnavnet.
SP_Books
Når du har oprettet, opdateret eller slettet en post med et kald til den lagrede procedure, skal du angive variablen igen for at opdatere galleriet.
Paruntimedb.dbonewlibrarybook({
book_name: DataCardValue3_2.Text,
author: DataCardValue1_2.Text,
...
});
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Brug Power Automate til at kalde gemte procedurer
Power Automate håndterer asynkrone handlinger bedst. Du kan kalde lagrede procedurer som en del af en række kald i en forretningsproces.
Hvis du vil kalde Power Automate efterfulgt af et kald til gemte procedurer, skal du oprette inputvariabler som en del af flowet.
Send derefter dine inputvariabler til kaldet for din lagrede procedure.
Føj dette Power Automate-flow til din app, og kald det. De valgfrie argumenter overføres som en post "{ ... }". Følgende eksempel indeholder alle valgfrie argumenter.