powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Подключение к xlsb
9 сообщений из 9, страница 1 из 1
Подключение к xlsb
    #38777980
squitty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи, доброго времени суток!
Прошу помощи, не могу никак разобраться.

Есть файл .xlsb, в котором больше 250к строк.

В Excel VBA делаю запрос:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Dim apCon As Object
Dim apRec As Object
 
Set apCon = CreateObject("ADODB.Connection")
apCon.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Cells(18, 4) _
                & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";"
 
Set apRec = CreateObject("ADODB.Recordset")
kkSql = "SELECT [F4], [F5], [F7], [F8], [F10], [F11], [F17], [F22], [F27] " & _
        "FROM [ЛИСТ$] WHERE [F9] = 'УСЛОВИЕ_1' AND [F32] = '1' AND MONTH(F27) = '9' AND [F22] <> ''"
    
apRec.Open kkSql, apCon
 
kkSh.[a2].CopyFromRecordset apRec
apRec.Close: Set apRec = Nothing
apCon.Close: Set apCon = Nothing




Но запрос возвращает только 150к строк - на остальные никакого внимания не обращает, а порой, если брать другой файл (аналогичная база) запрос в рекордсет загоняет только 60к. В общем, всегда какое-то произвольное значение.

С подключением к .csv была такая же проблема, но нашел решение с использованием файла schema.ini - но это для текстового формата, а структура .xlsb, я так понимаю, отличается.

При этом если пересохранить в файл в xlsx, то все работает корректно.
Насколько я могу понять, эта ошибка в определении подключения... но вот выявить ошибку никак не могу.

Прошу помочь!
Заранее благодарен.
...
Рейтинг: 0 / 0
Подключение к xlsb
    #38778038
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделайте полные запросы (без указания Fields и WHERE) и обработайте их уже самим Excel'ем. Всё ли будет прочитано? итаки да, я тодозреваю, что проблема может быть и вот тут: "MONTH(F27) = '9' AND [F22] <> ''"
...
Рейтинг: 0 / 0
Подключение к xlsb
    #38783472
squitty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даже если я делаю самый простой запрос:
Код: plsql
1.
SELECT * FROM [ЛИСТ$]



и вставляю данные, он не видит всех строк.
Или не вставляю, а просто прошу вывести сколько строк в рекордсете, тоже самое :(
...
Рейтинг: 0 / 0
Подключение к xlsb
    #38783476
squitty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При этом попробовал пересохранить файл в формат .xlsx - все работает корректно, но это увеличивает время работы с 1,5 минут до 10-13 минут, что критично.

Так что я склонен думать, что ошибка в самом подключении. Но никак не могу понять в чем.

P.S. Сорри, не нашел как отредактировать сообщение свое.
...
Рейтинг: 0 / 0
Подключение к xlsb
    #38783501
squitty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм, дошел до того, что при открытой книге все работает как надо, при закрытой возникает описанная выше проблема.
В чем может быть подвох?
...
Рейтинг: 0 / 0
Подключение к xlsb
    #38783511
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А подход никак нельзя сменить?
Ну кто же такое количество строк гоняет в экселе?
Перетащи в mdb и делай все что надо за секунды, а не минуты....
...
Рейтинг: 0 / 0
Подключение к xlsb
    #38783575
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProНу кто же такое количество строк гоняет в экселе?Некоторые гоняют

Вчера тестил быстродействие одного алгоритма - запрос на UNION трех диапазонов по 100k записей (т.е. получить все данные -дубликаты+сортировка) выполнялся за < 3 сек., какие минуты, что ты?

Поэтому меня и поражает, что у ТС'а минуты его запрос выполняется.
Вообще, без образца (причем - полного) данных сложно сказать, в чём проблема...

А, да, ещё вариант. squitty , не пробовали добавить перед запросом
Код: vbnet
1.
apRec.CursorLocation = 3

?
...
Рейтинг: 0 / 0
Подключение к xlsb
    #38783633
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMНекоторые гоняютНамедни заехал в гости, попросили разобрать садовые качели на зиму. Два десятка болтов с гайками. Удивлялись потом скорости, с которой я это сделал. Потому что до меня пытались сделать это крестовой отверткой на два номера меньше и пассатижами. Отвертка подходящего размера и накидной ключ со "звездочкой" лежали рядом.

Я к чему, можно и пассатижами, но лучше все-таки ключом, пусть даже придется немного потратить время, чтобы подобрать подходящий инструмент.
...
Рейтинг: 0 / 0
Подключение к xlsb
    #38783644
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
squittyзапрос возвращает только 150к строк - на остальные никакого внимания не обращает, а порой, если брать другой файл (аналогичная база) запрос в рекордсет загоняет только 60к. В общем, всегда какое-то произвольное значение.
Не очень понятно, как именно получается количество "возвращаемых" записей. Не поленитесь вставить цикл перебора всех записей и посчитать их - просто в порядке дебаггинга:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
apRec.Open kkSql, apCon
With apRec
  .MoveFirst
  n=0
  Do Until .EOF
    n=n+1
    .MoveNext
  Loop
End With
MsgBox "RecordCount = " & n
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Подключение к xlsb
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]