Access でインデックスを含むメモ フィールドに大量のテキストを入力すると、「実行時エラー '3709"」

中程度: 基本的なマクロ、コーディング、相互運用性のスキルが必要です。

この記事は、Microsoft Access データベース (.mdb) ファイルまたは Microsoft Access データベース (.accdb) ファイルに適用されます。

現象

Microsoft Access データベースで、インデックスを含むメモ フィールドを作成するとき、または自動的にインデックスが作成されたテキストを含むフィールド名を作成する場合、約 3450 文字を超えるテキストをフィールドに入力することはできません。 フィールドにさらにテキストを入力しようとすると、または既存のデータを編集しようとすると、次のエラー メッセージが表示されます。

Run-time error '3709':

The search key not found in any record.

解決方法

メモフィールドに大量のテキストを入力する必要がある場合は、メモフィールドのインデックスを削除します。 これを行うには、次の手順を実行します。

  1. デザイン ビューでメモ フィールドを使用してテーブルを開きます。

  2. [表示] メニューの [インデックス] をクリックします。

    メモMicrosoft Office Access 2007 で、[デザイン] タブをクリックし、[表示/非表示] グループの [インデックス] をクリックします。

  3. [メモ] フィールドのインデックスをクリックし、削除します。

状態

Microsoft は、この記事の冒頭に記載されている Microsoft 製品の問題であることを確認しました。

詳細

この動作は、Microsoft Access 2000 より前のバージョンの Microsoft Access では発生しません。これは、Jet 3.5 以前ではメモ フィールドのインデックスを作成できなかったためです。

Access 2003 で動作を再現する手順

  1. 新しいデータベースで、次のプロパティを持つ新しいテーブルを作成し、Table1 として保存します。

    Table: Table1
    ------------------------
    Field Name: Id
    Data Type: AutoNumber
    Primary Key
    
    Field Name: MyCode
    Data Type: Memo
    
  2. Table1 テーブルに次のレコードを追加します。

    Id MyCode
    ------------------------------------
    1 This is the Memo test data
    
  3. 次の SQL ステートメントをコピーし、SQL ビューの新しいクエリに貼り付けて、クエリを query1 として保存します。

    UPDATE Table1 SET Table1.MyCode = [MyCode] & " " & [MyCode];

  4. 次のモジュールを作成し、Module1 に保存します。

    Sub TestMemoUpdate()
        Dim i As Integer
        Docmd.setwarnings false
        For i = 1 To 10
        Docmd.openquery "Query1"   
        Next i
        Docmd.setwarnings true
    End Sub
    
    
  5. ポインターをプロシージャ内に配置します。 F5 キーを押してコードを実行します。