Se si usa Power Apps con SharePoint Online i campi di tipo ComboBox, ad esempio Choice o Lookup, vengono correttamente gestiti quando si usa il controllo Forms.

La stessa cosa non avviene con un connettore a SQL Server dove le relazioni uno a molti non vengono risolte automaticamente, vanno configurate a mano.

Aggiunta campo

Ad esempio in una situazione come questa, collegando il controllo Forms alla tabella Questions
schema DBschema DB
e aggiungendo il campo TeachingDetailId
Aggiunta campoAggiunta campo
questo viene riconosciuto come un campo di tipo numerico, senza tener contro della relazione con la tabella TeachingDetails
Tipo numericoTipo numerico
il campo viene visualizzato come una TextBox che accetta solo numeri.

Modalità di visualizzazione

Fortunatamente è possibile cambiare la modalità di visualizzazione cliccando sui tre puntini (more Actions) scegliendo il template Allowed values
Modalità DropDownModalità DropDown
in questo modo il campo verrà visualizzato come un controllo di tipo DropDown
anche se non ancora configurato.

Configurazione DataCard

Per completare la configurazione è necessario fare l'unlock della DataCard in modo da poter modificare le proprietà Update e AllowedValues
UnlockUnlock
inserendo i valori corretti in base alla sorgente dati
ValoriValori
in particolare AllowedValues dovrà contenere la formula che ricava i dati da visualizzare dalla tabella TeachingDetails
Power Apps
AllowedValues = SortByColumns(TeachingDetails, "Name", Ascending)
Va prima aggiunta la tabella TeachingDetails alle sorgenti dati disponibili.
mentre Updates dovrà contenere il campo chiave della tabella preso dal controllo di tipo DropDown dalla DataCard corrente
Power Apps
Updates = DataCardValue33.Selected.TeachingDetailId

Configurazione DropDown

In ultimo va configurata la DropDown (DataCardValue33) per mostrare nell'elenco il campo desiderato, in questo caso Name
Campo visualizzatoCampo visualizzato

Risultato

Il risultato è questo
Risultato finaleRisultato finale
e sul database verrà salvato l'Id corrispondente.

Aggiornamento (Default)

Attenzione nell'esempio riportato sopra non funziona la valorizzazione della DropDown quando viene letto il valore esistente dal database (modalità di edit).
Questo perché la DropDown non si basa sul campo chiave della tabella (TeachingDetailId), ma solo con il valore visualizzato (Name)
Campo visualizzatoCampo visualizzato
quindi la proprietà Default va impostata con un espressione di questo tipo usando la funzione LookUp
Power Apps
Default = LookUp(TeachingDetails, TeachingDetailId = ThisItem.TeachingDetailId).Name
Attenzione, se si hanno delle voci duplicate identiche non funziona, vanno rese univoche lo voci visualizzate .
In alcuni caso ho dovuto impostare la proprietà Default direttamente sulla DropDown anziché sulla DataCard

Aggiornamento 2 (AllowedValues)

Sembrano esserci problemi quando la chiave della tabella non è di tipo intero ma è, ad esempio, stringa.

In questo caso nella proprietà Items della DropDown non si può usare l'espressione Parent.AllowedValues ma bisogna impostarla direttamente
Power Apps
Items = SortByColumns(TeachingDetails, "Name", Ascending)
la proprietà AllowedValues può essere lasciata blank.
Settaggi finaliSettaggi finali
Potrebbe interessarti anche: