De functies SaveData, LoadData en ClearData

Van toepassing op: Canvas-apps

Slaat een verzameling uit de opslag van de app-host op en laadt deze opnieuw.

Notitie

Deze functies kunnen nu worden gebruikt bij het afspelen van een app in een webbrowser als een experimentele functie. Deze functie is standaard uitgeschakeld. U schakelt deze in door naar Instellingen>Aanstaande functies>Experimenteel>Ingeschakelde SaveData, LoadData, ClearData in webspeler te gaan en de schakeloptie in te schakelen. Als u feedback wilt geven over deze experimentele functie, gaat u naar het Power Apps-communityforum.

Beschrijving

Met de functie SaveData slaat u een verzameling voor later gebruik op onder een naam.

Met de functie LoadData wordt een verzameling die eerder is opgeslagen met SaveData, opnieuw geladen aan de hand van de naam van de verzameling. U kunt deze functie niet gebruiken om een verzameling van een andere bron te laden.

De functie ClearData wist de opslag onder een specifieke naam of wist alle opslag die aan de app is gekoppeld als er geen naam wordt opgegeven.

Notitie

  • De naam die wordt gedeeld tussen SaveData, LoadData, en ClearData is een sleutel, geen bestandsnaam. Deze hoeft niet ingewikkeld te zijn, omdat namen uniek zijn voor elke app en er geen risico bestaat op naamconflicten. De naam mag geen van de volgende tekens bevatten: *".?:\<>|/.
  • SaveData is beperkt tot 1 MB aan gegevens voor Power Apps die worden uitgevoerd in Teams en in een webbrowser. Er is geen vaste limiet voor Power Apps draaien in een mobiele speler, maar er zijn praktische limieten die hieronder worden besproken.
  • Gebruik SaveData niet om gevoelige gegevens op internet op te slaan, aangezien deze in platte tekst worden opgeslagen.

Gebruik deze functies om de opstartprestaties van apps te verbeteren met de volgende kenmerken:

  • Gegevens in de formule App.OnStart in cache opslaan bij een eerste uitvoering.
  • De lokale cache opnieuw laden bij volgende uitvoeringen.

U kunt deze functies ook gebruiken om eenvoudige offline-mogelijkheden toe te voegen aan uw app.

U kunt deze functies niet in een browser gebruiken in de volgende situaties:

  • Als u de app bewerkt in Power Apps Studio.

Om de app te testen, voert u deze uit in Power Apps Mobile op een iPhone of een Android-apparaat.

Deze functies zijn beperkt door de hoeveelheid beschikbaar app-geheugen, omdat ze werken op een verzameling die in het geheugen is geladen. De beschikbare hoeveelheid geheugen is afhankelijk van onder meer de volgende factoren:

  • Het apparaat en het besturingssysteem.
  • De hoeveelheid geheugen die de Power Apps-speler gebruikt.
  • De complexiteit van de app, met schermen en besturingselementen.

Test de app met te verwachten scenario's op het type apparaten waarop u verwacht dat de app wordt uitgevoerd bij de opslag van grote hoeveelheden gegevens. U kunt over het algemeen het beste uitgaan van tussen 30 MB en 70 MB beschikbaar geheugen.

Deze functies zijn afhankelijk van de verzameling die impliciet wordt gedefinieerd met de functie Collect of ClearCollect. U hoeft niet Collect of ClearCollect aan te roepen om gegevens in de verzameling te laden om deze te definiëren. Dit is een veelvoorkomende situatie wanneer u LoadData gebruikt na een voorafgaande SaveData. Het enige dat nodig is, is dat deze functies aanwezig zijn in een formule om de structuur van de verzameling impliciet te definiëren. Meer informatie over dit onderwerp vindt u in Variabelen maken en verwijderen.

De geladen gegevens worden aan de verzameling toegevoegd. Als u wilt beginnen met een lege verzameling, gebruikt u de functie Clear voordat u LoadData aanroept.

Gegevensbeveiliging

Overweeg zorgvuldig de isolatie en versleuteling van gegevens die zijn opgeslagen met SaveData en beslis of dit past bij wat u wilt, vooral als apparaten door meerdere gebruikers worden gedeeld.

Gegevens opgeslagen met SaveData worden geïsoleerd van andere Power Apps door de Power Apps-spelers. Gegevens worden opgeslagen op basis van de app-id van de app, waarbij automatisch de naamruimte SaveData tussen Power Apps wordt geïsoleerd.

Het besturingssysteem en de browser zijn verantwoordelijk voor het isoleren van gegevens tussen Power Apps en andere apps op een apparaat en met websites. Het besturingssysteem is bijvoorbeeld verantwoordelijk voor het isoleren van gegevens die zijn opgeslagen in Microsoft Outlook van gegevens die zijn opgeslagen in Power Apps en voor het isoleren van die gegevens van websites, zoals Bing.com of PowerApps.com. De ingebouwde app-sandbox-faciliteiten van het besturingssysteem worden gebruikt voor de opslag van SaveData, die meestal niet toegankelijk is of wordt verborgen voor de gebruiker.

Bij gebruik van dezelfde app zijn het besturingssysteem en de browser ook verantwoordelijk voor de isolatie van de gegevens tussen verschillende gebruikers op besturingssysteemniveau. Als twee verschillende gebruikers bijvoorbeeld een computer delen en twee verschillende Windows-aanmeldingsreferenties gebruiken, is het besturingssysteem verantwoordelijk voor het isoleren van gegevens tussen de twee Windows-gebruikers.

Gegevens kunnen al dan niet geïsoleerd zijn tussen verschillende Power Apps-gebruikers als de gebruiker van het besturingssysteem dezelfde is. Niet elke Power Apps-speler gaat hier op dezelfde manier mee om. Als de gebruiker bijvoorbeeld als dezelfde Windows-gebruiker is aangemeld, meldt de de gebruiker zich in de Power Apps-speler af bij Power Apps en meldt deze zich aan als een andere Power Apps-gebruiker. Gegevens die zijn opgeslagen in een app vóór de wijziging van de Power Apps-gebruiker, kunnen toegankelijk zijn voor de tweede Power Apps-gebruiker binnen dezelfde app. De gegevens kunnen ook worden verwijderd en de eerste Power Apps-gebruiker heeft er mogelijk geen toegang meer toe. Het gedrag varieert tussen Power Apps-spelers.

Het apparaat kan ook de gegevens versleutelen of u kunt een hulpprogramma voor het beheer van mobiele apparaten gebruiken, zoals Microsoft Intune. Gegevens die worden opgeslagen bij het afspelen van een app in een webbrowser zijn niet versleuteld.

Syntaxis

SaveData( Collection, Naam )
LoadData( Collection, Naam [, IgnoreNonExistentFile ])

  • Collection: vereist. De verzameling die moet worden opgeslagen of geladen.
  • Name: vereist. De naam van de opslag. Gebruik dezelfde naam om dezelfde set gegevens op te slaan en te laden. De naamruimte wordt niet gedeeld met andere apps. De naam mag geen van de volgende tekens bevatten: *".?:\<>|/.
  • IgnoreNonexistentFile: optioneel. Een Booleaanse waarde die aangeeft wat er moet gebeuren als het bestand nog niet bestaat. Gebruik false (standaardwaarde) om een fout te retourneren en true om de fout te onderdrukken.

ClearData( [Naam] )

  • Name: optioneel. Naam van de opslag die eerder is opgeslagen met SaveData. Als Naam niet wordt verstrekt, wordt alle opslagruimte die aan de app is gekoppeld, gewist.

Voorbeelden

Formule Beschrijving Resultaat
SaveData (LokaleCache, "MijnCache") Hiermee slaat u de verzameling LokaleCache op het apparaat van de gebruiker op onder de naam "MijnCache", zodat hij later weer kan worden opgehaald met LoadData. De gegevens worden opgeslagen op de app-host onder de naam "MijnCache".
LoadData (LokaleCache, "MijnCache") Hiermee laadt u de verzameling LokaleCache van het apparaat van de gebruiker onder de naam "MijnCache". Deze verzameling hebt u eerder opgeslagen door SaveData aan te roepen. De gegevens worden geladen van de app-host onder de naam "MijnCache".
ClearData ("MijnCache") Wist de opslag onder de naam "MijnCache". Alle gegevens die onder deze naam zijn opgeslagen, zijn niet langer beschikbaar via LoadData. De gegevens worden verwijderd van de app-host onder de naam "MijnCache".
ClearData() Wis alle opslagruimte die aan deze app is gekoppeld. Gegevens die zijn opgeslagen door andere apps worden niet beïnvloed. Alle gegevens worden verwijderd van de app-host.

Eenvoudig offline voorbeeld

In het volgende eenvoudige voorbeeld worden de namen en afbeeldingen van alledaagse items offline vastgelegd en opgeslagen. De informatie wordt opgeslagen in de lokale opslag van het apparaat voor later gebruik. Hierdoor kan de app worden gesloten of kan het apparaat opnieuw worden opgestart, zonder gegevens te verliezen.

Notitie

In dit voorbeeld wordt een camerabesturingselement gebruikt om afbeeldingen vast te leggen. Omdat SaveData is beperkt tot 1 MB aan gegevens bij gebruik in Teams of een webbrowser, werkt dit voorbeeld niet met meer dan een paar afbeeldingen. Afhankelijk van de camera werkt het ook mogelijk niet met zelfs maar één afbeelding. Gebruik een apparaat om dit volledige voorbeeld te doorlopen of verwijder het gedeelte over het camerabesturingselement en de afbeelding van dit voorbeeld om in Teams of in een webbrowser uit te voeren.

  1. Maak een lege canvas-app met een tabletindeling. Lees voor meer informatie Een canvas-app maken op basis van een sjabloon en selecteer Tabletindeling onder Lege app.

  2. Voeg een besturingselement Text input toe en een besturingselement Camera en plaats ze ongeveer zoals in de afbeelding:

    Besturingselementen tekstinvoer en camera toegevoegd aan een leeg scherm.

  3. Voeg een besturingselement Button toe.

  4. Dubbelklik op het besturingselement Button om de knoptekst te wijzigen in Item toevoegen (of wijzig de eigenschap Text).

  5. Stel de eigenschap OnSelect van het besturingselement Button van deze formule in, die een item aan onze verzameling toevoegt:

    Collect( MyItems, { Item: TextInput1.Text, Picture: Camera1.Photo } )
    

    Een besturingselement Button toegevoegd met de tekst

  6. Voeg nog een besturingselement Button toe.

  7. Dubbelklik op het besturingselement Button om de knoptekst te wijzigen in Gegevens opslaan (of wijzig de eigenschap Text).

  8. Stel de eigenschap OnSelect van het besturingselement Button van deze formule in om onze verzameling op te laten slaan op het lokale apparaat:

    SaveData( MyItems, "LocalSavedItems" )
    

    Een besturingselement Button toegevoegd met de tekst

    Het is verleidelijk om de knop te testen, omdat deze nog geen uitwerking op iets heeft. Maar u ziet alleen een fout, omdat u de app bewerkt in een webbrowser. Sla de app eerst op en open deze op een apparaat voordat u de volgende stappen uitvoert om deze formule te testen:

  9. Voeg een derde besturingselement Button toe.

  10. Dubbelklik op het besturingselement Button om de knoptekst te wijzigen in Gegevens laden (of wijzig de eigenschap Text).

  11. Stel de eigenschap OnSelect van het besturingselement Button van deze formule in om onze verzameling te laden vanaf het lokale apparaat:

    LoadData( MyItems, "LocalSavedItems" )
    

    Een besturingselement Button toegevoegd met de tekst

  12. Voeg een besturingselement Gallery toe met een verticale indeling, met een afbeelding en tekstgebieden:

    Selectie van galerievarianten,

  13. Selecteer wanneer daarom wordt gevraagd de verzameling MijnItems als de gegevensbron voor deze galerie. Dit stelt de eigenschap Items van het besturingselement Gallery in op:

    Galerijselectie van gegevensbron. Het afbeeldingsbesturingselement in de galeriesjabloon moet de eigenschap Image standaard instellen op ThisItem.Picture en de labelbesturingselementen moeten de bijbehorende Text-eigenschappen standaard instellen op ThisItem.Item. Controleer deze formules als u niets in de galerie ziet nadat u in de volgende stappen items hebt toegevoegd.

  14. Plaats het besturingselement rechts van de andere besturingselementen:

    Gallery verplaatst naar de rechterkant van het scherm.

  15. Sla uw app op. Als het de eerste keer is dat de app wordt opgeslagen, hoeft u deze niet te publiceren. Als het niet de eerste keer is, publiceert u de app nadat u deze hebt opgeslagen.

  16. Open de app op een apparaat zoals een telefoon of tablet. SaveData en LoadData kunnen niet worden gebruikt in Studio of in een webbrowser. Vernieuw uw app-lijst als u uw app niet onmiddellijk ziet. Het kan een paar seconden duren voordat de app op uw apparaat zichtbaar is. Het kan ook helpen om u af te melden bij uw account en daarna weer aan te melden.

    App actief zonder toegevoegde items. Nadat uw app is gedownload, kunt u de verbinding met het netwerk verbreken en de app offline uitvoeren.

  17. Voer de naam in en maak een foto van een item.

  18. Selecteer de knop Item toevoegen. Voeg nog enkele items meer toe die u wilt uploaden naar uw verzameling.

    App wordt uitgevoerd met drie items toegevoegd.

  19. Selecteer de knop Gegevens opslaan. Hierdoor worden de gegevens in uw verzameling opgeslagen op uw lokale apparaat.

  20. Sluit de app. De verzameling in het geheugen gaat verloren, inclusief alle namen en afbeeldingen van items, maar ze zijn nog steeds aanwezig in de opslag van het apparaat.

  21. Start de app opnieuw. De verzameling in het geheugen wordt weer in de galerie weergegeven als leeg.

    App wordt opnieuw uitgevoerd zonder items.

  22. Selecteer de knop Gegevens laden. De verzameling wordt weer gevuld met de gegevens die zijn opgeslagen op uw apparaat. De items zijn weer zichtbaar in de galerie. De verzameling was leeg voordat deze knop de functie LoadData aanriep. Het was niet nodig om Collect of ClearCollect aan te roepen voordat u de gegevens uit de opslag laadde.

    App wordt uitgevoerd, met drie herstelde items na het aanroepen van de functie LoadData.

  23. Selecteer de knop Gegevens laden opnieuw. De opgeslagen gegevens worden toegevoegd aan het einde van de verzameling en er verschijnt een schuifbalk in de galerie. Als u wilt vervangen in plaats van toevoegen, gebruik dan eerst de functie Clear om de verzameling te wissen voordat u de functie LoadData aanroept.

    App wordt uitgevoerd, met zes herstelde items nadat de functie LoadData twee keer is aangeroepen.

Meer geavanceerd voorbeeld voor offline werken

Een meer gedetailleerd voorbeeld vindt u in Canvas-apps ontwikkelen voor offline gebruik.