Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Открыть таблицу Excel базу данных Добавлено: 26.06.10 00:08  

Автор вопроса:  Zahar | Web-сайт: partnerka-ru.info
Открываю экселевский файл, как базу данных, с помощью такого кода


        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, все столбцы в ней опредлялись как заведомо содержащие строковые данные?

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 s12



Вопросов: 24
Ответов: 363
 Профиль | | #1 Добавлено: 26.06.10 09:03
Попробуй пометить их в екселе как текстовые ;)

Ответить

Номер ответа: 2
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #2
Добавлено: 26.06.10 23:24
Не катит!
СУБД совершенно наплевать, как я пометил в эксцелевские столбцы. Она смотрит только на содержимое первых ячеек этих столбцов.
Я пока делаю по другому: прежде, чем открыть файл как базу данных, я его открываю с помощью эксцелевского приложения, добавляю в каждую ячейку первых десяти строк заведомо строковые данные (например, слово "Вася";), сохраняю файл, потом открываю с помощью СУБД, удаляю первые десять строк.
Это - работает, но метод, сами видите, изуверский. :(
Может кто подскажет решение попроще

Ответить

Номер ответа: 3
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #3
Добавлено: 27.06.10 15:25
Всем большое спасибо за помощь! :))
Всё действительно просто - нашёл на буржуйском форуме.
Просто необходимо изменить одно свойство в ConnectionString и выставить IMEX=1, а не 2, как я делал до этого.

Ответить

Номер ответа: 4
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #4
Добавлено: 27.06.10 15:30
Всем большое спасибо за помощь! )
Всё действительно просто - нашлось на буржуйском форуме.
Просто необходимо изменить одно свойство в ConnectionString и выставить IMEX=1, а не 2, как у меня было до этого.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам