Power Platform: App Maker Challenge, deel 24

Ingediend door Dirk Hornstra op 07-jun-2022 14:39

Het vierentwintigste deel, verwachte tijd: een kleine drie kwartier.
Dit deel gaat over keuze-kolommen van Dataverse in formules.

Vaak heb je lijsten met data die niet zo vaak wijzigt (lijst met landen, keuzelijst van prioriteit).
Hiervoor heeft Dataverse 2 type kolommen, choice en choices.
Bij choice kun je 1 waarde kiezen, bij choices meerdere.

Je kunt bij een lijst instellen of deze lokaal of globaal gebruikt kan worden.

  • Local choice lijsten worden opgeslagen bij de kolom waarin ze gedefinieerd zijn.
  • Globale opties kunnen gebruikt worden in meerdere kolommen in dezelfde tabel of in verschillende tabellen.


Advies is om voor globaal te gaan en alleen in uitzonderlijke gevallen voor lokaal te kiezen.

De aanroep is ook een beetje anders:

  • Lokaal: 'Priority(Accounts)'.High
  • Globaal: 'Priority'.High


Bij het opslaan van de data wordt niet de data opgeslagen, maar het nummer (positie in de lijst).
Bij een choice-veld kun je in een label de ThisItem.Category gebruiken om de tekstwaarde te tonen (onder water zal de ToString() ervoor zorgen dat de tekst gebruikt wordt).
Bij een choices-veld moet het iets anders, Concat(ThisItem.'Preferred Delivery',Text(Value),", ")

Je moet op een bepaald moment de keuze maken of je een choice-kolom gebruikt of een lookup kolom.
Bij een choices-kolom had je ook een many-to-many relatie kunnen gebruiken.

Daar zijn een aantal oorzaken/redenen voor en die wordt in tabelvorm getoond:

Choice or choices   Lookup or many-to-many relationship
List modified by maker, no user editing   List is only table data and normal security applies
Data stored as a whole number (choice) or a comma-separated list of numbers (choices)   Data stored as a table reference
No built-in way to inactivate or retire choice   Supports inactive state on row and can be filtered by formulas in app to limit selection
Treated as a solution component with full ALM support   Treated as reference data
Only has label and value, and only label is useable in formulas (for example, filter and sorting only on display label)   Can add other data to a look-up target table that can be used in formulas (for example, filter and sorting on any column that is added to table)
Localization built in   Handle localization yourself
No built-in support of dependent choice columns   Easier to data model and implement dependent columns, info hier: link.

Nadat je de kolom aangemaakt hebt kun je het data-type niet meer aanpassen!

Er worden nog wat voorbeelden getoond met choice/choices.
Zo ook de Patch functie. Het voorbeeld om met een druk op een knop een Organisatie een "VIP" te maken: Patch(Accounts, ThisItem,{Category:'Preferred Customer'}

En ook het "wissen" van zoekcriteria, zodat alles weer getoond wordt: Patch(Accounts, ThisItem, {Category:Blank()}}

Hierna krijgen we een 5-tal oefeningen te zien. Zoveel hebben we nog nooit in 1 pagina gezien.
Dat komt ook omdat het een canvas is (veel zaken instellen), uiteindelijk zijn het niet heel veel acties.
Tabel maken, choice en choices velden toevoegen en zaken koppelen.

Hierna volgen de vragen. Hoe kun je de mogelijke opties bij een choice veld opvragen? Ik dacht dat Choices() een strikvraag/antwoord was, omdat het een ander type veld is. Maar met Choices() vraag je dus wel de mogelijke opties op van een choice-veld