Toegang krijgen tot gegevens in SQL Server
Een gegevensbron toevoegen
Directe toegang:
Als u bij het maken van een app de optie Beginnen met gegevens kiest, heeft de eigenschap Items van uw galerie een Power Fx-formule met een gegevensbronnaam die rechtstreeks naar uw databasetabel verwijst.
Als u bijvoorbeeld een tabel BOOKLENDING
hebt, ziet u de volgende formule:
Search([@'[dbo].[BOOKLENDING]'], SearchInput1.Text, author, author,book_name,category)
Weergaven en opgeslagen procedures:
Een gebruikelijk professioneel patroon voor gegevenstoegang is het gebruik van weergaven en vervolgens opgeslagen procedures voor het maken, bijwerken en verwijderen, in plaats van directe toegang toe te staan. Als u weergaven of opslagen procedures wilt gebruiken, moet u de voorbeeldformule wijzigen. Ook het formulier voor de record maakt geen gebruik van de ingebouwde directe benadering van de formule SubmitForm()
.
Triggers:
Eén databasepatroon is het gebruik van triggers op tabellen. Als een tabel een trigger heeft, kunt u het directe patroon Submit()
niet gebruiken voor aanmaken, bijwerken en verwijderen. Submit()
heeft een conflict tussen de verwerking van SQL-triggers en het ingebouwde Power Apps-gedrag, dat dezelfde uitvoerparameter gebruikt.
U kunt echter rechtstreeks toegang krijgen tot de tabel voor querydoeleinden, maar om Create
, Update
of Delete
te verwerken, moet u een opgeslagen procedure aanroepen.
[!NOTE]
De serverconnector SQL gaat er,.Net als alle connectors die met relationele gegevens werken, vanuit dat tabellen een primaire sleutel hebben. Een primaire sleutel is essentieel om specifieke records te vinden die bijgewerkt moeten worden. Als een SQL Server-tabel geen primaire sleutel heeft, worden de gegevens als alleen-lezen behandeld. Als u toegangs- en bewerkingsrechten hebt voor de SQL Server-tabel, kunt u overwegen een automatisch gegenereerde sleutel toe te voegen.
Een weergave gebruiken
Een weergave is een opgeslagen query die wordt weergegeven als één tabel met gegevens.
Weergaven worden weergegeven in de lijst met tabellen die u kunt selecteren wanneer u een gegevensbron toevoegt. Weergaven ondersteunen alleen query's, geen updates. U moet een opgeslagen procedure gebruiken voor updates.
Als u een tabel maakt met de optie Start with data
, krijgt u schermen en formules die records weergeven in een galerie en formulier. U ziet formules en functionaliteit voor het maken, bewerken en verwijderen. Als u echter een weergave gebruikt, ziet u alleen een weergavescherm voor de galerie en het formulier.
Mogelijk wilt u de automatisch gegenereerde schermen voor weergaven van Start with data
.
Voor deze automatisch gegenereerde optie:
- Kies
Start with data
met een basistabel. - Verwijder en vervang de tabelgegevensbron.
Voorbeeld:
Bijvoorbeeld, als u een BOOKLENDINGVIEW
-tabel had en deze als gegevensbron voor Power Apps toevoegde, zou de formule zo eenvoudig kunnen zijn:
BOOKLENDINGVIEW
U kunt ook andere formules voor maken, bijwerken en verwijderen vervangen door een weergavegegevensbron en opgeslagen procedureaanroepen.
Opgeslagen procedures gebruiken
Wanneer u een verbinding met SQL Server aan uw app toevoegt, kunt u opgeslagen procedures toevoegen en deze rechtstreeks in Power Fx aanroepen.
Notitie
Deze functie werkt ook met beveiligde impliciete verbindingen.
Zodra u een opgeslagen procedure selecteert, verschijnt er een onderliggend knooppunt en kunt u de opgeslagen procedure aanwijzen als Veilig te gebruiken voor galerieën en tabellen.
Een opgeslagen procedure is veilig als er geen actie wordt uitgevoerd die in bepaalde scenario's ongewenst zou kunnen zijn. Stel dat een opgeslagen procedure alle accounts van een bepaalde stad verzamelt en deze vervolgens een e-mail stuurt. Het is mogelijk dat u niet wilt dat er elke keer dat de opgeslagen procedure wordt aangeroepen, een e-mail wordt verzonden. Daarom mag de opgeslagen procedure niet als veilig worden gemarkeerd.
Markeer een opgeslagen procedure alleen als veilig als:
Er zijn geen bijwerkingen verbonden aan het op verzoek aanroepen van deze procedure.
U moet de procedure meerdere keren kunnen aanroepen, of telkens wanneer Power Apps het besturingselement vernieuwt. Bij gebruik met een eigenschap Items van een galerie of tabel, roept Power Apps de opgeslagen procedure aan wanneer het systeem bepaalt dat vernieuwing nodig is. U hebt geen controle over wanneer de opgeslagen procedure wordt aangeroepen.
U retourneert een bescheiden hoeveelheid gegevens in de opgeslagen procedure.
Voor actieaanroepen, zoals opgeslagen procedures, geldt geen limiet voor het aantal opgehaalde rijen. Ze worden niet automatisch gepagineerd in stappen van 100 records, zoals gegevensbronnen in tabelvorm, zoals tabellen of weergaven.
Als de opgeslagen procedure te veel gegevens retourneert (vele duizenden records), kan uw app trager worden of vastlopen. Haal om prestatieredenen minder dan 2000 records op.
Als u een opgeslagen procedure als veilig aanmerkt, kunt u deze toewijzen als een eigenschap Items in galerieën voor tabellen die u in uw app wilt gebruiken.
Belangrijk
Het schema van de retourwaarden van de opgeslagen procedure moet statisch zijn, zodat de waarden niet veranderen van aanroep tot aanroep. Bijvoorbeeld, als een opgeslagen procedure twee tabellen retourneert, retourneert deze altijd twee tabellen. U kunt met resultaten met of zonder afdwingen van gegevenstype werken.
De structuur van de resultaten moet tevens statisch zijn. Bijvoorbeeld, als het schema van de resultaten dynamisch is, zijn de resultaten niet getypeerd en moet u een type opgeven om ze te kunnen gebruiken in Power Apps. Zie Resultaten zonder type voor meer informatie.
SQL-naamruimte voorafgaand aan opgeslagen procedurenaam
De naam van de SQL Server-naamruimte waarin u de procedure opslaat, wordt vóór de naam van de opgeslagen procedure geplaatst. Bijvoorbeeld, alle opgeslagen procedures in de DBO SQL Server-naamruimte hebben dbo aan het begin van de naam.
Bijvoorbeeld, wanneer u een opgeslagen procedure toevoegt, ziet u mogelijk meer dan één gegevensbron in uw project.
Een opgeslagen procedure aanroepen
Als u een opgeslagen procedure in Power Apps wilt gebruiken, voegt u vóór de naam van de opgeslagen procedure de naam van de bijbehorende connector toe, gevolgd door de naam van de opgeslagen procedure Paruntimedb.dbonewlibrarybook
.
Notitie
Wanneer Power Apps de opgeslagen procedure ophaalt, worden de naamruimte en de procedurenaam samengevoegd, zodat dbo.newlibrarybook
verandert in dbonewlibrarybook
.
Argumenten worden doorgegeven als een Power Apps-record met benoemde waardeparen:
<datasourceName>.<StoredprocedureName>({<paramName1: value, paramName2: value, ... >})
Tip
Vergeet niet om indien nodig waarden te converteren wanneer u ze doorgeeft aan uw opgeslagen procedure, aangezien u een tekstwaarde leest in Power Apps. Als u bijvoorbeeld een geheel getal in SQL bijwerkt, moet u de tekst in het veld converteren met Value()
.
Hier ziet u een voorbeeld van hoe opgeslagen procedures eruit kunnen zien wanneer u ze toewijst aan een eigenschap OnSelect
.
Variabelen en alle opgeslagen procedures
U kunt toegang krijgen tot een opgeslagen procedure voor de eigenschap Items van een galerij nadat u deze veilig hebt verklaard voor de gebruikersinterface. Verwijs naar de naam van de gegevensbron en de naam van de opgeslagen procedure gevolgd door ResultSets
. U kunt toegang krijgen tot meerdere resultaten door te verwijzen naar de geretourneerde set tabellen, zoals Tabel 1, Tabel 2, enz.
Bijvoorbeeld, een opgeslagen procedure die vanuit de tabel Paruntimedb
met de naam dbo.spo_show_all_library_books()
wordt geopend, ziet er als volgt uit:
Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1
Met deze query wordt de galerie gevuld met records. Opgeslagen procedures zijn echter actieprocedures in het tabelmodel. Refresh()
werkt alleen met tabelgegevensbronnen en kan niet worden gebruikt met opgeslagen procedures. U moet de galerie vernieuwen wanneer er een record wordt gemaakt, bijgewerkt of verwijderd.
Notitie
Wanneer u een Submit()
gebruikt in een formulier voor een tabelgegevensbron, wordt Refresh()
op de achtergrond aangeroepen en wordt de galerie bijgewerkt.
Gebruik een variabele om de galerie te vullen en te vernieuwen
Gebruik een variabele in de eigenschap OnVisible
voor het scherm en koppel de opgeslagen procedure aan de variabele.
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Vervolgens kunt u de eigenschap Items
van de galerie instellen op de variabelenaam.
SP_Books
Nadat u een record hebt gemaakt, bijgewerkt of verwijderd met een aanroep van de opgeslagen procedure, stelt u de variabele opnieuw in om de galerie bij te werken.
Paruntimedb.dbonewlibrarybook({
book_name: DataCardValue3_2.Text,
author: DataCardValue1_2.Text,
...
});
Set(SP_Books, Paruntimedb.dbospshowalllibrarybooks().ResultSets.Table1);
Gebruik Power Automate om opgeslagen procedures aan te roepen
Power Automate kan het beste omgaan met asynchrone acties. U kunt opgeslagen procedures aanroepen als onderdeel van een reeks aanroepen in een bedrijfsproces.
Om een aanroep te doen in Power Automate gevolgd door een aanroep van opgeslagen procedures, maakt u invoervariabelen als onderdeel van uw stroom.
Geef vervolgens uw invoervariabelen door aan de aanroep van uw opgeslagen procedure.
Voeg deze Power Automate-stroom toe aan uw app en roep deze aan. De optionele argumenten worden doorgegeven als een record "{ … }". Het volgende voorbeeld bevat alle optionele argumenten.