記事公開日
【Power Platform】Dataverse の「状態」列と「ステータス」列について

Dataverseのテーブル作成時に、「状態(statecode)」列と「ステータス(statuscode)」列が自動的に生成されますが、表記や意味が似ているため使い分けづらいと感じたことはないでしょうか。
実は、「状態(statecode)」列はカスタマイズができないのですが「ステータス(statuscode)」列はカスタマイズができるという違いがあり、2つの列を使いこなすことで各データの管理を行うことができます。
この記事では、2つの列を用いたデータ管理や削除方法についてご紹介します。
「論理削除」と「物理削除」 について
一般的にデータの削除方法は「論理削除」と「物理削除」の2つがあります。
削除方法 | 論理削除 | 物理削除 |
概要 | データベースからは削除せず、削除フラグがあるデータを非表示にすることで、ユーザからは削除されているように見せること | データベースからデータそのものを削除すること |
メリット | ・データの削除・復元が容易 ・データの完全性を保つことができる |
・ストレージの使用量を抑えやすい ・データベースの処理能力が向上する可能性がある |
デメリット | ・ストレージの容量を圧迫しやすい ・データベースの処理能力に影響がでやすい |
・削除されたデータの復元はできない ・データ分析において削除されたデータを考慮できない |
今回は「状態」列と「ステータス」列を用いて、Dataverseのデータを論理削除します。
Dataverseの場合、論理削除にあたる操作のことを「非アクティブ化」と言います。
「状態」列と「ステータス」列
「状態」列と「ステータス」列について
前提として、テーブル作成時に自動で「状態」列と「ステータス」列が生成されます。
・状態列(statecode)
・ステータス列(statuscode)
各フィールドは列の生成時に以下のように設定されます。
状態(statecode) | ステータス(statuscode) |
アクティブ | アクティブ |
非アクティブ | 非アクティブ |
列の生成時に設定される値ではなぜ「状態」「ステータス」という、似た項目が用意されているか分かりにくいため、物品購入の承認フローに当てはめて考えます。
状態(statecode) | ステータス(statuscode) |
アクティブ | 申請書の起票 |
申請部門承認済み | |
経理部門承認済み | |
差し戻し | |
非アクティブ | 決裁 |
申請取り消し |
このように、「状態」という大きな区分(アクティブ/非アクティブ)に対応して、細かな区分を「ステータス」から選択するということが「状態」と「ステータス」の使い方です。
状態・ステータス列のカスタマイズについて
前提として「ステータス」列はカスタマイズできますが、「状態」列はカスタマイズできません。
また、「ステータス」列はカスタマイズ可能であるため、「ステータス」列を使用する際は、テーブル毎に設定値が アクティブ/非アクティブ であるのかカスタマイズされているのか確認が必要です。
詳細は、Microsoft Learnの Table definitions in Microsoft Dataverse 参照してください。
前段から自動で設定される値では状態とステータス列を活用しづらいため、Dataverseテーブルから列のカスタマイズを行います。
ステータス列のカスタマイズ
ステータス列は以下のカスタマイズができます。
・ローカル選択肢の編集
・ステータス遷移の編集
2025年6月現在、PowerAppsのモダンUIからは「ローカル選択肢」の編集のみ可能です。
選択肢の作成と編集の詳細については 選択列の作成と編集の概要 を参照してください。
別途、PowerAppsのクラシックUIからは「ローカル選択肢」と「ステータス遷移」の編集が可能です。
PowerAppsのソリューション表示画面から「クラシックに切り替える」を選択することで モダンUI → クラシックUI に変更ができます。
以下の手順を行うことで「ローカル選択肢」の編集が可能です。
以下の手順を行うことで「ステータス遷移」の編集が可能です。
ステータス遷移の詳細については ステータスの遷移の編集 を参照してください。
[ステータスの移行]の有効化にチェックを入れ、「新しいステータス」に遷移先のステータスを設定することで、物品購入承認フローのステータスは設定した経路でのみ遷移するよう管理ができます。
Dataverseの論理削除
前段から状態とステータスの遷移が可能になりました。
それでは、本記事の冒頭でお話ししたDataverseで論理削除を行った場合、どのような動作をするのかご紹介します。
モデル駆動型アプリでは各申請データが表示されており、「ICカード発注申請」は経理部門承認済みで決裁を待つ状況です。
決裁が下り、申請は承認されたため当該のレコードは論理削除(非アクティブ化)します。
論理削除(非アクティブ化)後は「アクティブな物品購入承認フロー」から表示されなくなりますが「非アクティブな物品購入承認フロー」では表示されているため、データが物理削除されずに残っていることが確認できます。
なお、論理削除(非アクティブ化)されたレコードを再度アクティブ化させることも可能です。
※補足
キャンバスアプリからもPatch関数を用いることで論理削除は可能です。
以下画像のように、ボタンの押下を契機にレコードの非アクティブ化を行う場合、「状態」を非アクティブに、「ステータス」を非アクティブに紐づいた選択肢を設定する必要があります。
Dataverseを確認するとレコードが「非アクティブ」に変更されています。
「状態」のアクティブ・非アクティブに紐づいていない「ステータス」を設定しようとした場合、以下画像のようにエラーが発生するため注意が必要です。
まとめ
今回は、Dataverse の「状態」列と「ステータス」列の違いや論理削除(非アクティブ化)についてご紹介しました。
Dataverseのテーブル作成時に標準で用意される列を用いるだけで、各レコードの状態が追跡可能となるため、新たな列を追加しなくてもデータの管理が容易となります。
また、モデル駆動型アプリやキャンバスアプリを例に論理削除の動きを確認しましたが、クラウドフローやビジネスルールを用いて自動化させることも可能です。
開発要件に合わせた実装方法を検討いただければと思います。
QES では Power Platform の開発支援、QAサポート、開発者教育、ガバナンス整備など、組織で Power Platform を活用するためのサポートを包括的にご提供しています。Power Platform 活用についてご興味がある/利用中だが課題を感じていらっしゃるお客様はまずはお気軽にお問い合わせください。
このブログで参照されている、Microsoft、Windows、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。