"Ошибка времени выполнения "3709", когда вы вводите большой объем текста в поле Memo, которое содержит индекс в Access
Средний. Требуются базовые навыки макроса, программирования и взаимодействия.
Эта статья применима к файлам баз данных Microsoft Access (.mdb) или (.accdb).
Симптомы
В базе данных Microsoft Access при создании поля Memo, содержащего индекс, или при создании имени поля, включающего автоматически индексированный текст, невозможно ввести в поле текст, содержащий более 3450 символов. При попытке ввести дополнительный текст в поле или изменить существующие данные появляется следующее сообщение об ошибке:
Run-time error '3709':
The search key not found in any record.
Разрешение
Если необходимо ввести большой объем текста в поле Memo, удалите индекс для поля Memo. Для этого выполните указанные ниже действия.
Откройте таблицу с полем Memo в режиме конструктора.
В меню Вид щелкните Индексы.
Примечание В Microsoft Office Access 2007 откройте вкладку Конструктор , а затем щелкните Индексы в группе Показать и скрыть .
Щелкните индекс для поля Memo и удалите его.
Состояние
Корпорация Майкрософт подтвердила, что это проблема в продуктах Майкрософт, перечисленных в начале этой статьи.
Дополнительная информация
Это не происходит в версиях Microsoft Access до Microsoft Access 2000, так как поля Memo не удалось проиндексировать в Jet 3.5 и более ранних версиях.
Действия по воспроизведению поведения в Access 2003
В новой базе данных создайте таблицу со следующими свойствами, а затем сохраните ее как Table1:
Table: Table1 ------------------------ Field Name: Id Data Type: AutoNumber Primary Key Field Name: MyCode Data Type: Memo
Добавьте следующую запись в таблицу Table1:
Id MyCode ------------------------------------ 1 This is the Memo test data
Скопируйте следующую инструкцию SQL, вставьте ее в новый запрос в представлении SQL, а затем сохраните запрос как query1:
UPDATE Table1 SET Table1.MyCode = [MyCode] & " " & [MyCode];
Создайте следующий модуль, а затем сохраните его 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
Поместите указатель так, чтобы он был в процедуре. Нажмите клавишу F5, чтобы запустить код.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по