ホーム › フォーラム › Power Apps › 初心者向け › Patch関数の引数型の不一致について
-
投稿者投稿
-
2021-03-15 00:39 #5756kazu0316参加者::
お世話になります。 今月からPowerappsをちょくちょく触って勉強し始めました。
書籍(ひと目でわかる Power Apps)をベースに購買申請のアプリを試験的に作成しておりますが、
分からないことがあり投稿させていただきました。概要としてはSharepointのListで購買概要と購買明細の2つのListを作成して、二つのリストから関連するデータ登録・操作するものです。
動作としては
1.購買明細をDetailColというコレクション1アイテムにつき1行設け一時格納
2.最後に購買概要含めForAllにてMaterForm一括登録、SubmitFormにて送信するものです。
上記動作の際に2のMasterForm一括登録時にドロップダウンリストを用いている引数の型が一致せずに登録できない状態となっております。
ERROR内容は「この引数’Unit’の方は必要な型’Record’と一致しません。見つかった型’Text’」この購買明細の中に単位というドロップダウンリスト(ddlUnit)を使用してます。 ドロップダウンリストはSharepointのList登録されたものを
ItemプロパティでChoices(購買明細.Unit)と指定して読み取ってます。
1の一時格納時はPatch(DetailCol,ThisItem,{SideNo:txtSideNo.Text,Unit:ddlUnit.Selected.Value,Supplier:txtSupplier.Text,Total:Value(txtTotal.Text)})
でコレクション内に複数の値が格納されていることを確認しました。(添付画像)
その後、2の登録にてMasterFormのOnSuccessプロパティを
ForAll(DetailCol,
Patch(購買明細,Defalts(購買明細),
{サイドNo:SideNo, 単位:Unit, 発注先:Supplier, 合計:Total}))
とした際に上記で説明したエラーが発生しております。このUnitの登録を削除すれば正常に動作するのですが、型の指定が変なのかいまいち解決方法が分かりません。
文字のみの羅列で非常に分かりにくいかもしれませんが、何か解決方法が御座いましたらご教示いただけますと幸いです。2021-03-15 16:56 #5758馬場拓真(@taku_ma_ru)キーマスター::おそらくエラーの表示どおり、レコード型が必要なところにテキスト型が配置されているのだと思います。
Patch(DetailCol,ThisItem,{SideNo:txtSideNo.Text,Unit:ddlUnit.Selected.Value,Supplier:txtSupplier.Text,Total:Value(txtTotal.Text)})
この部分ですが、Patch(DetailCol,ThisItem,{SideNo:txtSideNo.Text,Unit:ddlUnit.Selected,Supplier:txtSupplier.Text,Total:Value(txtTotal.Text)})
tと Value を外してみてはいかがでしょうか?2021-03-16 00:37 #5759kazu0316参加者2021-03-17 09:22 #5761馬場拓真(@taku_ma_ru)キーマスター::kazu0316 様
指定方法に間違いはなさそうに見えますね….
当方でも、 SharePoint に 選択肢 Unit のみのカスタムリストを作成し、実行してみましたが、問題なく動作しました。
その時使っていた式が以下になります。Patch(Sample001,Defaults(Sample001),{Title:GUID(), Unit:First(Choices([@Sample001].Unit))})
上の例では First で取得していますが、 DropDown を利用する場合は、以下のようになります。
Patch(Sample001,Defaults(Sample001),{Title:GUID(), Unit:Dropdown1.Selected})
また、この式を以下のようにコレクションに追加すると添付ファイルのような見た目になります。
ClearCollect(sampleCol,{Title:GUID(), Unit:First(Choices([@Sample001].Unit))})
質問の最初に添付されているコレクションの画像に関しては、テキスト形式になっており、添付画像のようにレコード(テーブル)形式になっていないことが原因と思われます。
2021-03-20 22:55 #5765kazu0316参加者::馬場様
お返事が遅くなり申し訳ございません。
その後、再度Sharepointの列を定義してみましたが、同様の問題は解決できませんでしたが、
以下の方法で回避は出来ました。
1.Sharepoint側を1行テキストにする。
2.PowerApps側の単位のDropdown ListのItemから各種単位を行列方式で格納
3.Patch関数で一時格納時はddlUnit.Selected.Value
以上とすることで、Patch関数に値の格納まで動作を確認する事が出来ました。
自身のコードだとSharepointの形式を選択肢とした場合に相性が悪かったようです。まずは、この方法で進めつつ自身のスキルがもう少し上がった段階で回避方法を
考えたいと思います。ご親切に色々とアドバイスいただきありがとうございました。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。