Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Можно ли принудительно указать размер текстовых полей при прилинковывании файла Excel?  [new]
K-Nick
Member

Откуда:
Сообщений: 126
Доброго времени суток.
Нужно прилинковать к Access 2007 таблицу Excel (XLSX). Проблема в том, что некоторые текстовые столбцы содержат текст больше 255 символов, но не везде, а в середине-конце таблицы. Видимо из-за этого эти поля определяются Access-ом не как МЕМО, а как текстовые поля. Можно ли как-нибудь принудительно указать формат поля при прилинковывании? Файлы огромные, поэтому обработка с помощью VBA нежелательна (очень медленно).
Заранее премного благодарен.
9 янв 19, 18:27    [21780950]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли принудительно указать размер текстовых полей при прилинковывании файла Excel?  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 186
Что бы правильно определялся тип МЕМО, нужно либо иметь ячейку с длинным текстом в первых 8 строках, либо указать 0 в параметре "TypeGuessRows" драйвера в реестре (проверять все строки).
Если 2-й вариант не подходит, а найти и переместить вверх нужную строку проблематично и долго, то на вскидку вижу два варианта:
1. Тупо добавить строку с левым длинным текстом, а в Аксе откинуть эту строку в запросе по Null в другом обязательном поле. Можно таблицу и не присоединять - сразу запрос со строкой подключения.
2. В свободном столбце получить длину текста в ячейке (функция ДЛСТР) и отсортировать по этому столбцу по убыванию.
10 янв 19, 11:18    [21781358]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли принудительно указать размер текстовых полей при прилинковывании файла Excel?  [new]
K-Nick
Member

Откуда:
Сообщений: 126
Кривцов Анатолий,
Спасибо. Придется пойти по пути №1, т.е. сначала программно добавлять в начало строку с нужной длиной текста, а потом прилинковывать.
10 янв 19, 12:20    [21781425]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли принудительно указать размер текстовых полей при прилинковывании файла Excel?  [new]
Сергей Лалов
Member

Откуда: Питер,Москва, Выборг, Светогорск
Сообщений: 1266
K-Nick
Доброго времени суток.
Нужно прилинковать к Access 2007 таблицу Excel (XLSX). Проблема в том, что некоторые текстовые столбцы содержат текст больше 255 символов, но не везде, а в середине-конце таблицы. Видимо из-за этого эти поля определяются Access-ом не как МЕМО, а как текстовые поля. Можно ли как-нибудь принудительно указать формат поля при прилинковывании? Файлы огромные, поэтому обработка с помощью VBA нежелательна (очень медленно).
Заранее премного благодарен.


Можно без особых усилий в MS Access 2007 создать сохраненную операцию импорта , только вместо линка будет создаваться таблица. в базе. В процессе создания операции типа "сохраненная операция импорт" можно указать один раз типы импортируемых полей. И потом всю жизнь проекта пользоваться, либо изменить в любой момент. А после выполнения процедуры удалять таблицы программно. И все поля будут корректно добавлятся. Запустить сохраненную процецуру импорта можнопри помощи простенького кода:

Docmd.RunSavedImportExport( _имя_импортно_экспортной_операции_ )


Создать еще проще, приложил картинки (если религия позволяет, можете не линковать ,а импортировать, ИМХО субъективно быстрей вытаскивать информацию из временно созданной таблицы ,нежели из линкованной.)

К сообщению приложен файл. Размер - 117Kb
10 янв 19, 13:09    [21781518]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли принудительно указать размер текстовых полей при прилинковывании файла Excel?  [new]
K-Nick
Member

Откуда:
Сообщений: 126
Сергей Лалов,
Спасибо!
Но, к сожалению, импортировать не удалось - выдается ошибка "Ключ поиска не найден ни в одной записи", а способ с добавлением строки в начало замечательно помог - пара десятков строк кода и все заработало.
14 янв 19, 15:34    [21784846]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли принудительно указать размер текстовых полей при прилинковывании файла Excel?  [new]
Сергей Лалов
Member

Откуда: Питер,Москва, Выборг, Светогорск
Сообщений: 1266
K-Nick
- выдается ошибка "Ключ поиска не найден ни в одной записи"


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

K-Nick
Сергей Лалов,
а способ с добавлением строки в начало замечательно помог - пара десятков строк кода и все заработало.

Пара десятков строк кода ...хм.. вы там для Илона Маска пишете алгоритм возвращения ракеты на стартовую площадку?)
15 янв 19, 11:53    [21785486]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли принудительно указать размер текстовых полей при прилинковывании файла Excel?  [new]
K-Nick
Member

Откуда:
Сообщений: 126
Сергей Лалов
При создании процедуры импорта в процессе просто укажите ,чтобы создавалось ключевое поле в таблице, куда все это будет импортироваться. Второй или третий этап, точно не помню, вопрос в общем решается за секунду)
Делал. Не помогает.
Сергей Лалов
Пара десятков строк кода ...хм.. вы там для Илона Маска пишете алгоритм возвращения ракеты на стартовую площадку?)
Ну это с "накладными расходами" на создание рабочей копии файла (оригинал править нельзя) и т.п.
16 янв 19, 14:56    [21786788]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли принудительно указать размер текстовых полей при прилинковывании файла Excel?  [new]
Сергей Лалов
Member

Откуда: Питер,Москва, Выборг, Светогорск
Сообщений: 1266
K-Nick
При создании процедуры импорта в процессе просто укажите ,чтобы создавалось ключевое поле в таблице, куда все это будет импортироваться. Второй или третий этап, точно не помню, вопрос в общем решается за секунду)
Делал. Не помогает.
16 янв 19, 16:32    [21786999]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли принудительно указать размер текстовых полей при прилинковывании файла Excel?  [new]
Сергей Лалов
Member

Откуда: Питер,Москва, Выборг, Светогорск
Сообщений: 1266
По вашему первому вопросу можете выслать вашу базку и шаблон файла экселевского , можно упрощенно, без данных, одна таблица в аксессе, и шаблон экселевского файла. Думаю решим вашу проблему на месте.
16 янв 19, 16:34    [21787006]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли принудительно указать размер текстовых полей при прилинковывании файла Excel?  [new]
K-Nick
Member

Откуда:
Сообщений: 126
Сергей Лалов
По вашему первому вопросу можете выслать вашу базку и шаблон файла экселевского , можно упрощенно, без данных, одна таблица в аксессе, и шаблон экселевского файла. Думаю решим вашу проблему на месте.

Благодарю за предложение, но в нашей организации категорически не приветствуется отправка каких-либо данных "на сторону". Даже шаблонов и пустых баз.
К тому же реализованный вариант меня вполне устраивает.
18 янв 19, 10:49    [21788518]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить