2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

キャンバスアプリでDataverseの関連レコードを一緒に保存する処理

Last updated at Posted at 2024-02-01

今回は、キャンバスアプリでDataverseの関連レコードを一緒に保存する処理について書きます。

image.png

一般的なキャンバスアプリでのリレーションの取り扱いについては以下をご参照下さい。

この記事の関連レコードを含めたデータの登録方法のセクションの応用です。

親テーブルのレコードを先に保存して、そのレコードに紐づいた子レコードの登録を同時に行うときには以下のような処理を書きます。
変数「myRecord」に親テーブルのGUIDを保存しています。
そのGUIDを子レコードのリレーションを保存する検索列に保存することで、紐付けをすることができます。

以下は、説明上一般的な値にしているので、それぞれテーブル名や列名などはご自身の値に設定して下さい。

//親レコードの新規追加
UpdateContext({myRecord: Patch(親テーブル, Defaults(親テーブル), 
{
    列1:値1
    ,列2:値2
}
)}
);

//子レコードの新規追加
ForAll(子レコードのアイテム,
    Patch(子テーブル, Defaults(子テーブル),
    {
        列1:値1
        ,列2:値2
        ,親テーブルとリレーションを組んだ検索列:myRecord
        }
        )
)
;

私の生のコードも置いておきます。ご参考までに
私はAI Builderの領収書処理モデルで読み取ったアイテムを子テーブルに分けて、領収書テーブルの1レコードに紐づける処理をしています。

UpdateContext({myRecord: Patch(領収書処理_1, Defaults(領収書処理_1), 
{
    業者名:MerchantNameResult.Text
    ,業者住所:MerchantAddressResult.Text
    ,業者電話番号:MerchantPhoneResult.Text
    ,日付:TransactionDateResult.Text
    ,小計:SubtotalResult.Text
    ,税額:TaxResult.Text
    ,合計:TotalResult.Text
}
)}
);

ForAll(ReceiptProcessor1.PurchasedItems,
    Patch(領収書アイテムテーブル, Defaults(領収書アイテムテーブル),
    {
        アイテム名:Name
        ,価格:Price
        ,数量:Quantity
        ,合計金額:TotalPrice
        ,領収書処理テーブル:myRecord
        }
        )
)
;

image.png

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?