Help us understand the problem. What is going on with this article?

#PowerApps キャンパスアプリでリレーションシップ付エンティティを操作する

Common Data Service 第3弾(笑)

最近 CDSばっかり連投していないかって?
それなりに理由がありますが、それはおいおいTwitterにて。

さて今回は

PowerAppsでリレーションシップ付エンティティを操作する方法です。
リレーションシップが付いたエンティティは、モデル駆動型だと
それはそれはものすごーく楽勝に使えるので
ホントめちゃくちゃリレーションはりまくりになるのですが
キャンパスアプリだと、ちょーっと癖がありますので
以下に纏めます。

CDSのエンティティ

#MicrosoftFlow で CommonDataService の 特定レコードを操作する方法
こちらと同じエンティティを使用します。

image.png

image.png

PowerAppsでのデータ更新方法には二通りあります

Form

Formオブジェクトを使用したやり方ですね。
image.png

とりあえずこういう風に読み込んでみましょう
image.png

なぜか数式エラーが・・・

image.png

これですね。
どうもCDSを読込ませると、こんな風に数式エラーが出てしまいます。

Nameの数式エラー

image.png

MaxLengthプロパティがなんかおかしいよ?って言ってきています。
これには曖昧性除去演算子を使用してデータソースを指定する必要があるようです。

Thanks Mina!!

なので、このように書き換えます。

DataSourceInfo([@cds_relation_updt_tbl], DataSourceInfo.MaxLength, "crc70_name")

これで、Nameの数式エラーが消えました。
image.png

ユーザーの数式エラー

これも、調べた結果、曖昧性除算演算子を使うことで対処することができます。
発生している箇所はItemsプロパティですね。
image.png

このように書き換えます。

Choices([@cds_relation_updt_tbl].crc70_SystemUser)

あとは、表示させたいフィールドを適宜選択することで
選択項目を自由に設定することができるようになります。

image.png

Patch関数

もう一つは、Patch関数を指定するやり方です。
こちらは、自分で好きなようにフォームをカスタマイズしたいときに重宝します。

image.png

ドロップダウンボックス

ドロップダウンボックスのItemsには、Formの時と同様のパラメータを指定します。

Choices([@cds_relation_updt_tbl].crc70_SystemUser)

そして、Valueにて、一覧として表示する項目を指定します。
image.png

送信ボタン

OnSelectにPatch関数を使用します。
以下のように記述すると良いでしょう。

Patch(
    cds_relation_updt_tbl,
    Defaults(
        cds_relation_updt_tbl
    ),
    {
        Name:TextInput1.Text,
        crc70_SystemUser:Dropdown1.SelectedText
    }
)

※Patch関数の詳しい使い方は以下のリファレンスをご確認ください。
https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/functions/function-patch

最後に

Formの数式エラーについては、今後改善される可能性があります。
改善されると、上記で記載したことをすることなく、より簡単に利用することができると思いますので、それまでの間は上記の対応にて回避してください。

rnakamuramartiny
No Bike(Motorcycle) No Life! バイクをこよなく愛する中年エンジニアです。 福岡市を中心にクラウド製品コンサルを主にやってます。 本Qiitaではそれらに携わることで出てきた問題点やその解決法などを共有できたらなぁと
http://sentreseau.com
sentreseau
お客様の業務に最適なDXソリューションをご提案しています。
http://sentreseau.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした