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 besturingssysteem kan de gegevens ook versleutelen, maar u kunt ook een hulpmiddel voor mobiel apparaatbeheer gebruiken, zoals Microsoft Intune. Gegevens die worden opgeslagen bij het afspelen van een app in een webbrowser zijn niet versleuteld.
Syntaxis
Gegevens opslaan( Verzameling, Naam )
LoadData( Verzameling, Naam [, NegeerNietBestaandBestand ])
- Collectie - Verplicht. De verzameling die moet worden opgeslagen of geladen.
- Naam - Verplicht. 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] )
- Naam - 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". |
Gegevens wissen() | 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.
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.
Voeg een besturingselement Text input toe en een besturingselement Camera en plaats ze ongeveer zoals in de afbeelding:
Voeg een besturingselement Button toe.
Dubbelklik op het besturingselement Button om de knoptekst te wijzigen in Item toevoegen (of wijzig de eigenschap Text).
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 } )
Voeg nog een besturingselement Button toe.
Dubbelklik op het besturingselement Button om de knoptekst te wijzigen in Gegevens opslaan (of wijzig de eigenschap Text).
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" )
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:
Voeg een derde besturingselement Button toe.
Dubbelklik op het besturingselement Button om de knoptekst te wijzigen in Gegevens laden (of wijzig de eigenschap Text).
Stel de eigenschap OnSelect van het besturingselement Button van deze formule in om onze verzameling te laden vanaf het lokale apparaat:
LoadData( MyItems, "LocalSavedItems" )
Voeg een besturingselement Gallery toe met een verticale indeling, met een afbeelding en tekstgebieden:
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:
Voor het afbeeldingsbesturingselement in de galerijsjabloon moet de standaardeigenschap Afbeelding worden ingesteld op ThisItem.Picture en voor de labelbesturingselementen moeten de standaardeigenschap Tekst worden ingesteld op ThisItem.Item. Controleer deze formules als u niets in de galerie ziet nadat u in de volgende stappen items hebt toegevoegd.
Plaats het besturingselement rechts van de andere besturingselementen:
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.
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.
Zodra uw app is gedownload, kunt u de verbinding met het netwerk verbreken en de app offline uitvoeren.
Voer de naam in en maak een foto van een item.
Selecteer de knop Item toevoegen. Voeg nog enkele items meer toe die u wilt uploaden naar uw verzameling.
Selecteer de knop Gegevens opslaan. Hierdoor worden de gegevens in uw verzameling opgeslagen op uw lokale apparaat.
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.
Start de app opnieuw. De verzameling in het geheugen wordt weer in de galerie weergegeven als leeg.
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.
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.
Meer geavanceerd voorbeeld voor offline werken
Een meer gedetailleerd voorbeeld vindt u in Canvas-apps ontwikkelen voor offline gebruik.