Tworzę sobię aplikację w MS PowerApps. Chcę, by w formularzu, przy wybraniu z listy rozwijalnej określonego człowieka, aplikacja sama uzupełniała wartość w kolumnie na Sharepoincie, sformatowanej jako choice, gdzie są do wyboru adresy mailowe. Napisałem coś takiego, funkcja UpdateIf.
UpdateIf(
'NazwaListy',
KolumnaZCzlowiekiem = "Jan Nowak"
{
KolumnaZMailemCzlowieka: jannowak@mail.com
}
)
Co robię źle? #programowanie #microsoftpowerapps #powerapps #naukaprogramowania
2 błędy:
-
The function 'UpdateIf' has some invalid arguments
-
Behavior function in a non-behavior property. You can't use this property to change values elsewehere in the app
@DerMirker Wygląda na to, że w powyższym kodzie używasz funkcji UpdateIf w niepoprawny sposób. UpdateIf jest funkcją, która pozwala na aktualizowanie rekordów w tabeli na podstawie pewnych warunków. W Twoim przykładzie używasz UpdateIf do przypisania wartości jannowak@mail.com do kolumny KolumnaZMailemCzlowieka w tabeli 'NazwaListy', jeśli wartość kolumny KolumnaZCzlowiekiem jest równa "Jan Nowak".
Warto zauważyć, że jeśli chcesz ustawić konkretną wartość w kolumnie na Sharepoincie przy wyborze określonej opcji z listy rozwijalnej, to należy to zrobić za pomocą kontrolki listy rozwijalnej i formuły OnSelect.
Nie jest jasne dlaczego próbujesz użyć funkcji UpdateIf. Jeśli chcesz zmienić inne pole w aplikacji zależnie od wyboru z listy rozwijalnej, to należy użyć formuły OnSelect w połączeniu z funkcją Patch/Update/Collect.
@Meverth Rozumiem. W moim przypadku UpdateIf nie zadziała, ponieważ nie ma takiego rekordu w tabeli na Sharepoincie. Rekord zostanie stworzony dopiero po naciśnięciu przycisku Submit i wykonaniu instrukcji OnSubmit.
Rozumiem też, że komendę muszę zawszeć w OnSelect przy moim dropdownie (comboBoxie).
Z tego co wiem, instrukcje Patch i Update działają też na stworzonych już rekordach. Czy się mylę? W moim przypadku rekord jest dopiero tworzony w formularzu i tworzę go OnSubmit'em.
@DerMirker jeśli dobrze rozumiem Twój przypadek to zasugerowałabym trochę inne podejście. Ludzie i majle się zmieniają, więc z punktu widzenia developera lepiej jest trzymać tego typu informacje w osobnej tabeli / na osobnej liście SP, którą będzie mógła edytować osoba odpowiedzialna za proces, a nie deweloper za każdym razem jak nastąpi zmiana. Zatem dla przykładu:
-
tworzymy listę SP "Validation" zawierającą dwie kolumny [Title] oraz [Option]. [Title] zawiera imiona i nazwiska, [Option] zawiera odpowiadające im adresy mailowe
-
Na liście SP dodajemy dwie kolumny [Name], która jest LookUpem i zaciąga wartości z listy Validation oraz [Mail], która jest zwykłym SingleLineOfText
-
W aplikacji dodajemy nowe źródło - "Validation"
-
W aplikacji do głównej listy SP dodajemy dwa nowo dodane pola
-
Pole "Name" powinno mieć z defaultu w Items ustawione Choices({NazwaListy}.Name), a więc tego nie ruszamy,
dla pola "Mail" jako Default ustawiamy LookUp(Validation, Title = {NazwaPolaZawierającegoImieNazwiskoNaFormie].Selected.Value, Option) To pole najlepiej byłoby ustawić jedynie jako View
No i oczywiście trzebaby pilnować, żeby [Title] był unikatowy, a więc każda wartość w [Title] miała tylko jedną odpowiadającą wartość [Option]
PS, Tak wiem, że ponad 20 dni od wpisu no ale może jednak będzie dla kogoś pomocne
@wronka hej! Dziękuję za tak szczegółowe przedstawienie rozwiązania. Choć z problemem już sobie poradziłem, to twoja sugestia jest zdecydowanie bardziej praktyczna. Jednak na moim obecnym poziomie znajomości MS PowerApps jeszcze trudna do zaimplementowania.
Zaloguj się aby komentować