Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открыть таблицу Excel как базу данных, чтобы все столбцы стали строковыми 
V
    Опции темы
swetik1981
Дата 25.6.2010, 23:13 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



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

Код

        Set cn = New ADODB.Connection 
        Set rs = New ADODB.Recordset 
        With cn 
            .Provider = "Microsoft.Jet.OLEDB.4.0" 
            .ConnectionString = "Data Source=D:/BD.xls; Extended Properties='Excel 8.0; HDR=NO; IMEX=2';" 
            .open 
        End With 
    
cnSQL= "SELECT * FROM [Лист1$]" 

rs.open cnSQL, cn, adOpenStatic, adLockOptimistic




Всё работает, НО: 
Дело в том, что при открытии эксцелевской таблицы Microsoft.Jet сам определяет, какие именно данные находятся в таблице. Я уже примерно допёр, при помощи какого алгоритма он это делает: просматривает несколько первых ячеек в каждом столбце и, если, скажем, находит в них большинство числовых символов, определяет этот столбец, как содержащий числовые значения; тоже делает, если находит даты или строкые значения. Но в тех таблицах, с которыми работаю я, всё не так просто. Например, в столбце могут быть такие значения: 

Код

1 
1 
456 
73 
73 
456 
ликвид 
простой 
73


Программа определит, что этот столбец - числовой, хотя это не так. 

Короче, что мне сделать, чтобы при открытии таблицы Excel, все столбцы в ней опредлялись как заведомо содержащие строковые данные? 

PM MAIL   Вверх
Akella
Дата 26.6.2010, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 3
Всего: 329



Попробовать в наборе данных (я так подразумеваю, что в ADO) ручками создавать persistent-столбцы.
PM MAIL   Вверх
swetik1981
Дата 26.6.2010, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Мне не совсем понятно, что это, но, как мне кажется, не покатит. Тип данных столбцов определяется ещё на стадии выполнения sql-запроса, поэтому в ADO придётся работать с тем, что есть. Поясните, пожалуйста, подробнее
PM MAIL   Вверх
swetik1981
Дата 27.6.2010, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 20.12.2007

Репутация: нет
Всего: нет



Всем большое спасибо за помощь! ) 
Всё действительно просто - нашлось на буржуйском форуме. 
Просто необходимо изменить одно свойство в ConnectionString и выставить IMEX=1, а не 2, как было до этого. 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.