Усеченные данные при импорте из Excel в поле Access Memo
Access усекает данные в нескольких полях заметок, когда я добавляю файл Excel. Поле в таблице Access уже задано как тип Memo. Я считаю, что проблема в том, что у меня нет записей в первых нескольких строках некоторых полей memo. Доступ предполагает, что данные являются текстовым полем, хотя я уже установил его как тип заметки.
Я попытался добавить как CSV. Не работать.
Я поставил фиктивные данные в первую строку, которая превышает ограничение 255 символов и данные не усекаются, если я это сделаю.
Я не хочу помещать фиктивные данные каждый раз, когда мне нужно импортировать файл Excel. Это процесс, который будет завершен, по крайней мере, раз в две недели, возможно чаще. Я хотел бы настроить простой способ импорта данных для будущих сотрудников, которые работают с той же базой данных. Есть идеи?
обновление: даже с фиктивными данными в первых нескольких строках, доступ усекает данные для 3 из 10 Memo feilds при импорте файла Excel (длина символа фиктивных данных составляет 785). Теперь я действительно в растерянности.
8 ответов
прошло некоторое время, но у меня были те же проблемы, что и у вас.
после долгих раскопок я обнаружил, что удивительный мир microsoft объясняет:
чтобы избежать ошибок при импорте, убедитесь, что каждый столбец источника содержит тот же тип данных в каждой строке. Доступ сканирует первый восемь строк источника для определения типа данных полей в таблица. Мы настоятельно рекомендуем вам убедиться, что первые восемь источник строки do не смешивать значения различных типов данных ни в одном из столбцов. В противном случае Access может не назначить правильный тип данных колонна.
по-видимому, это означает, когда добавление файл excel в существующую таблицу, даже если столбцы отформатированы и сохранены как поля memo, что если все 8 первых строк в файле excel меньше 256 символов, доступ предполагает, что вы на самом деле предназначается, чтобы указать текст, таким образом, усек оставшихся строк после 255 символов. Я выполнил несколько тестов, поместив "фиктивные" строки в верхние 8 строк, и каждый из них вызвал импорт более 255 символов.
теперь, если вы импорт в новую таблицу мастер позволяет выбрать все параметры форматирования.
импорт в новую таблицу удобен, если вы согласны с перезаписью всех данных, уже содержащихся в таблице. Однако, если вам действительно нужно добавить, я бы предложил импортировать во временную таблицу, а затем приложение оттуда. Простой способ сделать это-сохранить импорт, а затем выполнить его из VBA, например Elliot_et_al хотел сделать. Затем вы также можете запустить запрос append в VBA. Если вы правильно настроили свои таблицы, вы можете уйти с
INSERT INTO [MyTable]
SELECT [MyTable_temp].*
FROM [MyTable_temp];
для чего это стоит....Я столкнулся с аналогичной проблемой с Access 2013 - Это было усечение полей до 255 символов при импорте из XLS, даже когда мастер импорта выбрал длинный текст в качестве поля, и даже когда у меня были поля с > 255 символами в первых нескольких строках.
коллега предложил мне связать электронную таблицу вместо импорта в новую таблицу, проблема исчезла. Я также создал новую таблицу на основе связанной, и все хорошо.
ОТРЕДАКТИРОВАНО ДЛЯ ДОБАВЛЕНИЯ: в Access 2013, Если вы уже импортировали файл XLS в Access и не можете вернуться к нему, чтобы попытаться связать сначала, попробуйте следующее:
перейдите к представлению дизайна таблицы, перейдите к свойствам поля в нижней части этого экрана и установите длинный текст "текстовый формат" в "форматированный текст". Только сегодня я обнаружил, что это спасло меня от необходимости воссоздавать таблицу, которую я импортировал из excel несколько месяцев назад, и обнаружил, что, хотя у меня был столбец "заметки установленный на длинный текст, он все еще усекал текст, который я вручную вводил до 255 символов независимо. Переход на форматированный текст сделал этот текст видимым.
Я использую excel для связи с внешними партнерами и захвата отчетов из них в базу данных access. Я нашел лучший способ сделать это-вставить "фиктивную" первую строку в рабочий лист, который содержит более 255 символов в любом столбце, где заполненные пользователем данные, вероятно, превысят 255 символов.
таким образом, когда я импортирую данные, он всегда импортирует весь текст, а затем я могу просто удалить "фиктивную" строку из базы данных таблица.
Я часто использую книгу "импорт шаблона", на которую я ссылаюсь из своей базы данных access. Я устанавливаю страницу шаблона для форматирования в виде таблицы перед связыванием (так что импорт содержит все данные без указания диапазона каждый раз) и делаю первую "фиктивную" строку скрытой там.
таким образом, я могу просто скопировать и вставить данные в шаблон импорта, а затем запустить запрос базы данных для импорта (и при необходимости преобразовать) данные в база данных, со вторым запросом для удаления "фиктивной" записи после этого.
надеюсь, что это помогает..?
У меня была такая же точная проблема с Access 2010. Я нашел два разных обходных пути после обнаружения доступа посмотрите первые 25 записей, чтобы определить тип данных по каждому столбцу при импорте.
- сортировка импортируемых записей по длине столбца в порядке убывания. Это означает, что записи с более чем 255 символами в некотором столбце будут среди первых 25 записей. Затем Access смог импортировать эти записи без усечения.
- создана таблица ссылок указание типа данных столбца как memo, а затем добавление в таблицу.
Мне повезло в прошлом с решением Rich Text, предлагаемым выше, а также с использованием "фиктивных строк" в качестве первой импортированной записи. Спасибо тебе за это! Однако сегодня я думаю, что столкнулся с более эффективным/последовательным решением для импорта, которое вы повторите много раз. Я пробовал это в Access 2007.
используйте мастер импорта, как если бы вы импортировали данные в новую таблицу. Пройдите через все экраны, устанавливающие ваши спецификации. Самое главное, проверьте или укажите тип данных для каждого поле в области "утомительные параметры поля / тип данных" (для моего последнего текстового файла это был 3-й экран мастера импорта текста) - обязательно укажите здесь поля заметок. (Не волнуйтесь, вам придется сделать это только один раз!)
когда вы прибудете в финал "это все, что нужно мастеру..."экран, ищите" дополнительно... кнопка " в левом нижнем углу. Это вызовет экран, обобщающий все, что вы только что сделали. Ищите "Сохранить как...- справа. Сохраните эти спецификации с помощью имя. (Вы можете подтвердить, что сохранили спецификации, нажав " спецификации...- прямо под нами.) Нажмите кнопку "Окей", чтобы покинуть расширенный экран.
теперь вы можете выйти из Мастера, если вы на самом деле не нужно создавать новую таблицу. Затем-и это то, что вы можете делать каждый раз, чтобы избежать усечений-перейдите в обычный мастер импорта с "Добавить копию записей в таблицу..."В Волшебнике вы должны увидеть то же самое" Advanced..." кнопка. Откройте его, нажмите " спецификации..."и дважды щелкните сохраненная спецификация. Скажите "ОК", чтобы выйти из" Дополнительно " и завершить работу мастера. Это должно сказать Access, чтобы сохранить ваши поля memo в качестве полей memo!
при импорте CSV в существующие таблицы мне нужно пройти через несколько обычных экранов мастера (например, указать квалификатор текста), прежде чем перейти к экрану "дополнительно". Не уверен, почему это делает его счастливым, просто FYI.
Я надеюсь, что это поможет кому-то еще, кто боролся с ошибками импорта усечения полей, такими как я!
во многих случаях вы просто меняете текстовый формат поля memo с обычного текста на RTF, теперь, если вы откроете данные таблицы, вы увидите весь импортированный текст
Excel и Access являются причудливыми. По-видимому, добавление Excel или CSVs в конец существующей таблицы доступа, которая имеет те же свойства длинного текста, является проблемой. Добавление данных будет по умолчанию весь длинный текст в короткий текст. Работа заключалась в том, чтобы вывести данные в Excel, добавить данные в одну таблицу, а затем импортировать их как новую таблицу в Access. У Access есть проблема с обработкой добавляемых данных как короткого текста вместо длинного текста независимо от того, что вы делаете.
убедитесь, что при использовании мастера импорта для изменения свойств столбца на длинный текст.
надеюсь, это поможет.
Я столкнулся с той же проблемой в MS Access 2013. Когда я импортирую лист excel с одним из текста столбца больше 255 символов, он усекается. Я сделал много исследований и, наконец, я могу найти обходной путь. Фактически, некоторые, как база данных MS Access, определяющая размер текста на основе длины текста первого столбца записи и фиксирующая эту длину для последующих записей. Если это length