前回の記事では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件のコメント