Forstå datakilder til canvas-apps

I Power Apps bruger de fleste lærredapps eksterne oplysninger, der er lagret i cloudtjenester kaldet Datakilder. Et almindeligt eksempel er en tabel i en Excel-fil, der er gemt i OneDrive. Apps kan få adgang til disse datakilder ved hjælp af Forbindelser.

I denne artikel beskrives de forskellige typer datakilder, og hvordan du arbejder med tabeldatakilder, herunder hvordan du håndterer delegering, fejlhåndtering og almindelige problemer.

Det er nemt at oprette en app, som udfører grundlæggende læsning og skrivning til en datakilde. Men nogle gange vil du gerne have mere kontrol over, hvordan data flyder ind og ud af din app. I denne artikel beskrives det, hvordan funktionerne Patch, DataSourceInfo, Validate og Errors giver større kontrol.

Typer af datakilder

Datakilder kan være forbundet til en cloudtjeneste, eller de kan være lokale for en app.

Forbundne datakilder

De mest almindelige datakilder er tabeller, som du kan bruge til at hente og lagre oplysninger. Du kan bruge forbindelser til datakilder til at læse og skrive data i Microsoft Excel-projektmapper, lister, der er oprettet ved hjælp af Microsoft Lister, SharePoint-biblioteker, SQL-tabeller og mange andre formater, der kan gemmes i Cloud Services som OneDrive, DropBox og SQL Server.

Andre datakilder end tabeller omfatter mail, kalendere, Twitter og meddelelser, men denne artikel kommer ikke ind på disse andre typer datakilder.

Lokale datakilder

Når du bruger kontrolelementerne Galleri, Vis formular og Rediger formular, kan du oprette en app, der læser og skriver data fra en datakilde. Kom i gang ved at se Om dataformularer.

Når du beder Power Apps om at bygge en app fra data, bruges disse kontrolelementer. Bag kulisserne bruger appen en intern tabel til lagring og manipulering af data, der kommer fra datakilden.

En særlig type datakilde er Samling, som er lokal for appen og ikke understøttes af en forbindelse til en tjeneste i skyen. Oplysningerne kan derfor ikke deles på tværs af enheder for den samme bruger eller mellem brugere. Samlinger kan indlæses og gemmes lokalt.

Typer af tabeller

Tabeller, der er interne i en app, er faste værdier, på samme måde som et tal eller en streng er en værdi. Interne tabeller er ikke gemt hvor som helst, med de findes i din apps hukommelse. Du kan ikke direkte ændre en tabels struktur og data. Du kan i stedet for oprette en ny tabel ved brug af en formel, som du bruger til at lave en ændret kopi af den oprindelige tabel.

Eksterne tabeller er gemt i en datakilde til senere overførsel og deling. Power Apps indeholder "forbindelser" til at læse og skrive lagrede data. Inden for en forbindelse kan du få adgang til flere tabeller med oplysninger. Du kan vælge, hvilke tabeller der skal bruges i din app, og hver tabel bliver en separat datakilde.

Se Arbejde med tabeller for at få flere detaljer om interne tabeller, men artiklen er også relevant for eksterne tabeller i en cloudtjeneste.

Arbejde med tabeller

Du kan bruge datakilder i en tabel på samme måde, som du bruger en intern Power Apps-tabel. Ligesom en intern tabel har hver datakilde poster, kolonner, og egenskaber, som du kan bruge i formler. Derudover:

  • Datakilden har de samme kolonnenavne og datatyper som den underliggende tabel i forbindelsen.

    Bemærkning

    SharePoint- og Excel-datakilder, der indeholder kolonnenavne med mellemrum, erstatter Power Apps hvert mellemrum med "_x0020_". "Kolonnenavn" vises f.eks. i SharePoint eller Excel vises som "Column_x0020_Name" i Power Apps, når den vises i datalayoutet eller bruges i en formel.

  • Datakilden indlæses automatisk fra tjenesten, når appen er indlæst. Du kan tvinge data til at opdatere ved hjælp af funktionen Refresh.

  • Når brugere kører en app, kan de oprette, ændre og slette poster og skubbe ændringerne tilbage til den underliggende tabel i tjenesten.

    • Der kan oprettes poster med funktionerne Patch og Collect.
    • Poster kan ændres med funktionerne Patch, Update og UpdateIf.
    • Poster kan fjernes ved hjælp af funktionerne Remove og RemoveIf.
    • Fejl, når du arbejder med en datakilde, er tilgængelige via funktionen Errors.
  • Funktionerne DataSourceInfo, Defaults og Validate indeholder oplysninger om datakilden, som du kan bruge til at optimere brugeroplevelsen.

Oprette datakilder

Power Apps kan ikke bruges til at oprette en forbundet datakilde eller ændre dens struktur. Datakilden skal allerede være at finde i en tjeneste et sted. Eksempelvis skal du for at oprette en tabel i en Excel-projektmappe, der er gemt på OneDrive, først bruge Excel Online på OneDrive for at oprette en projektmappe. Derefter skal du oprette en forbindelse til den fra din app.

En samling af datakilder kan dog oprettes og redigeres i en app, men de er kun midlertidige.

Vise en eller flere poster

Informationsflow, når en app læser oplysningerne i en datakilde.

Diagrammet ovenfor viser flowet af oplysninger, når en app indlæser oplysningerne i en datakilde:

  • Oplysningerne lagres og deles via en lagertjeneste (i dette tilfælde Microsoft Lister eller SharePoint Online).
  • En forbindelse gør disse oplysninger tilgængelige for appen. Forbindelsen sørger for godkendelse af brugeren, så denne kan få adgang til oplysningerne.
  • Når appen er startet, eller funktionen Refresh er aktiveret, hentes oplysninger fra forbindelsen til en datakilde i appen til lokal brug.
  • Formler bruges til at læse oplysninger og vise dem i kontrolelementer, som brugeren kan se. Du kan få vist poster for en datakilde ved hjælp af et galleri i et skærmbillede og forbinde egenskaben Items til datakilden: Gallery.Items = DataSource. Du forbinder kontrolelementer i galleriet til galleriet ved hjælp af kontrolelementernes egenskab Default.
  • Datakilden er også en tabel. Så du kan bruge Filter, Sort, AddColumns og andre funktioner til at indskrænke og udvide datakilden, før du bruger den som en helhed. Du kan også bruge Lookup, First, Last og andre funktioner til at arbejde med individuelle poster.

Redigere en datapost

Pilene i diagrammet ovenfor er ensrettede. Ændringer af en datakilde skubbes ikke tilbage gennem de samme formler, hvorfra dataene blev hentet. Der bruges i stedet nye formler. Et andet skærmbillede bruges ofte til at redigere en post end til gennemsyn af poster, især på en mobilenhed.

Du kan ændre en eksisterende post i en datakilde, men posten skal oprindeligt komme fra datakilden. Posten kan vises i et galleri, en kontekstvariabel og en række formler, men postens oprindelse skal kunne spores tilbage til datakilden. Yderligere oplysninger, som entydigt identificerer posten, følger med den, for at sikre at du redigerer den korrekte post.

Informationsflow til opdatering af en datakilde. Diagrammet ovenfor viser flowet af oplysninger for at opdatere en datakilde:

  • Et kontrolelement af typen Rediger formular indeholder en objektbeholder for inputkort, som består af kontrolelementer til brugerinput som f.eks. et kontrolelement af typen tekstinput eller en skyder. Egenskaberne DataSource og Item bruges til at identificere posten, du vil redigere.
  • Hvert inputkort har en egenskab af typen Standard, der normalt er angivet til feltet i formularens post af typen ThisItem. Kontrolelementerne i inputkortet får deres inputværdier fra Standard. Du behøver normalt ikke at ændre dette.
  • Hvert inputkort viser en egenskab af typen Update. Denne egenskab knytter brugerens input til et bestemt felt i posten for at skrive tilbage til datakilden. Du behøver normalt ikke at ændre dette.
  • En knap eller et image-kontrolelement i skærmbilledet gør det muligt for brugeren at gemme ændringer i posten. Formlen OnSelect i kontrolelementet kalder funktionen SubmitForm for at udføre denne opgave. SubmitForm læser alle egenskaberne af typen Update for kort og skriver tilbage til datakilden.
  • Der vil nogle gange være problemer. En netværksforbindelse kan være nede, eller der er foretaget en valideringskontrol af tjenesten, som programmet ikke kendte til. Egenskaberne Error og ErrorKind for formularens kontrolelement gør disse oplysninger tilgængelige, så du kan vise dem til brugeren.

Du kan også bruge funktionen Patch eller Error til at få mere detaljeret kontrol over processen. Kontrolelementet Rediger formular viser en egenskab af typen Updates, så du kan læse værdierne i felterne i formularen. Du kan også bruge denne egenskab til at kalde en brugerdefineret forbindelse på en forbindelse, der fuldstændigt omgår funktionerne Patch og SubmitForm.

Validering

Før du foretager en ændring af en post, skal appen gøre, hvad den kan, for at sikre at ændringen vil være acceptabel. Der er to grunde til at kontrollere:

  • Øjeblikkelig feedback til brugeren. Det bedste tidspunkt at løse et problem på er lige, når det sker, så det er frisk i brugerens hukommelse. Rød tekst, der identificerer et problem med indtastningen, kan bogstaveligt talt vises med hver berøring eller hvert tastetryk.
  • Mindre netværkstrafik og mindre ventetid for brugeren. Flere problemer, der er registreret i appen, betyder færre samtaler via netværket for at finde og løse problemer. Hver samtale tager tid, hvor brugeren skal vente, før det er muligt at fortsætte.

Power Apps tilbyder to værktøjer til validering:

  • Datakilden kan give oplysninger om, hvad der er og ikke er gyldigt. Tal kan f.eks. have minimale og maksimale værdier, og en eller flere indtastninger kan være påkrævet. Du kan få adgang til disse oplysninger med funktionen DataSourceInfo.
  • Funktionen Validate bruger de samme oplysninger til at kontrollere værdien af en enkelt kolonne eller en hel post.

Fejlhåndtering

Nu, hvor du har valideret posten, kan du opdatere posten med Patch.

Men desværre kan der stadig være et problem. Netværket er nede, validering af tjenesten mislykkedes, eller brugeren har ikke de rette tilladelser, bare for at nævne nogle få af de mulige fejl din app kan støde på. Din app skal reagere korrekt på fejlsituationer, levere feedback til brugeren og udgøre en metode til at rette fejlen.

Når der opstår fejl med en datakilde, registrerer din app automatisk oplysninger om fejlen og gør dem tilgængelige via funktionen Error. Fejl er knyttet til de poster, der havde problemer. Hvis problemet er noget, brugeren kan løse, som f.eks. et valideringsproblem, kan brugeren indsende posten igen, så bliver fejlene fjernet.

Hvis der opstår en fejl, når der oprettes en post med Patch eller Collect, er der ingen post at knytte eventuelle fejl til. I dette tilfælde returneres tom af Patch og kan bruges som postargumentet til Errors. Fejl under oprettelse ryddes med den næste handling.

Funktionen Errors returnerer en tabel med oplysninger om fejlen. Disse oplysninger kan omfatte kolonneoplysninger, hvis fejlen kan henføres til en bestemt kolonne. Brug fejlmeddelelser på kolonneniveau i etiketkontrolelementer, der er tæt på det sted, hvor kolonnen er placeret på skærmbilledet Rediger. Brug fejlmeddelelser på postniveau, hvor Kolonne i fejltabellen er tom, på et sted tæt på knappen Gem for hele posten.

Arbejde med store datakilder

Når du opretter rapporter fra store datakilder (måske flere millioner poster), vil du gerne minimere netværkstrafik. Antag, at du vil rapportere om alle kunder, der har en StatusCode af typen Platinum i New York City. Tabellen Kunder indeholder millioner af poster.

Du ønsker ikke at få disse millioner af kunder ind i din app og derefter vælge de ønskede kunder. Det, du ønsker, er, at dette valg sker i cloudtjenesten, hvor din tabel er lagret, og kun sende de valgte poster over netværket.

Mange funktioner, men ikke alle, som du kan bruge til at vælge poster, kan være delegerede, hvilket betyder, at de køres i cloudtjenesten. Få mere at vide i Delegation.

Important

Power Apps henter som standard kun de første 500 poster fra en datakilde. Du kan hæve denne grænse til maksimalt 2.000 poster i appindstillinger. Hvis datakilden indeholder flere poster, og formlen ikke kan delegeres fuldt ud, vises der en gul delegeringsadvarselstrekant i Power Apps Studio. Når du får vist denne advarsel, returnerer din app muligvis ikke alle matchende poster på kørselstidspunktet. Hvis du vil undgå datatab i store datasæt, skal du bruge delegerbare funktioner, f.eks. Filter og Sort med understøttede datakilder, eller overvej at bruge Microsoft Dataverse, som har bredere delegeringsunderstøttelse.

Identificer og løs delegeringsadvarsler

Der vises ofte en delegeringsadvarsel på formellinjen som en gul trekant, når Power Apps ikke kan pushe en formelhandling til datakilden, men ikke alle ikke-delegerbare tilfælde viser denne advarsel. Sådan kontrollerer du, om en formel kan delegeres:

  1. Vælg det kontrolelement eller den formel, der behandler datakilden.
  2. Søg efter et gult trekantikon i Power Apps Studio.
  3. Peg på trekanten for at læse delegeringsadvarselsmeddelelsen.

Sådan løser du delegeringsproblemer:

  • Erstat ikke-delegerbare funktioner (f.eks. Search for tekstkolonner i SharePoint) med delegerbare alternativer, hvor det er muligt.
  • Skift til Microsoft Dataverse som datakilde for at få den bredeste delegeringssupport.
  • Brug visninger på serversiden (til SharePoint) eller lagrede procedurer (til SQL) til at filtrere data på forhånd.
  • Hvis du vil foretage fejlfinding af delegeringsproblemer, der ikke er markeret med flag, skal du bruge Live Monitor under Advanced tools til at undersøge de forespørgsler, Power Apps sender, og de data, der returneres fra hver datakilde. Du kan finde flere oplysninger under Fejlfinding af lærredsapps med liveskærm.

Samlinger

Samlinger er en speciel type datakilde. De er lokale for appen og understøttes ikke af en forbindelse til en tjeneste i skyen. Oplysningerne kan derfor ikke deles på tværs af enheder for den samme bruger eller mellem brugere.

Samlinger fungerer ligesom alle andre datakilder, med nogle få undtagelser:

  • Samlinger kan oprettes dynamisk med funktionen Collect. I modsætning til forbindelsesbaserede datakilder behøver de ikke at være oprettet på forhånd.
  • Kolonnerne i en samling kan ændres til enhver tid ved brug af funktionen Collect.
  • Samlinger tillader identiske poster. Der kan være mere end én kopi af den samme post i en samling. Funktioner som Remove fungerer på den første forekomst, de finder, medmindre argumentet Alt er angivet.
  • Du kan bruge funktionerne SaveData og LoadData til at gemme og genindlæse en kopi af samlingen. Oplysningerne er gemt på et privat sted, som andre brugere, apps eller enheder ikke har adgang til.
  • Du kan bruge kontrolelementerne Eksportér og Importér til at gemme og genindlæse en kopi af samlingen til en fil, som brugeren kan interagere med.

Du kan se flere oplysninger om arbejde med en samling som en datakilde i Oprette og vedligeholde en samling.

Samlinger bruges ofte til at bevare den globale tilstand for appen. Se de tilgængelige indstillinger for administration af tilstanden i Arbejde med variabler.

Foretag fejlfinding af almindelige datakildeproblemer

Som standard henter Power Apps kun de første 500 poster fra en datakilde. Hvis galleriet ser ud til at mangle poster, har du sandsynligvis et delegeringsproblem. Kontrollér, om der er en gul trekantadvarsel i galleriets formel Elementer , og sørg for, at den filterformel, du bruger, kan delegeres for datakilden. Se Arbejde med store datakilder for at få oplysninger om løsningstrin.

Kolonnenavne viser x0020 i mine formler

Hvis SharePoint list eller Excel-tabel har kolonnenavne med mellemrum (f.eks. My Column), erstatter Power Apps mellemrum med _x0020_ i formler (f.eks. MyTable.My_x0020_Column). Dette er den forventede funktionsmåde. Omdøb kolonnen i kildedataene for at fjerne mellemrum, eller fortsæt med at bruge det kodede navn i formlerne.

Ændringer i datakilden vises ikke i min app

Hvis de underliggende data er ændret eksternt (f.eks. blev der tilføjet en post i SharePoint), registrerer din app ikke automatisk ændringer, mens den kører. Brug funktionen Refresh til at tvinge appen til at genindlæse de aktuelle data. Tilføj f.eks. en knap med OnSelect = Refresh(MyDataSource).

Hvornår skal jeg bruge Patch i stedet for SubmitForm?

Brug SubmitForm , når du har et kontrolelement af typen Edit form – det håndterer automatisk validering, felttilknytning og fejlvisning. Brug Patch , når du har brug for at:

  • Opdater en post uden et formularkontrolelement.
  • Opdater kun bestemte felter, uden at det påvirker andre.
  • Skriv til flere datakilder i én handling.
  • Byg en helt brugerdefineret lagringsoplevelse.