Hejto.pl
Dodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

Wpis użytkownika DerMirker w Programowanie

Autorytet

w Programowanie

1piorunów

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?

Komentarze (5)

Autorytet0piorunów

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

Debiutant1piorunów

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

Autorytet1piorunów

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

Zawodowiec1piorunów

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

Autorytet1piorunów

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