Patch関数の引数型の不一致について

ホーム フォーラム Power Apps 初心者向け Patch関数の引数型の不一致について

  • このトピックには4件の返信、2人の参加者があり、最後にkazu0316により3年、 1ヶ月前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #5756
    kazu0316
    参加者
    Up
    -1
    Down
    ::

    お世話になります。 今月から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の登録を削除すれば正常に動作するのですが、型の指定が変なのかいまいち解決方法が分かりません。
    文字のみの羅列で非常に分かりにくいかもしれませんが、何か解決方法が御座いましたらご教示いただけますと幸いです。

    #5758
    馬場拓真(@taku_ma_ru)
    キーマスター
    Up
    1
    Down
    ::

    おそらくエラーの表示どおり、レコード型が必要なところにテキスト型が配置されているのだと思います。

    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 を外してみてはいかがでしょうか?

    #5759
    kazu0316
    参加者
    Up
    1
    Down
    ::

    馬場様

    早速のご回答ありがとうございます。
    ご指摘いただいた方法を試してみましたが、今度は変更部に
    「この引数’Unit’の型は必要な型’Text’と一致しません。見つかった型’Record’」
    「Patchに無効な引数が含まれていると」
    と表示されてしまいました。
    エラーとなっているUnit以外は全てテキスト入力で、Unitの定義を削除すると他の項目は正常に
    Masterformに出力できております。。
    Unitの候補は添付の通りSharepointでListupしておりますが、こちらの設定の仕方が問題となる可能性も
    御座いますでしょうか?

    #5761
    馬場拓真(@taku_ma_ru)
    キーマスター
    Up
    0
    Down
    ::

    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))})

    質問の最初に添付されているコレクションの画像に関しては、テキスト形式になっており、添付画像のようにレコード(テーブル)形式になっていないことが原因と思われます。

    #5765
    kazu0316
    参加者
    Up
    0
    Down
    ::

    馬場様

    お返事が遅くなり申し訳ございません。
    その後、再度Sharepointの列を定義してみましたが、同様の問題は解決できませんでしたが、
    以下の方法で回避は出来ました。
    1.Sharepoint側を1行テキストにする。
    2.PowerApps側の単位のDropdown ListのItemから各種単位を行列方式で格納
    3.Patch関数で一時格納時はddlUnit.Selected.Value
    以上とすることで、Patch関数に値の格納まで動作を確認する事が出来ました。
    自身のコードだとSharepointの形式を選択肢とした場合に相性が悪かったようです。

    まずは、この方法で進めつつ自身のスキルがもう少し上がった段階で回避方法を
    考えたいと思います。

    ご親切に色々とアドバイスいただきありがとうございました。

5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • このトピックに返信するにはログインが必要です。
ツールバーへスキップ