"Error en tiempo de ejecución '3709'" al escribir una gran cantidad de texto en un campo Memo que contiene un índice en Access

Moderado: requiere aptitudes básicas de macro, codificación e interoperabilidad.

Este artículo se aplica a un archivo de base de datos de Microsoft Access .mdb o .accdb.

Síntomas

En una base de datos de Microsoft Access, cuando se crea un campo Memo que incluye un índice o se crea un nombre de campo que incluye el texto indexado automáticamente, no se puede escribir el texto que incluye más de 3450 caracteres aproximadamente en el campo. Cuando intenta escribir más texto en el campo o intenta editar los datos existentes, recibe el siguiente mensaje de error:

Run-time error '3709':

The search key not found in any record.

Solución

Si debe escribir una gran cantidad de texto en el campo Memo, elimine el índice del campo Memo. Para hacerlo, siga estos pasos:

  1. Abra la tabla con el campo Memo en la vista Diseño.

  2. En el menú Ver, haga clic en Índices.

    Nota En Microsoft Office Access 2007, haga clic en la pestaña Diseño y, a continuación, haga clic en Índices en el grupo Mostrar u ocultar .

  3. Haga clic en el índice del campo Memo y, a continuación, elimínelo.

Estado

Microsoft ha confirmado que se trata de un problema en los productos de Microsoft que aparecen al principio de este artículo.

Más información

Este comportamiento no se produce en las versiones de Microsoft Access anteriores a Microsoft Access 2000 porque los campos Memo no se pudieron indexar en Jet 3.5 y versiones anteriores.

Pasos para reproducir el comportamiento en Access 2003

  1. En una base de datos nueva, cree una nueva tabla con las siguientes propiedades y guárdela como Table1:

    Table: Table1
    ------------------------
    Field Name: Id
    Data Type: AutoNumber
    Primary Key
    
    Field Name: MyCode
    Data Type: Memo
    
  2. Agregue el registro siguiente a la tabla Table1:

    Id MyCode
    ------------------------------------
    1 This is the Memo test data
    
  3. Copie la siguiente instrucción SQL, péguela en una nueva consulta en la vista SQL y, a continuación, guarde la consulta como query1:

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

  4. Cree el módulo siguiente y guárdelo en 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. Coloque el puntero para que esté en el procedimiento. Presione F5 para que se ejecute el código.