"Erro de tempo de execução '3709'" quando introduz uma grande quantidade de texto num campo Memo que contém um índice no Access
Moderado: requer competências básicas de macro, codificação e interoperabilidade.
Este artigo aplica-se a um ficheiro de base de dados do Microsoft Access (.mdb) ou a um ficheiro de base de dados do Microsoft Access (.accdb).
Sintomas
Numa base de dados do Microsoft Access, quando cria um campo Memo que inclui um índice ou cria um nome de campo que inclui o texto indexado automaticamente, não pode introduzir o texto que inclui mais de 3450 carateres no campo. Quando tenta introduzir mais texto no campo ou tenta editar os dados existentes, recebe a seguinte mensagem de erro:
Run-time error '3709':
The search key not found in any record.
Resolução
Se tiver de introduzir uma grande quantidade de texto no campo Memo, elimine o índice do campo Memo. Para tal, siga estes passos:
Abra a tabela com o campo Memo na vista Estrutura.
No Menu Ver, clique em Índices.
Nota No Microsoft Office Access 2007, clique no separador Estrutura e, em seguida, clique em Índices no grupo Mostrar/Ocultar .
Clique no índice do campo Memo e, em seguida, elimine-o.
Estado
A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados no início deste artigo.
Mais informações
Este comportamento não ocorre em versões do Microsoft Access antes do Microsoft Access 2000 porque não foi possível indexar os campos Memo no Jet 3.5 e anterior.
Passos para reproduzir o comportamento no Access 2003
Numa nova base de dados, crie uma nova tabela com as seguintes propriedades e, em seguida, guarde-a como Tabela1:
Table: Table1 ------------------------ Field Name: Id Data Type: AutoNumber Primary Key Field Name: MyCode Data Type: Memo
Adicione o seguinte registo à tabela Table1:
Id MyCode ------------------------------------ 1 This is the Memo test data
Copie a seguinte instrução SQL, cole-a numa nova consulta na vista SQL e, em seguida, guarde a consulta como consulta1:
UPDATE Table1 SET Table1.MyCode = [MyCode] & " " & [MyCode];
Crie o módulo seguinte e, em seguida, guarde-o Módulo1:
Sub TestMemoUpdate() Dim i As Integer Docmd.setwarnings false For i = 1 To 10 Docmd.openquery "Query1" Next i Docmd.setwarnings true End Sub
Coloque o ponteiro para que esteja no procedimento. Prima F5 para executar o código.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários