ADO + Excel

Программирование на Visual Basic for Applications
Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

ADO + Excel

Сообщение Annushka » 12.10.2006 (Чт) 16:18

Интересная вещь происходит. Пример прилагается.
Делаю отбор записей, в которых в четвертой колонке стоит 1. Находит. Убираем самую верхнюю единичку из четвертой колонки, остальные не находятся. Т.е. если вверху достаточно большой участок данных, которые не подходят, то не находятся и все остальные. :(
Может быть, есть какие-то параметры о количестве записей?
Вложения
test_sql.xls
(28.5 Кб) Скачиваний: 69

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 12.10.2006 (Чт) 17:16

у меня все нормально
"Найдено 3 записи"
I Have Nine Lives You Have One Only
THINK!

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 13.10.2006 (Пт) 9:06

А вот это уже интересно!
А у кого-нибудь еще тоже все хорошо?

P.S. А вы '1' удаляли совсем или заменяли на другой символ?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.10.2006 (Пт) 9:33

А какая строка подключения?
Lasciate ogni speranza, voi ch'entrate.

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 13.10.2006 (Пт) 9:39

Код: Выделить всё
Filename = ActiveWorkbook.Path & "\test_sql.xls"
ConnectionString_s = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Filename & ";Extended Properties=""Excel 8.0;HDR=No"";"

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 13.10.2006 (Пт) 16:49

Annushka писал(а):А вот это уже интересно!
А у кого-нибудь еще тоже все хорошо?

P.S. А вы '1' удаляли совсем или заменяли на другой символ?

удалял клавишей Del
I Have Nine Lives You Have One Only
THINK!

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 13.10.2006 (Пт) 21:23

"Rows to Scan: Excel does not provide ADO with detailed schema information about the data it contains, as a relational database would. Therefore, the driver must scan through at least a few rows of the existing data in order to make an educated guess at the data type of each column. The default for "Rows to Scan" is eight (8) rows. You can specify an integer value from one (1) to sixteen (16) rows, or you can specify zero (0) to scan all existing rows. This is done by adding the optional MaxScanRows= setting to the connection string, or by changing the Rows to Scan setting in the DSN configuration dialog box.

However, due to a bug in the ODBC driver, specifying the Rows to Scan (MaxScanRows) setting currently has no effect. In other words, the Excel ODBC driver (MDAC 2.1 and later) always scans the first 8 rows in the specified data source in order to determine each column's datatype."

http://support.microsoft.com/kb/257819

Дополнение: Решение описано здесь: http://support.microsoft.com/kb/189897/EN-US/
Привет,
KL

Annushka
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 17.05.2005 (Вт) 12:44
Откуда: Украина

Сообщение Annushka » 16.10.2006 (Пн) 9:23

Спасибо большое.
Решений оказалось 2:
1. Установить в реестре HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows=0
2. В строке коннекта добавить IMEX=1, т.е. моя получилась такая:
Код: Выделить всё
Filename = ActiveWorkbook.Path & "\test_sql.xls"
ConnectionString_s = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Filename & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";"


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 83

    TopList