"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:
Aprire la tabella con il campo Memo in visualizzazione Struttura.
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 .
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
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
Aggiungere il record seguente alla tabella Table1:
Id MyCode ------------------------------------ 1 This is the Memo test data
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];
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
Posizionare il puntatore in modo che sia nella procedura . Premere F5 per eseguire il codice.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per