"更新できません。 リンクされていないルックアップ フィールドがある場合、リンクされたSharePoint ビューに対するクエリのデータベースまたはオブジェクトが読み取り専用です

Symptoms

次のシナリオを考えてみましょう。

  • Microsoft Accessで作業しています。
  • リンクされたMicrosoft SharePoint ビューに対して更新クエリを実行します。
  • 更新する基になるリストには、現在のビューに含まれていないため、Access にリンクされていないルックアップ フィールドが含まれています。

このシナリオでは、次のエラー メッセージが表示されます。

更新できません。 データベースまたはオブジェクトは読み取り専用です。

原因

この問題は、ImportSharePointList マクロ アクション (Access 2016、以前は TransferSharePointList) を使用して Access のSharePoint listのビューにリンクするときに発生します。 このマクロは、SharePoint ビューの各参照列のリンク テーブルを Access に作成します。 ただし、更新クエリを実行すると、まず、すべての参照列に基になるリストのリンク テーブルがデータベース内に存在することを確認します。 更新クエリは、現在のクエリに含まれるルックアップだけを対象にチェックするわけではありません。

対処法

この問題を回避するには、次のいずれかの方法を使用します。

方法 1

基になるリスト内のすべての参照列をテーブルにリンクします。 その手順は次のとおりです。

  1. SharePoint list自体へのリンク。 これにより、基になるリストのすべての参照テーブルが Access 内に存在することが確認されます。
  2. Access でSharePoint listのリンク テーブルを削除します。 (参照列のリンク テーブルはそのままにします)。
  3. ImportSharePointList マクロ アクションを使用して、SharePoint ビューにリンクします。

これらの手順に従うと、Access には、SharePoint ビュー用のリンク テーブルに加えて、ビューに含まれるルックアップ列だけでなく、基になるリスト内のすべてのルックアップ列用のリンク テーブルが含まれます。

方法 2

Access 2010 でキャッシュを無効にします。 その手順は次のとおりです。

  1. Access で、[ファイル>オプション] を選択します。
  2. [ 現在のデータベース] を選択します。
  3. [キャッシュ Web サービス] 領域まで下にスクロールし、Microsoft SharePointテーブルを見つけます。
  4. [ キャッシュしない ] チェック ボックスをオンにします。

詳細情報

Access で SharePoint リストを使用するときに発生する既知の問題の詳細については、「SharePoint リスト/ドキュメント ライブラリのアクセス キャッシュ形式」を参照してください。

TransferSharePointList マクロの詳細については、「 TransferSharePointList マクロ アクション」を参照してください。