"Laufzeitfehler '3709'", wenn Sie eine große Textmenge in ein Memo-Feld eingeben, das einen Index in Access enthält

Moderat: Erfordert grundlegende Makro-, Programmier- und Interoperabilitätskenntnisse.

Dieser Artikel bezieht sich auf eine Microsoft Access-Datenbankdatei (.MDB) oder eine Microsoft Access-Datenbankdatei (.ACCDB).

Symptome

Wenn Sie in einer Microsoft Access-Datenbank ein Memo-Feld erstellen, das einen Index enthält, oder wenn Sie einen Feldnamen erstellen, der den automatisch indizierten Text enthält, können Sie den Text, der mehr als 3450 Zeichen enthält, nicht in das Feld eingeben. Wenn Sie versuchen, mehr Text in das Feld einzugeben oder versuchen, die vorhandenen Daten zu bearbeiten, wird die folgende Fehlermeldung angezeigt:

Run-time error '3709':

The search key not found in any record.

Lösung

Wenn Sie eine große Textmenge in das Feld Memo eingeben müssen, löschen Sie den Index für das Feld Memo. Führen Sie hierzu die folgenden Schritte aus:

  1. Öffnen Sie die Tabelle mit dem Feld Memo in der Entwurfsansicht.

  2. Klicken Sie im Menü Ansicht auf Indizes.

    Hinweis Klicken Sie in Microsoft Office Access 2007 auf die Registerkarte Entwurf, und klicken Sie dann in der Gruppe Einblenden/Ausblenden auf Indizes.

  3. Klicken Sie auf den Index für das Feld Memo, und löschen Sie es.

Status

Microsoft hat bestätigt, dass dies ein Problem in den Microsoft-Produkten ist, die am Anfang dieses Artikels aufgeführt sind.

Weitere Informationen

Dieses Verhalten tritt in Microsoft Access-Versionen vor Microsoft Access 2000 nicht auf, da Memofelder in Jet 3.5 und früher nicht indiziert werden konnten.

Schritte zum Reproduzieren des Verhaltens in Access 2003

  1. Erstellen Sie in einer neuen Datenbank eine neue Tabelle mit den folgenden Eigenschaften, und speichern Sie sie dann als Tabelle1:

    Table: Table1
    ------------------------
    Field Name: Id
    Data Type: AutoNumber
    Primary Key
    
    Field Name: MyCode
    Data Type: Memo
    
  2. Fügen Sie der Tabelle Table1 den folgenden Datensatz hinzu:

    Id MyCode
    ------------------------------------
    1 This is the Memo test data
    
  3. Kopieren Sie die folgende SQL-Anweisung, fügen Sie sie in eine neue Abfrage in der SQL-Ansicht ein, und speichern Sie die Abfrage dann als query1:

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

  4. Erstellen Sie das folgende Modul, und speichern Sie es dann 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. Platzieren Sie den Zeiger so, dass er sich in der Prozedur befindet. Drücken Sie F5, um den Code auszuführen.