Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Lägg till en datakälla
Direktåtkomst:
Om du väljer alternativet Börja med data när du skapar en app använder objektegenskapen i galleriet en Power Fx-formel med ett datakällans namn som pekar direkt på databastabellen.
Om du till exempel har en BOOKLENDING tabell ser du den här formeln:
Search([@'[dbo].[BOOKLENDING]'], SearchInput1.Text, author, author,book_name,category)
Vyer och lagrade procedurer:
Ett vanligt mönster för professionell dataåtkomst är att använda vyer och sedan lagrade procedurer för att skapa, uppdatera och ta bort i stället för att tillåta direkt åtkomst. Om du vill använda vyer eller lagrade procedurer ändrar du exempelformeln. På samma sätt använder formuläret för posten inte formelns inbyggda direktmetod SubmitForm() .
Utlösare:
Ett databasmönster är att använda utlösare i tabeller. Om en tabell har en utlösare kan du inte använda direktmönstret Submit() för att skapa, uppdatera och ta bort.
Submit() står i konflikt med SQL-utlösarhantering och det inbyggda Power Apps-beteendet, som använder samma utdataparameter.
Du kan komma åt tabellen direkt för frågor, men för att hantera Create, Updateeller Delete, anropa en lagrad procedur.
Obs
SQL Server-anslutningsappen förutsätter, precis som alla anslutningsappar som fungerar med relationsdata, att tabeller har en primärnyckel. En primärnyckel är viktig för att hitta specifika poster som ska uppdateras. Om en SQL Server-tabell inte har någon primärnyckel är data skrivskyddade. Om du har åtkomst- och redigeringsbehörighet till tabellen SQL Server bör du överväga att lägga till en automatiskt genererad nyckel.
Använda en vy
En vy är en sparad fråga som visas som en enda datatabell.
Vyer visas i listan över tabeller som du kan välja när du lägger till en datakälla. Vyer har endast stöd för frågor, inte uppdateringar. Om du vill uppdatera data använder du en lagrad procedur.
Om du skapar en tabell med Start with data alternativet får du skärmar och formler som visar poster i ett galleri och formulär. Du ser formler och funktioner för att skapa, redigera och ta bort poster. Men om du använder en vy ser du bara en visningsskärm för galleriet och formuläret.
Du kanske vill ha automatiskt genererade skärmar från Start with data för vyer.
Så här använder du det här autogenererade alternativet:
- Välj
Start with datamed en grundläggande tabell. - Ta bort och ersätt tabelldatakällan.
Exempel:
Om du till exempel har en BOOKLENDINGVIEW tabell och lägger till den som en datakälla för Power Apps kan formeln vara så enkel som:
BOOKLENDINGVIEW
Du kan också ersätta andra formler för att skapa, uppdatera och ta bort med en vydatakälla och anrop till lagrade procedurer.
Använda lagrade procedurer
När du lägger till en SQL Server-anslutning till din app kan du lägga till lagrade procedurer och anropa dem direkt i Power Fx.
Obs
Den här funktionen fungerar även med säkra implicita kopplingar.
När du har valt en lagrad procedur visas en underordnad nod och du kan ange den lagrade proceduren som Säker att använda för gallerier och tabeller.
En lagrad procedur är säker om den inte utför någon åtgärd som kan vara oönskad i vissa scenarier. Om en lagrad procedur till exempel samlar in alla konton från en viss stad och sedan skickar ett e-postmeddelande till dem kanske du inte alltid vill att e-postmeddelanden ska skickas varje gång den lagrade proceduren anropas. Markera i så fall inte den lagrade proceduren som säker.
Kontrollera bara att en lagrad procedur är säker om:
Det inte finns biverkningar av att anropa denna procedur på begäran.
Du kan anropa proceduren flera gånger eller när Power Apps uppdaterar kontrollen. När du använder den med en objektegenskap i ett galleri eller en tabell anropar Power Apps den lagrade proceduren när systemet fastställer att en uppdatering behövs. Du kan inte kontrollera när den lagrade proceduren anropas.
Den lagrade proceduren returnerar en blygsam mängd data.
Åtgärdsanrop, till exempel lagrade procedurer, har ingen gräns för hur många rader som hämtas. De är inte automatiskt sidiga i steg med 100 poster, till exempel tabelldatakällor som tabeller eller vyer.
Om den lagrade proceduren returnerar för mycket data (många tusentals poster) kan appen sakta ned eller krascha. Av prestandaskäl tar du in färre än 2 000 poster.
Om du kontrollerar en lagrad procedur som säker kan du tilldela den som en objektegenskap i gallerier eller tabeller i din app.
Viktigt
Schemat för returvärdena för den lagrade proceduren ska vara statiskt, så att värdena ändras inte från anrop till anrop. Om en lagrad procedur till exempel returnerar två tabeller returneras alltid två tabeller. Du kan arbeta med specifika eller dynamiska resultat.
Resultatets struktur måste också vara statisk. Om schemat för resultaten till exempel är dynamiskt är resultatet dynamiskt och du måste ange en specifik typ för att använda dem i Power Apps. Mer information finns i dynamiska resultat.
SQL-namnrymden tillagt i början av namnet på den lagrade proceduren
Namnet på SQL Server-namnområdet, där du lagrar proceduren, läggs till i början av namnet på den lagrade proceduren. Till exempel har alla lagrade procedurer i SQL Server-namnrymden DBOdbo i början av namnet.
När du till exempel lägger till en lagrad procedur kan du se fler än en datakälla i projektet.
Anropa en lagrad procedur
Om du vill använda en lagrad procedur i Power Apps lägger du till anslutningsnamnet före namnet på den lagrade proceduren, till exempel Paruntimedb.dbonewlibrarybook.
Obs
När Power Apps tar in den lagrade proceduren kombineras namnområdet och procedurnamnet så att blir dbo.newlibrarybookdbonewlibrarybook.
Argument skickas som en Power Apps-post med namngivna värdepar:
<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >})
Tips!
Konvertera värden om det behövs när du skickar dem till den lagrade proceduren, eftersom du läser från ett textvärde i Power Apps. Om du till exempel uppdaterar ett heltal i SQL konverterar du texten i fältet med .Value()
Här är ett exempel på hur lagrade procedurer kan se ut när du tilldelar dem åt en OnSelect-egenskap.
Variabler och alla lagrade procedurer
Få åtkomst till en lagrad procedur för objektegenskapen för ett galleri när du har deklarerat det som säkert för användargränssnittet. Referera till datakällans namn och namnet på den lagrade proceduren följt av ResultSets. Få åtkomst till flera resultat genom att referera till den uppsättning tabeller som returneras, till exempel Tabell 1, Tabell 2 och så vidare.
En lagrad procedur från tabellen Paruntimedb med namnet dbo.spo_show_all_library_books() ser till exempel ut så här:
Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1
Den här frågan fyller i galleriet med poster. Lagrade procedurer är dock åtgärdsbeteenden i tabellmodellen.
Refresh() fungerar bara med tabelldatakällor och fungerar inte med lagrade procedurer. Uppdatera galleriet när en post skapas, uppdateras eller tas bort.
Obs
När du använder en Submit() i ett formulär för en tabelldatakälla anropar den Refresh() under huven och uppdaterar galleriet.
Använda en variabel för att fylla i och uppdatera galleriet
Använd en variabel i OnVisible egenskapen för skärmen och ange den lagrade proceduren till variabeln.
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Du kan sedan ange galleriets Items-egenskap till variabelnamnet.
SP_Books
När du har skapat, uppdaterat eller tagit bort en post med ett anrop till den lagrade proceduren anger du variabeln igen för att uppdatera galleriet.
Paruntimedb.dbonewlibrarybook({
book_name: DataCardValue3_2.Text,
author: DataCardValue1_2.Text,
...
});
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Använda Power Automate för att anropa lagrade procedurer
Power Automate hanterar asynkrona åtgärder bäst. Anropa lagrade procedurer som en del av en serie anrop i en affärsprocess.
Om du vill anropa Power Automate och sedan anropa lagrade procedurer skapar du indatavariabler som en del av ditt flöde.
Skicka sedan dina indatavariabler till anropet av den lagrade proceduren.
Lägg till det här Power Automate-flödet i din app och anropa det. Skicka valfria argument som en post "{ ... }”. Följande exempel innehåller alla valfria argument.