CDSのエンティティデータをExcelで編集する(2)


前回の記事ではCDSのエンティティデータをExcelから編集する方法を紹介しました。今回はこの更新処理の裏側を見てみます。

ざっと前回をおさらいします。

該当のエンティティを選択。 

エンティティに存在するレコードは「データ」タブで確認できます。

表示項目が少ないのでビューを切り替えます。

「全てのフィールド」ビューを選択。

全項目表示されました。「Excelでデータ編集」ボタンをクリックすると、、

Excelがダウンロードされますので開きます。

編集を有効にします。

認証を求められた場合は上記CDSにサインインしたユーザーで認証を通します。
すると以下のようにExcelにデータが表示されます。

Excelを開いた状態で Alt + F11 を押します。(両方のキーを同時に押してください。)
すると、以下のようにVBAのエディターが開きます。左上のツリー構造を見るとシートが2つ存在することが分かります。一つ目のシートはプロパティがVisibleになっていますが、、

2つ目のシート「data_cash」はプロパティがhiddenになっています。つまり非表示シートになっています。これを表示させます。

プルダウンから「-1- xlSeetVisible」を選択します。(ちなみに元の値の「2- xlSheetVeryHidden」はExcelシートで「シートを表示」機能を使用しても表示されない強力なシート非表示です。)

Excelに戻るとシートが表示されています。A1セルに警告が表示されています。(警告に書いてある通り、シートを削除すると動かなくなります。)

データのセルを見ると、ODataでJsonを投げているっぽいです。

ためしに1件、データを追加登録してみます。左側で適当に1行追加して、「公開」をクリック。

データの追加に成功しました。

data_cacheシートを見ると、1件データが追加されていることが分かります。セルの中身を見ると、確かに追加したデータです。

さて、ここでコネクタの歯車アイコンをクリックしてみます。

オプション設定のダイアログが開きました。

スクロールして下の方に行くと、「データコネクタ」というセクションがあるので、開きます。

「デザインの有効化」というオプションがオフになっているのが分かります。

チェックONにしてOK。

すると「デザイン」のボタンが追加されました。

「デザイン」ボタンを押す前に、シートを追加します。

改めてデザインボタンをクリック。

すると、以下のようなダイアログが開きます。どうやら、他のテーブルを追加できる様です。(下線部は、現状で「与信限度ランク」のエンティティとつながっていることを示しています。)
「+テーブルの追加」をクリック

接続を追加するエンティティをプルダウンから選びます。(プルダウンを押して、他の追加可能なエンティティを確認してみてください。)初期値はAccount(取引先)が設定されていると思います。今回は初期値のままAccountを使用します。「次へ」ボタンをクリック。

Accountエンティティのフィールドが一覧表示されますので、フィールドを選びます。

今回は「取引先企業」「取引先企業名」の2つのフィールドを選びます。(全部選んでも構いません。Ctrl + aで全部選べます。)
下の「+追加」をクリックすると、、

選択したフィールドが追加されます。「完了」をクリックします。

データを取得すると上書きされる旨の警告が出ますが、上書きされて困るものは無いので「はい」を選択。

選択した2つのフィールドがExcelシートに追加されました。「完了」をクリック。

データレコードが表示されないですね。。「更新」を押してみます。

エラーになりました。。更新対象のデータ数が多いのが原因と表示されていますが、実は違います。試しに「フィルターの編集」からデータを絞ってみます。

フィルターフィールドの追加をクリック。

フィルター項目としてレコード作成日を選択。

フィルターの値として本日日付を選択。(この日付で登録したレコードはありません。未来日付だとなお分かり易いです。)日付を指定して「完了」をクリック。

「更新」ボタンを押すとフィルター条件を満たすレコードが取得されるはずです。

が、エラーになります。

この現象(不具合ないし、開発中の機能)はおそらくExcelアドインのCDSコネクタの問題です。いずれ解消されると思われます。そう考える理由はDynamics 365 Business Central に同様の機能があり、そちらではテーブル追加が出来ているからです。それについては別の記事「D365BCのデータをExcelから更新する(3)」をご参照ください。

1件のコメント

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です