Microsoft Accessをクラウドで運用するには、Azure SQL を使ってデータベースを共有する

いままで Microsoft Access を使ってシステムを作成してきたのですが、遠隔地間でデータ共有を行うことは大変困難なことでした。

私が作成する小規模な業務システム（パソコン台数5～10台程度）は、Access の VBA で作成しています。そのため、今まで作成したシステムをクラウドで動作するようにするには、php言語などで作成する方法になります。そうするとほとんどのプログラムコードを書き替えないといけません。

![image](https://qiita-image-store.s3.amazonaws.com/0/93227/37b014d1-ec92-733a-c7ba-b5452941437f.png)

Webアプリ用の言語は、HTMLとCSS程度しかわからない私は、1年前からphp言語の勉強を始めることにしました。


そうして思ったことを「**JavaとJavaScriptの違いもわからないままphp言語の勉強はじめてわかったこと**」としてブログにつぶやいています。お時間の許す方は、お立ち寄りください。
http://excel-databace.hatenablog.com/entry/java_javascript

結局のところ、phpからASP.NETを経て、Access・ExcelとAzure SQLで運用する結論に至りました。現在では、100社ほどのユーザー様にご利用いただいております。

### 現在のプログラムを活用して、Access をクラウド化する。

以前は、SharePointで Access Database を共有していましたが、現在では、Azure SQL Database で共有しています。

【SharePoint から Azure SQL Database に変更した理由】
１．すべての端末PCに、Office 365 の アカウントが必要
２．ローカルPCの処理と SharePoint の更新に微妙なずれがありレコードが競合することがある。
３．データベースの移動作業の作業料が多い。

# Azure SQL Database で、共有する場合

Azure SQL Database を利用して共有したアプリが、［クラウドデータベース GANSO］です。
内容につきましては、逐次紹介していきます。

[![20181018_1.png](https://qiita-image-store.s3.amazonaws.com/0/93227/4298e743-85f2-541f-83cc-1f50ce8f4f31.png)](https://ganso.hatenablog.jp/)

以下に、SharePointで共有する方法を記載していますが、あまりお勧めはしません。
［クラウドデータベース Ganso］を公開しましたので、上のリンク先からダウンロードしてください。


# SharePointで共有する場合

## ・要望
１．いままでのプログラムコードをできるだけ再利用する。
２．システムやデータの移行が簡単に行える。
３．サーバーなどの運用環境の構築やランニングコストをできる限り抑える。

## ・現在のシステム運用環境
１．拠点ごとのパソコン台数は、5台程度
２．遠隔地の拠点数は、3拠点程度（現在VPNは構築していない）合計15台で運用
３．運用中のデータベースは、SQLデータベースとAccessのデータベースがローカルごとに混在している

## ・今後のシステム運用環境
１．ローカル環境で Windows Server は使わない。データ共有は NAS に Access のデータベースを置いて運用する。
２．遠隔地間で共有するデータは、Office365 の Share Point Online を利用する。
３．フロントツールは、Microsoft Access を使用して Office365 の Share Point Online リンクテーブルを使用する。
４．VPN の構築と One Drive の利用を比較検討

### Access のリンクテーブルは下図のような感じになります。
通常のリンクテーブルと同じようにOffice365のSharePointのカスタムリストにリンクテーブルを作成します。
![image](https://qiita-image-store.s3.amazonaws.com/0/93227/f99713f9-93d0-3d69-3efa-8a6cd26cd585.png)

### Office365のSharePointでは下図のように管理されています。
リンクテーブルは、Office365のサイトコンテンツとして管理されています。
![image](https://qiita-image-store.s3.amazonaws.com/0/93227/027de93f-5093-960c-6da8-690a8981e9e7.png)


このような方法だと、プログラムコードは現在の VBA をほぼ再利用でき、システムの移行作業も簡単です。ただし、それぞれのパソコンにはAccessが必要になりますが、Microsoft から無料で配布されているMicrosoft Access 2013 ランタイム版で実行することができます。

▼例えば、Office365で作成したテーブルをAccessにリンクするには、
![image](https://qiita-image-store.s3.amazonaws.com/0/93227/25c157d8-9853-3c6c-58a3-44d4a56f7c6b.png)

Office365の作成したサイトを指定して
![image](https://qiita-image-store.s3.amazonaws.com/0/93227/e90d7f15-8e08-8452-0cc2-d1dbf7448d53.png)

リストをクリッックするだけでリンクテーブルが作成されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/93227/129e5615-52b1-9787-74bd-9e26947c5bbd.png)
こんなに簡単に業務システムをクラウド化できるのに、なぜ皆さんやらないのでしょうか？


今後の業務システムでは、クラウド環境で運用することは当然のごとく必須条件です。いままでの VBA のプログラムでは限界があるのですが、どのようにして低コストでシステムをクラウド環境に移行するかポイントになります。

Office 365 や Azure を利用して、移行することが望ましいと思います。

# SharePoint から、Azure SQL データベースに移行しました。
Shrepoint を使って、2年ほど運用してきましたが、データベースをWebで活用するのがいま一つ大変なので、Azure SQL データベースに変更しました。

大きな理由は、次の点です。

1. ASP.NET で データベースを活用できない。
2. ユーザーが、Office 365 の Sharepoint を利用できるアカウントが必要になる。
3. Sharepoint のカスタムリストを他のアカウントに移動する場合の多くの作業時間が必要になる。


# AccessとExcelを連携してクラウドシステムを作成する
データベースをAzure SQL にセットして、AccessやExcelのプログラムから データベースを遠隔地間で共有するシステムを公開しています。

[<img src="https://qiita-image-store.s3.amazonaws.com/0/93227/1e640f8b-edfd-2b4e-aafe-ce96a835dd7b.png" width=70%>](http://access-cloud.hatenablog.com/entry/database)
http://access-cloud.hatenablog.com/entry/database

[![image.png](https://qiita-image-store.s3.amazonaws.com/0/93227/a0f2b31e-825b-3198-58dc-3552beaad50b.png)](https://qiita.com/muramoto_jp/items/8e68d0df0507825d214c)