0
0

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.

【Excelアドイン】データの書き戻し機能を使用してみる

Last updated at Posted at 2022-10-13

Sharperlightにおいては、データソース(データベース、Excelワークシート、APIエンドポイント等)からデータを抽出するというのが原則ですが、書き戻し(Writeback)許可を設定することでデータソースへのデータの書き戻し(Writeback)を行うことができます。
今回は、Excelアドインを使用して、シート上のデータをデータベースに書き戻してみようと思います。

データベース/テーブルの準備

既存の試験データベースにLedger(帳簿)テーブルなるものを作成しました。このテーブルに対してExcelワークシートのデータを書き込んでいきたいと思います。
image.png

データモデルの準備

まずSharperlightがデータソースと対話できるようにデータモデルを作成します。
この試験データベースに対しては既にデータモデルを作成していたので、今回追加したテーブルの情報だけを反映させたいと思います。
Sharperlightアプリケーションメニューからスタジオを起動します。
フォルダアイコンで対象データモデルを探します。
image.png
ToolsメニューのサブメニューStudio Connectionメニューを選び、正しく対象データベースに接続されているかを確認します。
image.png
image.png
確認が済んだら'Schema'メニューのImport Tablesメニューを選択します。
image.png
Get Tablesボタンをクリックすると、接続しているデータベースからスキーマ情報が読み込まれます。既にデータモデルに読み込まれているテーブルについては赤色で表示され、まだ読み込まれていない新しいテーブルについては黒色で表示され、チェックも入った状態になります。
image.png
OKボタンを押すと、チェックの入ったテーブルの情報がデータモデルにインポートされます。
image.png
新しくインポートされたテーブルは、All Tablesノードの下に表示されています。
image.png
このままでは、クエリビルダ等からは見えない設定なので、新しいテーブルLedgerテーブルをTable Displayノードへ移動させます。ドラッグ&ドロップで移動できます。
Table Displayノードに移動したLedgerテーブルを選択すると、右側にテーブルのプロパティ一覧が表示されます。その中からAllow Table Writebackプロパティを探し出し、Trueを設定します。
image.png
これでこのテーブルにはデータの書き戻しを行うことができるようになりました。これは単にこのテーブルには書き戻しができるよ~っていう許可であり、他にもユーザー単位で許可/未許可の設定を行うこともできます。
あとDescriptionプロパティに帳簿と日本語で記入します。
image.png
今度は、Ledgerテーブルをダブルクリックすると中央にはフィールド一覧が表示され、そのフィールドを選択するとそのフィールドのプロパティが右側に表示されるようになります。それぞれのフィールドのDescriptionプロパティを日本語に置き換えます。
image.png
全て終わったらOKボタンでデータモデルを保存します。

データの準備

Excelワークシート上にこのようなデータを準備します。
image.png
列名は、データモデルのフィールドDescriptionと合わせておくといいですよ。

書き戻し定義の作成

では書き戻しの定義を行います。Sharperlight Excelアドインのリボンから書き戻しを選択します。
image.png
書き戻し定義ダイアログが表示されます。製品には先ほどのデータモデルを、テーブルには先ほどの帳簿テーブルを選びます。
下部フィールドタブに帳簿テーブルのフィールド一覧が表示されます。ここでExcelシート上のデータとフィールドのマッピングを行います。
image.png
コードフィールドの入力テキストフィールドを選択した状態で、Excelシートのテーブル内をダブルクリックします。すると自動マッピング機能が働き、このようなメッセージが表示されます。Yesボタンを押して先に進みます。
image.png
データテーブルの列名とデータモデルのDescriptionが一致する場合のみマッピングが設定されます。
image.png
マッピングが設定されていないフィールド、たとえば請求に対しては、その入力テキストフィールドを選択した状態で、Excelシート上の請求額列をダブルクリックします。すると先ほどと同じメッセージが表示されるので、今度はNoボタンを選択します。そうすることで個々のフィールドのマッピングを行うことができます。
image.png
image.png
Idフィールドは、IDENTITYフィールドなのでIdがデータベースによって自動算出されるのでマッピングは不要です。
Idの左横に星印が付いていますね。これはSharperlightエンジンがこの列のデータをガイドとして使用し、どの行までデータが存在するかをチェックするためのものです。しかし、この機能はマッピングがされていないフィールドには設定できません。よって今回はコードフィールドにこの機能を設定します。コードフィールドを選択して右クリックメニューからドライバーを選択します。
image.png
最後に書き戻し名に帳簿と入力します。閉じるボタンで定義を保存すると、この名前で保存されます。
image.png
これで定義は完了。

検証

プレビューボタンを押して、マッピングの設定どおりエンジンが正しくデータを拾っているかチェックしてみます。
image.png
プレビューとログが表示されます。ログをみると分かりますが、書き込みは行われていません。この機能はあくまでも正しくデータが拾われているかのチェックのみです。
image.png
検証ボタンは、プレビューなしのデータ収集チェックです。ログだけが表示されます。
image.png
以上で上手くデータが拾えていることが確認できたので、実行ボタンで書き戻しを実行します。
image.png
ログが表示され、正しく実行されたことが分かりました。
image.png
データベーステーブルを確認してみます。正常に書き込みが行われていました。:thumbsup_tone1:
image.png

データの更新と追加

Excelシート上のデータを更新します。
最下行にコード S011 という新しいレコードを追加します。またコード S006 のレコードの入金額と残高を更新します。
image.png
この状態で再度書き戻しを実行すると、新しいレコードは追加され、変更があったレコードは更新されます。

書き戻しボタンの作成

今回は、書き戻しダイアログを開いて実行ボタンを押すのではなく、ボタンを追加して書き戻しを実行します。
ボタンを配置したい位置のセルを選択した状態でSharperlightリボンのボタン->書き戻し->mdWriteBackを選択します。
image.png
書き戻し定義一覧が表示されるので、今回作成した定義 帳簿 を選択し、OKボタンを押します。
image.png
書き戻し専用のボタンが追加されました。
image.png
ではこのボタンを押して書き戻しを実行します。
早速データベースをチェック、正しく更新することができました。
image.png

では、失礼します。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?