Sdscompany.ru

Компьютерный журнал
6 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Access слишком большая длина записи

Запись слишком большая ошибка времени выполнения MS Access

У меня есть ненормально большая таблица для одного из моих приложений в MS Access. Он жестоко нарушает некоторые правила нормализации, но в остальном прекрасно подходит для этого небольшого приложения. Он имеет

100 полей (столбцов). Я прочитал здесь спецификации ограничений , но не вижу, где я нарушаю их. Большинство полей являются текстовыми полями и варьируются от пары слов до пары предложений. Мои вопросы таковы:

Есть ли способ получить более описательную ошибку, чем «запись слишком велика», чтобы я мог определить, как сделать ее меньше?

Может ли изменение моих ‘text’ полей на ‘memo’ полей уменьшить размер моей записи?

На первый взгляд, из всех спецификаций, потенциально нарушенных, это : количество символов в записи (исключая поля Memo и OLE-объектов), когда свойство UnicodeCompression полей имеет значение Yes:: 4000
похоже, это самый вероятный преступник.

Будет ли это нарушение потенциально давать ошибку времени выполнения «record is too large»(при заполнении формы).

Будет ли установка свойства UnicodeCompression в ‘no’ положительно или отрицательно влиять на производительность?

3 Ответа

Скорее всего, ответом будут поля памятки. Правила ограничения записи не включают тип данных memo.

Кажется, что предел для полей составляет 2000 байт (Memo и OLE не учитываются с этим ограничением). С полями

100 вы, скорее всего, достигнете этого предела.

Решения заключаются в нормализации таблицы или преобразовании некоторых полей в поля памятки.

Возможно, уже слишком поздно, но я решил эту проблему, сжав / восстановив файл базы данных

Похожие вопросы:

В Ms Access у меня есть два несвязанных комбо-бокса: StateBox и DVPCBox . StateBox это просто список U.S. состояния и DVPCBox содержит имена сотрудников из запроса, основанного на значении StateBox.

Я относительно новичок в MS Access и VBA. Я пытаюсь сделать немного кода для этого DB и получить сообщение об ошибке Ошибка времени выполнения 3061. Слишком мало параметров. Ожидаемый 1, когда он.

У меня есть приложение, написанное в MS Access 2007-2010, и бэк-энд — это база данных SQL. После построения новой базы данных, когда я просматриваю записи из SQL в отчете Access, пытаясь.

У меня есть MS Access 2007 DB, который выполняется через планировщик Windows NT. В принципе, я создал эту запись в планировщике Windows, который запускается каждую ночь в полночь.

Я использую MS-Access 2000 (не мой выбор — компания использует его). Я замечаю, что если у меня есть настройки запуска, установленные для открытия формы при открытии базы данных, я получаю ошибку.

у меня возникла проблема с запуском sql в ms-access. im с помощью этого кода: SELECT readings_miu_id, ReadDate, ReadTime, RSSI, Firmware, Active, OriginCol, ColID, Ownage, SiteID, PremID.

Я работал над приложением, которое использует ms access 2010 и oracle. Теперь я работаю над использованием моего sql 5.7 вместо oracle. Но код в ms access содержит recordset.edit, а затем 2.

Я обновил серверную часть MS Access 2003 до MySQL 5.1 базы данных. Я связываю серверную базу данных MYSQL 5.1 thr’ ODBC (драйвер MySQL ODBC 5.1) с интерфейсом MS Access .MDB-компонента. Я использую.

Я получаю следующую ошибку в MS Access ADP при попытке добавить запись в форму, связанную с таблицей MS SQL Server 2000: Ошибка времени выполнения ‘31004’: Значение поля (AutoNumber) не может быть.

Я получаю ошибку в MS access 2003, Ошибка времени выполнения 2465: Microsoft не может найти поле ‘|’, указанное в вашем выражении. Count = DCount(*, PREPAYMENT_PRICING_CHANGE, ([INSERT_DATE] -.

Слишком большая длина записи

Слишком большая длина записи
Добрый день. Не нашла ничего конкретного по этой теме. Есть проблема: выгружая.

Слишком большая длина записи.
Dim COMM As New OleDbCommand("CREATE TABLE ( char(20), ch" & .

Слишком большая длина записи
Добрый день! При заполнении поля формата "Дата" пишет, что "Слишком большая длина записи", хотя до.

Слишком большая длина записи
Добрый день, При попытке добавить новые поля в действующую базу, выдает ошибку "Слишком большая.

Атрибут Максимальное значение Число знаков в имени таблицы 64 Число знаков в имени поля 64 Число полей в таблице 255 Число открытых таблиц 2048 (фактическое число может быть меньше по причине того, что в Access открываются внутренние таблицы) Размер таблицы 2 Гбайт за вычетом места, необходимого системным объектам. Число знаков в поле типа «Текстовый» 255 Число знаков в поле типа «Поле MEMO» 65 535 при вводе данных через интерфейс пользователя;
2 Гбайт для хранения знаков при программном вводе данных. Размер поля объекта OLE 1 Гбайт Число индексов в таблице 32 Число полей в индексе 10 Число знаков в сообщении об ошибке 255 Число знаков в условии на значение 2048 Число знаков в описании таблицы или поля 255 Число знаков в записи (кроме полей с типом данных «Поле MEMO» и «Поле объекта OLE»), если для свойства Сжатие Юникод полей задано значение Да 4000 Число знаков в значении свойства поля 255

Читать еще:  Access как читается

Не получилось выложить файл! Оригинальный слишком большой! Попыталась удалить записи, оставила 300, проблемное поле осталось проблемным, размер файла тоже большим! Такое ощущение, что при его создании был выделен большой объем памяти и он не изменяется! Импортировала таблицу в 300 проблемных записей в новую базу и все сработало!
Я не первый раз работаю с этой таблицей, кроме поля «Труба» вставляла другие поля — все работало нормально! Разница в том, что сейчас получилось в разы больше записей при одинаковой структуре таблицы. Наверное мне надо после удаления ненужных мне записей импортировать табличку в новую базу, чтобы уменьшить ее объем?

Добавлено через 7 минут
Ну в общем да, все сработало!! вот не догадалась бы, спасибо!

есть еще параметр—сжатие базы при закрытии(хотя для больших таблиц могут быть проблемы —тогда экспорт в новую базу)

меня смущает
—большое количество длинных полей

может схема данных не совсем доработана
и что вы в 80 полях делаете

основная цель базы —поиск

Добавлено через 6 минут
основная цель базы —поиск—поиск—поиск—поиск
и частичная распечатка

Access слишком большая длина записи

Господа, пишу SQL запрос вида Create table NNNN (Name Char,
famaly text, и т.д.)Примерно 15 полей, естественно с именами и описаниями. ExecSQL (пробовал Open). Ошибка: Слишком большая длина запроса! Подскажите, что это такое и как с этим бороться? Пробовал разбить запрос на несколько, выполняется, но ведь это неправильно! База -Access, использую ADO. Сама база уже существует(я хочу создать таблицу идентичную одной из уже имеющихся)


VAleksey ( 2003-04-28 08:58 ) [1]

Без полного текста запроса не оазобраться ИМХО.


DSR ( 2003-04-28 09:53 ) [2]

Create table CopyT
(КодУчастника INTEGER,
КодСеминара INTEGER,
КодПредприятия INTEGER,
ФИОУчастника CHAR,
Должность CHAR,
ВидРазмещения CHAR,
НомерТелефона CHAR,
ТемаДоклада CHAR,
ДатаПриезда DATETIME,
ВидПриезда CHAR,
НеобхГост BIT,
ДатаОтъезда DATETIME,
ВидОтъезда CHAR,
ДатаЗаявки DATETIME,
ГостиницаВодителю BIT,
ДатаГостиницыС DATETIME,
НомерМашины CHAR,
Марка CHAR,
ФИОВодителя CHAR,
НомерРейса CHAR,
ВремяПрилета DATETIME,
Заметки Text)


sniknik ( 2003-04-28 10:46 ) [3]

> Ошибка: Слишком большая длина запроса!
неверно
EOleException : Слишком большая длина записи

читай правильно.
и поставь ограничения CHAR-рам типа CHAR(20), и, хотя не обязательно, пиши названия полей по английски.


DSR ( 2003-04-28 11:56 ) [4]

названия полей не получиться, это для отчетов запрос, сама прога уже работает, много исправлять. Не понимаю ведь средствами access ошибки нет, большая длина запроса, а не базы.Или я чего то не догоняю. Кстати, в других запросах названия полей по русски проблем не вызывают. И еще? запрос отправляю напрямую в SQL (ADOQuery.SQL.Add(Memo.Line)), я имею ввиду что он целиком пишется руками, хотя и в RunTime


sniknik ( 2003-04-28 12:27 ) [5]

руские названия поменять это не обязательно, а желательно. (читай правильно)
обязательно ограничения к CHAR.

> Не понимаю ведь средствами access ошибки нет
да ну. должна быть.

вот так правильно
Create table CopyT
(КодУчастника INTEGER,
КодСеминара INTEGER,
КодПредприятия INTEGER,
ФИОУчастника CHAR(20),
Должность CHAR(20),
ВидРазмещения CHAR(20),
НомерТелефона CHAR(20),
ТемаДоклада CHAR(20),
ДатаПриезда DATETIME,
ВидПриезда CHAR(20),
НеобхГост BIT,
ДатаОтъезда DATETIME,
ВидОтъезда CHAR(20),
ДатаЗаявки DATETIME,
ГостиницаВодителю BIT,
ДатаГостиницыС DATETIME,
НомерМашины CHAR(20),
Марка CHAR(20),
ФИОВодителя CHAR(20),
НомерРейса CHAR(20),
ВремяПрилета DATETIME,
Заметки Text)


DSR ( 2003-04-28 19:46 ) [6]

попробую, посмотрим, спасибо, напишу завтра результат

Задание размера поля

С помощью свойства «Размер поля» у числовых полей в таблицах Access можно регулировать объем, занимаемый записями в базе данных. Размер можно менять и у текстовых полей, хотя эффект этого с точки зрения экономии пространства не так заметен.

Примечание: Функции, описанные в этой статье, не относятся к веб-приложениям и веб-базам данных Access.

В этой статье

Результат изменения размера поля

Можно менять размер как пустого поля, так и поля, которое уже содержит данные. Результат изменения размера поля зависит от того, содержит ли оно данные.

Если поле не содержит данных При изменении размера поля устанавливается предельный размер новых значений в этом поле. Для числовых полей размер точно определяет объем дискового пространства, используемого приложением Access для хранения каждого значения соответствующего поля. Для текстовых полей размер поля определяет максимальный объем дискового пространства, который Access может выделить для каждого значения этого поле.

Если поле содержит данные При изменении размера поля Access обрезает все значения в поле, которые превышают заданный размер, а также ограничивает размер новых значений данных в поле, как описано выше.

Изменение размера числового поля

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

В области навигации щелкните правой кнопкой мыши таблицу, содержащую поле, которое нужно изменить, и выберите команду Конструктор.

В сетке конструктора таблицы выберите поле, размер которого необходимо изменить.

Читать еще:  Программа microsoft access

В области Свойства поля на вкладке Общие укажите новый размер поля в качестве значения свойства Размер поля. Можно выбрать одно из значений, перечисленных ниже.

Байт — для целых чисел от 0 до 255. Для хранения требуется 1 байт.

Целое число — для целых чисел от -32 768 до +32 767. Для хранения требуется 2 байта.

Длинное целое — для целых чисел от -2 147 483 648 до +2 147 483 647. Для хранения требуется 4 байта.

Совет: Тип данных «Длинное целое» следует использовать при создании внешнего ключа для связывания поля с полем первичного ключа другой таблицы, которое имеет тип данных «Счетчик».

Одинарное с плавающей точкой — для чисел с плавающей точкой от -3,4 x 1038 до +3,4 x 1038, которые имеют до 7 значимых разрядов. Для хранения требуется 4 байта.

Двойное с плавающей точкой — для чисел с плавающей точкой от -1,797 x 10308 до +1,797 x 10308, которые имеют до 15 значимых разрядов. Для хранения требуется 8 байтов.

Код репликации — для идентификатора GUID, необходимого для репликации.

Примечание: Репликация не поддерживается для файлов формата ACCDB.

Действительное число — для числовых значений от -9,999. x 1027 до +9,999. x 1027. Для хранения требуется 12 байтов.

Изменение размера текстового поля

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

В области навигации щелкните правой кнопкой мыши таблицу, содержащую поле, которое нужно изменить, и выберите команду Конструктор.

В сетке конструктора таблицы выберите поле, размер которого необходимо изменить.

В области Свойства поля на вкладке Общие укажите новый размер поля в качестве значения свойства Размер поля. Введите значение от 1 до 255. Это число определяет максимальное количество символов, содержащихся в каждом из значений. Для больших полей используйте тип данных Memo (в Access 2016 — «Длинный текст»).

Примечание: Для данных в текстовых полях (в Access 2016 — «Краткий текст») Access не резервирует больше места, чем необходимо для хранения фактических значений. Свойство Размер поля определяет размер максимального значения поля.

Как исправить проблему «Имя файла слишком длинное» в Windows

Если вы когда-либо видели эту проблему, это, вероятно, было простым решением для вас. Если вы видели эту ошибку более двух раз, то вы также знаете, что иногда это может быть сложной проблемой.

Будем надеяться, что вы столкнетесь только с набором легких исправлений, но мы подготовим вас к менее простым, гарантированно исправным исправлениям.

Почему длина имени файла является проблемой в Windows?

Существует большая история длины файлов, что является проблемой для операционных систем, таких как Windows. Было время, когда вы не могли иметь имена файлов длиннее 8 символов плюс 3-символьное расширение файла. Лучшее, что вы могли сделать, это что-то вроде myresume.doc. Это было ограничение в отношении дизайна файловой системы.

Все стало лучше, когда вышли новые версии Windows. Мы перешли от старой ограниченной файловой системы к так называемой файловой системе новой технологии (NTFS). NTFS привела нас к тому, что имя файла может быть длиной 255 символов, а длина пути к файлу потенциально может достигать 32 767 символов. Так как же мы можем иметь слишком длинные имена файлов?

В Windows есть вещи, известные как системные переменные. Это переменные, от которых зависит функционирование Windows, потому что Windows всегда будет знать, что означают переменные и где они находятся, даже когда мы перемещаем биты и байты повсюду. Системная переменная MAX_PATH — это та, которая ограничивает имена файлов и пути к файлам до 260 символов.

Будучи переменной, вы думаете, мы могли бы изменить это. Нет, мы не должны. Это все равно что выдернуть нитку из свитера. Как только одна системная переменная изменяется, другие системные переменные и зависимые от них компоненты начинают распадаться.

Настройка Windows 10 на обработку длинных путей к файлам

Если вы знаете, что будете часто использовать длинные пути к файлам и длинные имена файлов, вам будет проще заставить Windows работать. Нет смысла использовать PowerShell для выполнения работы каждый день.

Есть два способа сделать это. Один предназначен для пользователей Windows 10 Home, а другой — для пользователей Windows 10 Pro или Enterprise. Эти методы могут работать для Windows 8.1 или более ранней версии, но мы не можем гарантировать это.

Параметры для Windows 10 Home

Чтобы Windows 10 Home принимала длинные пути к файлам, нам нужно открыть редактор реестра . Если вы раньше не работали в редакторе реестра, будьте осторожны. Случайное удаление или изменение здесь может помешать работе Windows полностью.

Всегда делайте резервную копию вашего реестра, прежде чем вносить какие-либо изменения. Узнайте все, что вам нужно знать об этом, в нашем окончательном руководстве по резервному копированию и восстановлению реестра Windows.

Открыв редактор реестра и сделав резервную копию, перейдите в папку HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem и найдите ключ LongPathsEnabled.

Дважды щелкните LongPathsEnabled. Убедитесь, что в поле Значение данные: номер 1 указан. Нажмите OK, чтобы подтвердить изменения.

Читать еще:  Программа access 2020

Выйдите из редактора реестра, и теперь вы сможете работать с безумными длинными путями к файлам.

Параметры для Windows 10 Pro или Enterprise

Чтобы позволить Windows 10 Pro или Enterprise использовать длинные пути к файлам, мы будем использовать редактор локальной групповой политики. Это инструмент, который позволяет нам устанавливать политики в отношении работы Windows на компьютере и на уровне пользователей.

Откройте редактор групповой политики, перейдя в меню «Пуск» и набрав gpedit . Лучший результат должен быть Изменить групповую политику. Дважды щелкните по этому.

После открытия редактора групповой политики перейдите к Конфигурация компьютера → Административные шаблоны → Система → Файловая система. Там вы увидите политику включения длинных путей Win32.

Дважды щелкните по нему, чтобы изменить параметр политики. Измените его с «Отключено» на «Включено», затем нажмите кнопку «ОК», чтобы зафиксировать изменение.

Политика может не вступить в силу сразу. Вы можете принудительно обновить групповую политику.

Как временно исправить проблему с файлами?

Легкое Исправление

Если вам повезет, вы получите ошибку и точно знаете, какое имя файла вызывает проблему. Или, по крайней мере, где найти файл. Может быть, у вас есть имя файла, которое выглядит примерно так:

Понятно, кто в этом случае виновник. Найдите файл в проводнике Windows или в проводнике, как он называется в Windows 10, нажмите один раз на него, нажмите F2, чтобы переименовать его, и измените это глупое имя файла на более разумное. Задача решена.

Менее простые исправления

Не всегда легко решить эту проблему. Иногда вы не можете изменить имена файлов или каталогов по любой причине.

Следующие решения помогут вам. Их несложно сделать.

Перемещение, удаление или копирование файлов или каталогов с помощью PowerShell
Иногда вы получаете сообщение об ошибке при попытке переместить, удалить или скопировать каталоги, где количество символов для пути к файлу превышает 260.

Обратите внимание, что слова каталог и папка являются взаимозаменяемыми. Мы будем использовать «каталог» в будущем. Следующие командлеты PowerShell также можно использовать для файлов.

Возможно, путь к файлу выглядит примерно так:

Этот путь к файлу составляет 280 символов. Поэтому мы не можем скопировать каталог оттуда куда-либо еще с помощью обычного метода копирования-вставки. Мы получаем ошибку Destination Path Too Long.

Давайте предположим, что по какой-то причине мы не можем переименовать каталоги, в которые вложен файл. Что мы делаем?

Когда откроется PowerShell, вы окажетесь в корне своего пользовательского каталога. Продолжайте, предполагая, что C:Usersguymc — ваш пользовательский каталог.

Каталог с именем This находится в каталоге Documents. Чтобы перейти в каталог Documents, мы используем команду cd Documents .

Вы увидите быстрое изменение текущего каталога на C:UsersguymcDocuments. Это хорошо. Мы работаем ближе к каталогам, которые облегчат жизнь.

Копирование каталога с использованием Copy-Item

Мы хотим скопировать каталог This и его содержимое в ThatNewFolder. Давайте используем команду PowerShell Copy-Item с параметрами -Destination и -Recurse.

-Destination сообщает PowerShell, где мы хотим, чтобы копия находилась. -Recurse говорит PowerShell скопировать все элементы внутри к месту назначения. Копирование оставляет оригиналы там, где они есть, и делает все новые в месте назначения.

Переместить каталог с помощью Move-Item

Допустим, мы хотим переместить каталог This, а также все каталоги и файлы в нем, в ThatNewFolder. Перемещение не оставляет оригинал на месте.

Мы можем использовать команду PowerShell Move-Item с параметрами -Path и -Destination. -Path определяет элемент, который мы хотим переместить, и -Destination сообщает PowerShell, где мы хотим его получить.

Команда поместит это в ThatNewFolder. Он также будет перемещать все, что находится внутри этого каталога. Move-Item может использоваться для перемещения файлов или каталогов, и он работает независимо от пути к файлу или длины имени файла.

Чтобы убедиться, что это работает, используйте команду cd ThatNewFolder , чтобы войти в ThatNewFolder. Затем используйте команду dir для вывода списка каталогов в ThatNewFolder. Вы увидите, что этот каталог находится там.

Удалить каталог с помощью Remove-Item

Если мы хотим удалить этот каталог и все в нем, мы используем команду Remove-Item.

Командлет Remove-Item обладает некоторой встроенной безопасностью, которая затрудняет удаление каталога с содержимым внутри него. В нашем примере мы знаем, что хотим удалить все, поэтому мы будем использовать параметры -Recurse, чтобы заставить его удалять все внутри, и -Force, чтобы он делал это, не спрашивая нас, уверены ли мы в каждом элементе внутри.

Имейте в виду! Восстановить что-либо удаленное таким образом было бы чрезвычайно сложно.

Вы можете снова использовать команду dir, чтобы убедиться, что она пропала.

Вот и все

Существуют и другие способы обхода длинных имен файлов и путей к файлам, но то, что мы здесь рассмотрели, — это самые простые и эффективные методы.

Ссылка на основную публикацию
Adblock
detector