Показать сообщение отдельно
Старый 13.11.2006, 14:57   #15  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от blokva Посмотреть сообщение
1. При определении колмчества листов в книге в цикле While(!sheet) надо поставить while(!sheets.EOF()), иначе почему-то выдает ошибку
Это не глюк. "Так надо!" (с) Бриллиантовая рука.
Открываем хелп по ADO и читаем оттуда:
Цитата:
Сообщение от туда
OpenSchema Method

Obtains database schema information from the provider.

Syntax
Set recordset = connection.OpenSchema (QueryType, Criteria, SchemaID)

Return Values
Returns a Recordset object that contains schema information. The Recordset will be opened as a read-only, static cursor.

Parameters
QueryType --- The type of schema query to run. Can be any of the constants listed below.
Criteria --- Optional. An array of query constraints for each QueryType option, as listed below.

QueryType values --- Criteria values
adSchemaTables --- TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
Ваш COM sheets - это рекордсет. А для рекордсета переборный цикл вида WHILE NOT recordset.EOF - святое дело. Что в DAO, что в ADO.
Удивительно, как оно у Вас работало до этого... (или до этого еще толком не работало?)
Цитата:
Сообщение от blokva Посмотреть сообщение
2.А вот тут совсем проблеммы: Если в Ecxel файле установить автофильтр, а потом снять его и пробовать загрузить, то при ситывании перечень листов увеличивается на количество фильтров. Причем открыть нет никакой возможности естественно, как побороть это даже не знаю...
Иееххх... Честно говоря, не стал бы я файл, предназначенный для загрузки, разукрашивать всякими продвинутыми эксельными мулечками... И тем более потом анализировать, почему что-то не так происходит... И тем более, что контекст разный: Автофильтр - это Excel.Application, a Ваш sheets - это ADODB... На сколько именно эти COM'ы "синхронизированны" между собой в данный конкретный момент времени - одному Богу известно, и, строго говоря, они и не обязаны...
Может, ну его, такой "разбор полётов", и попробуем наконец классическим SQL'ем через UNION ?