Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2013, 18:27   #1
iNataliya
Пользователь
 
Регистрация: 29.08.2013
Сообщений: 27
По умолчанию Тип данных для Recordset в Эксель

Доброго всем времени суток,

Подскажите пожалуйста есть ли возможность для Recordset в Эксель установить типы данных по столбцам? Сама база хранится в листе Эксель и Recordset не правильно определяет тип данных, и например отрезает слишком длинный текст до 255 знаков.

Заранее спасибо.
iNataliya вне форума Ответить с цитированием
Старый 31.10.2013, 19:10   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
Recordset не правильно определяет тип данных, и например отрезает слишком длинный текст до 255 знаков
точно? возможно, в окне просмотра Вы видите 255 знаков, а если спросить длину поля - увидите реальный размер строки в несколько тысяч или десятков тысяч знаков.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 31.10.2013, 20:05   #3
iNataliya
Пользователь
 
Регистрация: 29.08.2013
Сообщений: 27
По умолчанию

Я вытаскиваю данные в Textbox, там у меня не установлены ограничения
iNataliya вне форума Ответить с цитированием
Старый 01.11.2013, 09:32   #4
AndVGri
Форумчанин
 
Регистрация: 10.02.2012
Сообщений: 109
По умолчанию

iNataliya
Такая проблема с "отрезанием" строк есть в случае если строки с длинной больше 255 символов идут после задаваемого для драйвера числа просматриваемых строк для определения типа поля (если не ошибаюсь, по умолчанию 8 строк). Можно поискать, какой параметр этим управляет. В реестре это TypeGuessRows. Если использовать ODBC драйвер, то можно задать MaxScanRows. Наиболее просто создать первую фиктивную (скрытую) строку таблицы, где для соответствующих длинных строковых полей ввести слово больше 255 символов и отфильтровывать эту строку по признаку не равенства с этим введённым значением.

Последний раз редактировалось AndVGri; 01.11.2013 в 09:37.
AndVGri вне форума Ответить с цитированием
Старый 01.11.2013, 15:22   #5
iNataliya
Пользователь
 
Регистрация: 29.08.2013
Сообщений: 27
По умолчанию

Спасибо за ответ, действительно это помогает. Я правильно понимаю, мне необходимо делать запросы таким образом, чтобы попадала обязательно первая строка, даже если мне нужно всего одно значение, мне придется вытаскивать две строки - первую и нужную?
iNataliya вне форума Ответить с цитированием
Старый 01.11.2013, 16:33   #6
AndVGri
Форумчанин
 
Регистрация: 10.02.2012
Сообщений: 109
По умолчанию

Цитата:
мне придется вытаскивать две строки - первую и нужную?
Не обязательно. Драйвер, что OLEDB, что ODBC перед выполнением запроса сканирует определённое число строк для определения типов данных полей таблицы. Если в пределах этого числа строк встретится длинная, то тип поля будет LongVarChar (поле Memo). С возвращаемым набором строк по Select это не связано, поэтому фиктивную можно отфильтровать, чтобы не мешала.
AndVGri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных из recordset Sergey112233 Microsoft Office Excel 5 04.10.2011 18:45
Форма для ввода данных в эксель analyst Microsoft Office Excel 2 30.06.2010 01:30
Тип переменной Recordset Insightful Microsoft Office Access 6 23.04.2010 15:10
Макрос для экспорта данных в таблицу эксель scythe Microsoft Office Excel 2 21.02.2010 22:18
Тип данных OLE для таблиц Access rockedit БД в Delphi 1 12.12.2009 21:15