"Błąd czasu wykonywania '3709'" po wprowadzeniu dużej ilości tekstu w polu Notatka, które zawiera indeks w programie Access

Umiarkowane: wymaga podstawowych umiejętności w zakresie makra, kodowania i współdziałania.

Ten artykuł dotyczy pliku bazy danych programu Microsoft Access (.mdb) lub pliku bazy danych programu Microsoft Access (.accdb).

Symptomy

W bazie danych programu Microsoft Access podczas tworzenia pola Notatka zawierającego indeks lub utworzenia nazwy pola zawierającej automatycznie indeksowany tekst nie można wprowadzić do pola tekstu zawierającego więcej niż około 3450 znaków. Podczas próby wprowadzenia większej ilości tekstu do pola lub próby edytowania istniejących danych zostanie wyświetlony następujący komunikat o błędzie:

Run-time error '3709':

The search key not found in any record.

Rozwiązanie

Jeśli w polu Nota musisz wprowadzić dużą ilość tekstu, usuń indeks pola Nota. Aby to zrobić, wykonaj następujące kroki:

  1. Otwórz tabelę z polem Nota w widoku projektu.

  2. W menu Widok kliknij pozycję Indeksy.

    Uwaga W programie Microsoft Office Access 2007 kliknij kartę Projektowanie , a następnie kliknij pozycję Indeksy w grupie Pokaż/Ukryj .

  3. Kliknij indeks pola Nota, a następnie usuń go.

Stan

Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych na początku tego artykułu.

Więcej informacji

To zachowanie nie występuje w wersjach programu Microsoft Access przed programem Microsoft Access 2000, ponieważ nie można indeksować pól not w programie Jet 3.5 lub starszym.

Kroki odtwarzania zachowania w programie Access 2003

  1. W nowej bazie danych utwórz nową tabelę z następującymi właściwościami, a następnie zapisz ją jako tabelę Table1:

    Table: Table1
    ------------------------
    Field Name: Id
    Data Type: AutoNumber
    Primary Key
    
    Field Name: MyCode
    Data Type: Memo
    
  2. Dodaj następujący rekord do tabeli Table1:

    Id MyCode
    ------------------------------------
    1 This is the Memo test data
    
  3. Skopiuj następującą instrukcję SQL, wklej ją do nowego zapytania w widoku SQL, a następnie zapisz zapytanie jako zapytanie query1:

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

  4. Utwórz następujący moduł, a następnie zapisz go w module 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. Umieść wskaźnik tak, aby był w procedurze. Naciśnij klawisz F5, aby uruchomić kod.