Ошибка "Слишком много полей определено" при сохранении таблицы в Access

Средний. Требуются базовые навыки макроса, программирования и взаимодействия.

Эта статья относится только к базе данных Microsoft Access (.mdb).

Симптомы

При сохранении таблицы после добавления нового поля или изменения свойств существующего поля появляется следующее сообщение об ошибке:

Определено слишком много полей.

За этим сообщением следуют:

При сохранении возникли ошибки. Типы данных не были изменены.

Вы получаете эти сообщения, даже если в таблице определено не более 255 полей.

ПРИМЕЧАНИЕ Это сообщение также появляется при добавлении или изменении полей в отчете, основанном на таблице с слишком большим количеством полей.

Причина

Количество внутренних столбцов, которое Microsoft Access использует для отслеживания количества полей в таблице, достигло 255, даже если в таблице может быть менее 255 полей. Это может произойти, так как access не изменяет внутреннее число столбцов при удалении поля. Access также создает новое поле (увеличив число внутренних столбцов на 1) для каждого поля, свойства которого вы изменяете.

Разрешение

Чтобы освободить внутреннее число столбцов для удаленных полей или полей, свойства которых вы изменяете, выполните одно из следующих действий.

  • Сжать базу данных. Для этого наведите указатель на пункт Служебные программы баз данных в меню Сервис, а затем выберите пункт Сжатие и восстановление базы данных.

  • Создайте новую копию таблицы. Для этого выполните указанные ниже действия.

    1. Запишите все связи с таблицей.
    2. Выберите таблицу.
    3. В меню Файл выберите команду Сохранить как.
    4. В поле Сохранить таблицу "имя таблицы" введите новое имя и нажмите кнопку ОК.
    5. Выберите ту же таблицу, которую вы выбрали на шаге 2, а затем нажмите клавишу DELETE.
    6. Переименуйте таблицу, сохраненную на шаге 3, в исходное имя таблицы.
    7. Повторно установите все связи с новой таблицей.

Дополнительная информация

В Access можно определить до 255 полей в таблице. Если создать 255 полей, а затем удалить 10, Access не освобождает поля из внутреннего числа столбцов. Кроме того, для каждого поля, свойства которого изменяются, Access создает новое поле и не освобождает исходное поле из внутреннего числа столбцов.

Действия по воспроизведению поведения

Примечание.

В примере кода в этой статье используются объекты Доступа к данным Майкрософт. Для правильного выполнения этого кода необходимо ссылаться на библиотеку объектов Microsoft DAO 3.6. Для этого щелкните Ссылки в меню Сервис в Редактор Visual Basic и убедитесь, что выбрано поле Библиотека объектов Microsoft DAO 3.6 проверка.

  1. Создайте следующий код Visual Basic для приложений, чтобы создать таблицу с 255 полями:
' ****************************************************************
' Declarations section of the module
' ****************************************************************
    
Option Compare Database
    Option Explicit
    
    ' ****************************************************************
    ' The Fill_Table() function creates a table in the current database
    ' named Field Test with 255 fields, each of which has a Text data
    ' type and a size of one character.
    ' ****************************************************************
    
    Function Fill_Table()
    
    Dim mydb As DAO.Database
       Dim tbl As DAO.TableDef
       Dim fld As DAO.Field
       Dim i As Integer
    
    Set mydb = CurrentDb()
       Set tbl = mydb.CreateTableDef("Field Test")
          For i = 0 To 254
             Set fld = tbl.CreateField("Field" & CStr(i + 1))
             fld.Type = dbText
             fld.Size = 1
             tbl.Fields.Append fld
          Next i
          mydb.TableDefs.Append tbl
    
    End Function
  1. Введите следующую строку в окне Интерпретация, чтобы запустить функцию и создать таблицу:

    Fill_Table
    
  2. Просмотрите таблицу Тестирование полей в режиме конструктора, а затем удалите последнее поле, чтобы в таблице было определено только 254 поля.

  3. Добавьте поле еще раз и попытайтесь сохранить таблицу. Обратите внимание, что вы получаете следующие сообщения об ошибках:

    Too many fields defined.
    
    Errors were encountered during the save operation. Fields were not added. Properties were not updated.
    

Ссылки

Для получения дополнительных сведений о спецификациях базы данных щелкните Справка Microsoft Access в меню Справка, введите Спецификации доступа в помощнике office или мастере ответов, а затем щелкните Поиск, чтобы просмотреть возвращенные разделы.