"Errore di runtime '3709'" quando si immette una grande quantità di testo in un campo Memo che contiene un indice in Access

Moderato: richiede competenze di base di macro, codifica e interoperabilità.

Questo articolo si applica a un file di database di Microsoft Access (con estensione .mdb) oppure a un file di database di Microsoft Access (con estensione .accdb).

Sintomi

In un database di Microsoft Access, quando si crea un campo Memo che include un indice o si crea un nome di campo che include il testo indicizzato automaticamente, non è possibile immettere nel campo il testo che include più di 3450 caratteri circa. Quando si tenta di immettere altro testo nel campo o si tenta di modificare i dati esistenti, viene visualizzato il messaggio di errore seguente:

Run-time error '3709':

The search key not found in any record.

Risoluzione

Se è necessario immettere una grande quantità di testo nel campo Memo, eliminare l'indice per il campo Memo. A tale scopo, seguire questa procedura:

  1. Aprire la tabella con il campo Memo in visualizzazione Struttura.

  2. Nel menu Visualizza fare clic su Indici.

    Nota In Microsoft Office Access 2007 fare clic sulla scheda Progettazione e quindi su Indici nel gruppo Mostra/Nascondi .

  3. Fare clic sull'indice per il campo Memo e quindi eliminarlo.

Stato

Microsoft ha confermato che si tratta di un problema nei prodotti Microsoft elencati all'inizio di questo articolo.

Ulteriori informazioni

Questo comportamento non si verifica nelle versioni di Microsoft Access precedenti a Microsoft Access 2000 perché i campi Memo non potevano essere indicizzati in Jet 3.5 e versioni precedenti.

Passaggi per riprodurre il comportamento in Access 2003

  1. In un nuovo database creare una nuova tabella con le proprietà seguenti e salvarla come Table1:

    Table: Table1
    ------------------------
    Field Name: Id
    Data Type: AutoNumber
    Primary Key
    
    Field Name: MyCode
    Data Type: Memo
    
  2. Aggiungere il record seguente alla tabella Table1:

    Id MyCode
    ------------------------------------
    1 This is the Memo test data
    
  3. Copiare l'istruzione SQL seguente, incollarla in una nuova query nella visualizzazione SQL e quindi salvare la query come query1:

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

  4. Creare il modulo seguente e quindi salvarlo 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. Posizionare il puntatore in modo che sia nella procedura . Premere F5 per eseguire il codice.