Koledzy, dajcie mi jakąś wskazówkę, co robię źle, bo już nie wiem.
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
DerMirker

2 błędy:

  1. The function 'UpdateIf' has some invalid arguments

  2. Behavior function in a non-behavior property. You can't use this property to change values elsewehere in the app

Meverth

@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.

DerMirker

@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.

wronka

@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:

  1. tworzymy listę SP "Validation" zawierającą dwie kolumny [Title] oraz [Option]. [Title] zawiera imiona i nazwiska, [Option] zawiera odpowiadające im adresy mailowe

  2. 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

  3. W aplikacji dodajemy nowe źródło - "Validation"

  4. W aplikacji do głównej listy SP dodajemy dwa nowo dodane pola

  5. 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

DerMirker

@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ć