2

Access 2007 でクエリを実行しています。何ヶ月も問題なく動作していましたが、突然 "レコードセットは更新できません" というエラーが表示されます。最近の変更によってエラーが発生したに違いないと考えて、アーカイブされたバージョンに戻りました (definitley が機能していた) - それらはすべて同じエラーを吐き出しています。テーブル自体は更新可能です。実際、同じテーブルに対する別のクエリは問題なく機能します。私のクエリを壊すために突然何が起こった可能性がありますか? コードは次のとおりです。

    SELECT Prospects.Company, Contactnames.*, IIf([Prospects]![Key Contact]=[ContactID],True,False) AS [Key Contact], Prospects.Status
FROM Contactnames INNER JOIN Prospects ON Contactnames.CompanyID=Prospects.ID
WHERE (((Prospects.Status) Not Like "Duplicate"));

どんな助けでも大歓迎です。ありがとう、オリ。

4

2 に答える 2

5

リンクされた ODBC テーブルを使用している場合、クエリを更新可能にするには、すべてのテーブルの主キー フィールドをクエリに含める必要があります。ここにいくつかの潜在的な「落とし穴」があります:

  • Access は、リンクされた ODBC テーブルの主キー フィールドを正しく認識しない場合があります。多くの場合 (常に?) Access は、(インデックス名のアルファベット順に基づいて) テーブルで最初に見つかった一意のインデックスを選択し、インデックスが主キーであると想定します。
  • MS SQL Server (およびおそらく他の RDBMS) のテーブルにレプリケーションを追加すると、一意のインデックスを持つ GUID 列が追加されます。上記の点に加えて、これにより、リンクされたテーブルが実際とは異なる主キーを持っているとAccessが考える可能性があります
  • ODBC リンク テーブルのデザインに加えられた変更は、Access に自動的に反映されません。リンクされた ODBC テーブルは、[ツール] --> [データベース ユーティリティ] --> [リンクされたテーブル マネージャー] を介して更新できます... (他の方法の中でも特に)
于 2012-07-02T14:52:53.347 に答える
0

変更されたのはクエリではなく、データベースである可能性があります。

データベース ファイルが書き込み保護されていないことを確認してください。それはそのエラーメッセージを引き起こします。

于 2012-07-02T13:40:44.820 に答える