Microsoft Office

Access データベースを SharePoint と統合する

Peter Serzo

 

概要:

  • Access と SharePoint を統合するメリット
  • Access データを SharePoint に移行する
  • SharePoint を使用して Access の機能を拡張する

エンド ユーザーに Microsoft Office SharePoint Server (MOSS) 2007 の話をするときには、必ず彼らが使用しているツールとその使用方法を確認します。ほぼ間違いなく、

組織の中のだれかは、必要不可欠なビジネス ニーズに対応するために Microsoft® Office AccessTM を使用しています。多くの企業において、Access は、今もなお有効なツールであり、重要な資産です。

MOSS 2007 では、Access ベースのアプリケーションを活用し、それらのアプリケーションを SharePoint® に統合して、はるかに優れた新しいソリューションを作成する方法を提供します。この記事では、MOSS と Access を統合する方法とそのタイミング、エンド ユーザーが、これらの 2 つの製品を構成してソリューションを作成する方法に重点を置いて説明します。

MOSS が Access との統合にもたらす基礎となるテクノロジには、ワークフロー、共通のリポジトリ (SQL Server®)、および Web ベースのインターフェイス (ブラウザ) があります。SharePoint の機能には、ドキュメントの管理、ワークスペース、カスタム リストの設定、組み込みのワークフローや Web パーツを使用する機能があります。組み込みのワークフローと Web パーツを使用すると、イベントの公開、連絡先リストや案件リストの作成、ユーザーが作成したフォームの管理など、ありとあらゆる処理に対応できます。また、使い慣れていて、使いやすい Office テクノロジが採用されている点で、エンド ユーザーが、ツールを使いこなせていると感じる度合いが高くなります。この後で説明しますが、MOSS は現在使用している既存のソリューションに影響しません。それどころか、アプリケーションを記述し直す必要がなく、エンド ユーザーは、技術的な問題ではなく、業務上の問題解決に注力できるので、MOSS の導入により作業効率が向上します。

メリットがあるのはエンド ユーザーだけではありません。社内の至るところにあるカスタム データベースの管理に関してエンド ユーザーをサポートするという問題に取り組んでいる IT 部門や IT 管理者にもメリットがあります。記憶域の制限、複数のユーザーによるアクセス、セキュリティ、破損したデータベースの修復、Web の使用、互換性のない Access のバージョン、複数のデスクトップ コンピュータに変更を展開するなどの、具体的な問題が発生するまで、Access がミッション クリティカルなビジネスの問題を解決するのに使用されていることを知らないユーザーは少なくありません。SharePoint には、このような問題への対応策が用意されています。

Access には制限事項がありますが、特に業務でコードを記述しない人にとっては、強力で使いやすいツールです。Access では、構成可能なリレーショナル テーブル、シンプルなクエリ (と複雑なクエリ)、ドラッグ アンド ドロップに対応したフロントエンドのフォーム作成ツール、データに基づいたレポート、複数のユーザーを構成する機能に 1 つの場所からアクセスできます。Access と SharePoint ベースのソリューションを作成することは、資産と人材をプールすることを望んでいる組織にとっても、長年にわたって作成および培ってきたアプリケーションとスキルを活用することを望んでいる個人にとってもメリットがあります。

はじめに

Access 2007 には、MOSS 2007 と統合するためのいくつかのオプションが用意されています。このようなオプションには、図 1 に示すように、SharePoint リストからのデータのインポート、SharePoint サイトへのデータの発行、SharePoint リストの作成、SharePoint データを外部ソースとして使用、Access データベースを新しい SharePoint サイトまたは既存の SharePoint サイトに移行、SharePoint データへのオフライン アクセスを行うものがあります。

Figure 1 SharePoint と統合するための Access 2007 のわかりやすいエントリ ポイント

Figure 1** SharePoint と統合するための Access 2007 のわかりやすいエントリ ポイント **(画像を拡大するには、ここをクリックします)

最初の作業としては、Access テーブルから SharePoint リストを作成するのがお勧めです。SharePoint リストは Access のテーブルとよく似ています。SharePoint リストは SQL Server のコンテンツ データベースに格納され、ある一定のフィールド属性があり、ルックアップをサポートしています。

SharePoint リストを作成するときには、覚えておいた方がよい注意事項があります。まず、最適なパフォーマンスを実現するには、1 つのビューで表示するアイテムの数を 2,000 個に制限することがマイクロソフトにより推奨されています。また、SharePoint では、参照整合性が維持されません。そして、OLE オブジェクトは SharePoint にエクスポートされず、データの検証に制限があります。

Access テーブルから SharePoint リストを作成するには、[外部データ] タブを選択し、[エクスポート] の [SharePoint リスト] ボタンをクリックします。次に、このリストがアクティブになる SharePoint サイトを指定する必要があります。これには、[エクスポート - SharePoint サイト] ダイアログ ボックス (図 2 参照) で必要なデータを入力するか、テーブルを右クリックし、[SharePoint リストにエクスポート] をクリックします。テーブルが、リレーションシップの子である場合、親テーブルもエクスポートされることに注意してください。

Figure 2 Access データを指定した SharePoint サイトにエクスポートする

Figure 2** Access データを指定した SharePoint サイトにエクスポートする **(画像を拡大するには、ここをクリックします)

エクスポートの処理が完了すると、同じ手順を繰り返さなくて済むように、エクスポートの手順を保存するオプションが提示されます。この時点で、SharePoint サイトにアクセスして、アップロードしたデータを確認できます。この単純な操作は、Access のデータを SharePoint に移行して、ユーザーがアクセスできるようにする場合に役立ちます。この移行により、データは SQL Server データベースに格納され、情報にはブラウザ経由でアクセスできるようになるので、セキュリティが強化され、簡単にアクセスできるようになるというメリットがあります。

しかし、SharePoint リストを Access のテーブルとしてリンクするという別の操作の方が、Access と SharePoint を統合するより効率的な方法であることがわかりました。この操作を行うには、Access で [外部データ] タブをクリックし、[インポート] の [SharePoint リスト] ボタンをクリックします。このボタンをクリックすると、図 3 のようなダイアログ ボックスが表示されます。

Figure 3 Access を SharePoint にリンクする

Figure 3** Access を SharePoint にリンクする **(画像を拡大するには、ここをクリックします)

リンク対象のデータ ソースとして使用する SharePoint リストを含むサイトを選択してから、リンクするリストを選択します。Access では、この操作が完了すると、SharePoint リストはリンクされたテーブルとして表示されます。また、Access の右下隅には、"SharePoint とオンライン接続" というインジケータが表示されます。この時点では、Access と SharePoint の間では双方向の同期が行われるようになり、SharePoint と Access のどちらからでも追加、変更、および削除の操作を行うことができます。この後で説明しますが、テーブルに対してコードを記述することで追加機能を提供できます。

Access で SharePoint リストにリンクすると、別のテーブル (Windows® SharePoint Services (WSS) ユーザー情報リスト) も既定でインポートおよびリンクされます。"SharePoint サイトへの移動に関する問題" という名前の問題のテーブルが作成されます。このテーブルでは、データに関する競合情報を確認できます。

データの移行と変換時のデータ型の処理方法の詳細については、「Access が Access と SharePoint 間でデータ型を変換する方法」(office.microsoft.com/en-us/access/HP010477131033.aspx) と、「Access データベースのテーブルを SharePoint サイトに移行およびリンクする」(office.microsoft.com/en-us/access/HA101314681033.aspx) の移行に関する制限事項について説明しているセクションを参照してください。

テーブルとリストを統合する 3 つ目の方法は、SharePoint 側から行う操作です。リストを選択し、[操作] タブの [Access で開く] をクリックします。この操作により、新規または既存のデータベースの名前を指定するダイアログ ボックスが表示されます。データベース名を指定したら、データを単に SharePoint サイトにリンクするのか、データを Access に完全エクスポートするのかを選択します (図 4 参照)。

Figure 4 Access から SharePoint データにアクセスできるようにする

Figure 4** Access から SharePoint データにアクセスできるようにする **(画像を拡大するには、ここをクリックします)

データベースを SharePoint に移行する

ここまでは、SharePoint リストをリンクされたテーブルとしてインポートし、テーブルを SharePoint にリストとしてエクスポートする処理について説明しましたが、データベース全体にアクセスする必要がある場合は、どうしたらよいでしょうか。多くの組織では、Access ベースのミッションクリティカルなアプリケーションを所有しており、そのような Access アプリケーションをリモートで使用できるようにして、各ユーザーがレポートやクエリを実行したり、データを入力したりできるようにする必要があります。このような場合は、経済的にも、利用できるスキルによっても、アプリケーションを記述し直すことが適切な処置とは限りません。SharePoint と Access では、Access の [SharePoint リスト] タブにある [SharePoint に移動] オプションで、この問題に対応しています。このオプションは、Access 97 で初めて導入された、アップサイジング ウィザードを使用して SQL Server にデータを移動する機能と似ています。

Access データベース全体を SharePoint に移動するメリットは、すべてのテーブルが SharePoint リストに変換され、バックアップが Access データベース形式で作成され、リストが自動的に Access にリンクされたテーブルに変換され、テーブルだけでなくデータベース全体を移動でき、データベースが移動前と同様に動作することです。

[SharePoint に移動] ボタンをクリックすると、図 5 に示すダイアログ ボックスが表示されます。サイトを指定したら、データベースを保存するオプションを選択するかどうかを決める必要があります。このオプションを選択すると、データベース全体が選択したドキュメント ライブラリに保存されます。つまり、データベース全体 (フォーム、レポート、クエリ、およびマクロを含む) が、SharePoint に保存され、サーバーで利用できるようになります。ユーザーがデータベースにアクセスする必要がある場合は、データベースが保存されているライブラリにアクセスして、データベースをクリックすると、データベースは自動的にそのユーザーのデスクトップに展開されます。

Figure 5 データベースの移動先となる SharePoint サイトを指定する

Figure 5** データベースの移動先となる SharePoint サイトを指定する **(画像を拡大するには、ここをクリックします)

データベース全体を移動すると、リボンの下に [変更内容の発行] メッセージ バーが表示されます。このメッセージ バーを使用すると、ローカルでデザインとデータに加えた変更内容をサーバーにあるデータベースと同期できます。このオプションを選択しない場合、テーブルは単にリストに変換され、Access にリンクされます。また、ユーザーはデータベース全体にアクセスすることはできず、データベースは SharePoint でオブジェクトとしてバックアップされません。

どちらかのオプションを選択すると、データベースとその関連情報は、選択した SharePoint サイトで利用できるようになります。ここでも、"SharePoint サイトへの移動に関する問題" という名前のテーブルが自動的に作成されます。このテーブルには、移行に起因する競合情報が格納されます。SharePoint サイトにテーブルをアップロードしているときに Access 側で発生した問題については、このテーブルで確認できます。

ビュー、フォーム、およびレポート

データベースを移動したら、移動したデータベースの機能をテストする必要があります。テストを開始する前に "SharePoint とオンライン接続" というインジケータが表示されていることを確認します。Access クエリは SharePoint ビューに変換されていることに注意してください。SharePoint ビューは Access クエリとよく似ています。

データベース全体を移動すると、既存のクエリはビューとして SharePoint にコピーされます。Access ユーザーであれば、クエリを記述してデータのサブセットを確認できることはご存知だと思いますが、これと同じ処理を SharePoint ビューで行う方法を習得すると、SharePoint リストでデータがどのように管理されているのかを理解するのに役立ちます。

ユーザーが作成できる最も有益なビューは、アクセス ビューです。このビューを作成するには、ビューを作成するリストに移動し、[ビュー] を選択し、[ビューの作成] をクリックします。この操作により、リストに基づいてフォームやレポートを作成するアクセス ビューのオプションが表示されます。このオプションをクリックして、Access データベースを選択すると、図 6 に示すようなダイアログ ボックスが表示されます。ご覧のとおり、このダイアログ ボックスでは、形式 (フォーム、ピボットグラフ、ピボットテーブル、またはレポートの種類) を定義します。この処理が完了すると、Access データベースにリンクされたフォームまたはレポートが作成されます。

Figure 6 アクセス ビューを作成する

Figure 6** アクセス ビューを作成する **(画像を拡大するには、ここをクリックします)

オフライン アクセス

実世界では、ミッションクリティカルなアプリケーションの処理範囲を広げることは、投資収益につながります。統合された Access と SharePoint ベースのアプリケーションの処理範囲を拡大する 1 つの方法は、アプリケーションを使用するのに SharePoint に接続している必要がないことを認識することです。このような柔軟性を活用するために、Access 2007 ではオフライン作業の機能が導入されました。情報は、サーバーにアタッチされるまで、ローカルにあるデータベースのコピーにキャッシュされます。データベースをオフラインで作業するには、リボンの [外部データ] タブにある [SharePoint リスト] の [オフライン作業] ボタンをクリックします。

SharePoint に再接続する際には、[オンライン作業] または [同期] のどちらかのオプションを選択できます。どちらのオプションを選択した場合も、データがアップロードされ、競合情報が提示されますが、[同期] をクリックすると、データはアップロードされますが、アプリケーションではオフラインの状態が維持されます。

[SharePoint リスト] グループにあるアイテムで紹介すべきものは、[変更を破棄] で、これには 2 つのオプションがあります。1 つ目のオプションは、すべての変更を破棄しますが、Access に格納されている SharePoint データは更新しません。これに対して、2 つ目のオプションでは、すべての変更を破棄して、SharePoint データ (リンクされたリスト) を更新します。

Access テンプレート

Access 2007 には、ユーザーがビジネス ソリューションを迅速に作成するのに役立つ、いくつかの組み込みのテンプレートが用意されています。ご覧のように、ソリューションは、[作成] タブの [テーブル] グループにある [SharePoint リスト] ボタンをクリックして作成できます (図 7 参照)。テンプレートを選択すると、SharePoint にリンクされたテーブルのスキーマが自動的に定義されます。現時点では、連絡先、タスク、案件、およびイベントのみがサポートされています。つまり、これらの種類の情報を含むテーブルをエクスポートすると、データは対応する WSS のコンテンツ タイプに変換されます (たとえば、案件は案件リストになります)。

Figure 7 リストの種類を選択する

Figure 7** リストの種類を選択する **

また、SharePoint リストに使用できるカスタム テンプレートを作成したり、自動的にリンクする Access 2007 データベースを使用して SharePoint サイトを作成できます。これには、Access 2007 Developer Extensions とテーブルに WSSTemplateID を設定することが必要です。このプロパティでは、SharePoint リスト テンプレートに相当するものを含むテーブルを追跡します。

Access とメタデータ

さまざまな機能を備えた Access アプリケーションを使用している企業では、すべての Access アプリケーションを SharePoint に移動することができたり、移動することを希望しているとは限りません。このような場合は、Access 側でコードを記述して SharePoint を更新するのが適しています。コードを使用すると、SharePoint と Access を連結できます。

簡単な例として、Northwind Traders のデータベースを使用して説明しましょう。このデータベースには、製品、仕入先、受注に関する情報が格納されています。通常、各製品には、業者が .pdf ファイル形式で提供している製品シートが関連付けられています。Access データベースには、場所、製品番号、リビジョン履歴、企業の部門コードなど、製品シートに含まれているすべての情報が格納されています。この情報は、SharePoint エクストラネットを経由して仕入先と業者が利用できる必要があります。

SharePoint サイトは設定され、すべてのドキュメントはリンクされたドキュメント ライブラリに移動されますが、メタデータ フィールドは空のままです (図 8 参照)。これは、データが Access で追跡されていることが原因です (また、この情報を監視している担当者は、Access を使用する操作に慣れているため、それを変更することに乗り気でないからです)。

Figure 8 SharePoint で表示した Northwind ドキュメント (メタデータがありません)

Figure 8** SharePoint で表示した Northwind ドキュメント (メタデータがありません) **(画像を拡大するには、ここをクリックします)

図 9 に示すように、Visual Basic® for Applications (VBA) コードを使用して、Access アプリケーションからメタデータを更新できるので、アプリケーションを記述し直す必要はありません。従業員は、これまでどおり使い慣れているツールを使用することができ、業者は与えられた権限に基づいてエクストラネットにアクセスできます (権限は各業者に適切な情報のみが提供されるようにするために必要です)。また、同時接続やデータベースのサイズに関する問題が発生することはありません。

Figure 9 コードを使用してメタデータを更新する

Figure 9** コードを使用してメタデータを更新する **(画像を拡大するには、ここをクリックします)

組み込みのセキュリティ機能

Access アプリケーションを SharePoint に移動することの最大のメリットは、Active Directory® 認証が組み込まれている SharePoint のセキュリティ モデルを活用できることです。つまり、スキーマとテーブルを作成して、ユーザーを追加するなど、Access アプリケーションにセキュリティを実装する方法について悩む必要がなくなります。SharePoint リストを使用すると、ユーザーに許可されているものだけが表示されるようにするセキュリティ調整を活用できます。これは、SharePoint の組み込み機能です。また、SharePoint に移動しないことが望ましいコンポーネントは、移動する必要がありません。

SharePoint には、詳細な役割ベースのセキュリティ モデルが用意されています。データベースの移動方法と移動先を決める際には、移行の前にサイトとセキュリティをデザインすることをお勧めします。このような手順を踏むと、権限の設定とテストを簡単に行えます。また、移行時の問題も少なくなり、Access データベースのパフォーマンスが効率的になります。

参照整合性

参照整合性に言及しなければ、この記事はその役割を怠っているということになるでしょう。実のところ、Access と異なり、SharePoint では参照整合性が維持されません。多くの Access データベースでは、ある程度の正規化が行われています。というのも、ミッション クリティカルな Access データベースが機能するには、ある程度の正規化が行われている必要があるからです。さいわいにも、既存のシステムへの機能強化として解釈できるいくつかの回避策があります。

データベースを SharePoint に移動する際に、子テーブルを移動すると親テーブルも移動されるということについては既に説明しました。また、SharePoint では、フィールドの値が別のテーブルに基づいていることが認識されると、ルックアップ フィールドが使用されます。たとえば、顧客が選択されていて、注文が Northwind Traders データベースに格納されたとしましょう。これらのテーブルを SharePoint に移動すると、受注リストでは、顧客フィールドがルックアップ フィールドになります。

更新または削除した内容を転送したり、複雑な操作を行う必要がある場合については、どうでしょうか。このような場合は、ソリューションの 1 つとして SharePoint とそのワークフローを検討することをお勧めします。Northwind Traders データベースの話に戻りますが、顧客から連絡があって、既存の注文がキャンセルされると、それに伴い、いくつかの操作が行われます。在庫を元に戻し、仕入先に連絡し、その注文を担当している従業員は顧客に対応し、発送をキャンセルし、課金情報を更新する必要があります。この操作では、多くのパーツを移動したり、多くのものを調整したりする必要があります。

SharePoint では、SharePoint デザイナを使用すると、注文の状態が変更されるとすぐに、前述のすべての処理を行うワークフローを作成できます。組み込みのワークフローが 22 個あり、これらを組み合わせて数百もの操作を実現できます。SharePoint デザイナは、サイトに商標を付ける作業とワークフローを作成する作業のどちらにも役立つ優れたツールです。

最も良いことは、SharePoint デザイナを使用してワークフローを作成するのに必要なスキルに、Access でプログラミングを行う方法を把握しているユーザーに馴染みのあるスキルが含まれていることです。つまり、Access アプリケーションを作成していたユーザーは、それほど努力をする必要なく自分が持っているスキルをワークフローの作成に活かすことができます。SharePoint デザイナを使用してワークフローを作成する際にはコードを記述する必要はなく、ワークフローは簡単に展開できます。

Peter Serzo は CDW Berbee に勤務しているシニア エンジニアです。彼は世界各地の企業が SharePoint エンタープライズ ソリューションを作成するサポートをしています。

© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; 許可なしに一部または全体を複製することは禁止されています.