現象
次のような状況で問題が発生します。
- Microsoft Access で作業しています。
- リンクされた Microsoft SharePoint ビューに対して更新クエリを実行します。
- 更新する基になるリストには、現在のビューに含まれていないため、Access にリンクされていない参照フィールドが含まれています。
このとき、次のエラー メッセージが表示されます。
データベースまたはオブジェクトは読み取り専用なので、更新できません。 (エラー 3027)
原因
この問題は、ImportSharePointList マクロ アクション (Access 2016 以前は TransferSharePointList) を使用して、Access の SharePoint リストのビューにリンクするときに発生します。 このマクロは、SharePoint ビューの参照列ごとに Access にリンク テーブルを作成します。 ただし、更新クエリを実行すると、まず、すべての参照列に基になるリストのデータベースにリンク テーブルがあることを確認します。 更新クエリでは、現在のクエリの一部である参照のみがチェックされません。
回避策
この問題を回避するには、次のいずれかの方法を使用します。
方法 1
基になるリスト内のすべての参照列をテーブルにリンクします。 これを行うには、次の手順を実行します。
- SharePoint リスト自体にリンクします。 これにより、基になるリストのすべての参照テーブルが Access 内に存在することを確認します。
- Access で SharePoint リストのリンク テーブルを削除します。 (参照列のリンク テーブルはそのままにします)。
- ImportSharePointList マクロ アクションを使用して SharePoint ビューにリンクします。
これらの手順を実行すると、Access には、SharePoint ビューのリンク テーブルと、ビューに含まれる参照列に対してのみではなく、基になるリスト内のすべての参照列のリンク テーブルが含まれます。
方法 2
Access 2010 でキャッシュを無効にします。 これを行うには、次の手順を実行します。
- [アクセス] で、[ファイルオプション] を選択します>。
- [ 現在のデータベース] を選択します。
- [ Web サービスのキャッシュ ] 領域まで下にスクロールし、Microsoft SharePoint テーブルを見つけます。
- [ キャッシュなし ] チェック ボックスをオンにします。
詳細情報
Access で SharePoint リストを使用するときに発生する既知の問題の詳細については、「SharePoint リスト/ドキュメント ライブラリのキャッシュ形式にアクセスする」を参照してください。
TransferSharePointList マクロの詳細については、「 TransferSharePointList マクロ アクション」を参照してください。