[wlx] odbc-wlx - просмотр Access, Excel, CSV файлов

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Отлично :) Для инструкции правда так себе шаманизм.

А может было бы достаточно рядом с \1033 создать копию и назвать её \1046? Хотя если в реестре ищет, то видимо дохлый номер.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):А может было бы достаточно рядом с \1033 создать копию и назвать её \1046? Хотя если в реестре ищет, то видимо дохлый номер.
Именно. Не помогает.

Но в целом инструкция простой выходит.
1) Ставим драйвера 64 битные командой: accessdatabaseengine_X64.exe /quiet
ключ /passive в последней версии не проходит.
2) Потом по пути HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\FilesPaths
удаляем ключ mso.dll. Ну, или переименовываем в нечто: *mso.dll*
Разумеется "16.0" имеет смысл при установленном 2016 Офисе. Может тут быть и 14.0 и 10.0. И еще какие-то версии.
3) Содержимое папки c:\Program Files\Common Files\microsoft shared\OFFICE16\1033\ копируем в папку C:\Windows\System32
или в папку с установленным Total Commander'ом. Прям рядом с ехе.
4) Открываем xls файл, предварительно, конечно, удостоверившись, что наш плагин установлен и для 32 битного Тотала точно работает.
5) Первая попытка почему-то приводит к фризу всего Тотала. Поэтому мы через диспетчер убиваем его процесс.
6) Открываем Тотал64 заново и опять открываем xls файл. Теперь всё проходит на ура и беспроблемно. Как и все последующие разы;)
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

https://www.upload.ee/files/13614384/Co ... 9.rar.html
Это файлы из комплекта Офиса 64 битного. Те самые, что я брал и кидал из папки 1033 по умолчанию после установки драйверов. Только теперь это ресурс 1049. Т.е. инструкцию выше для Русскоговорящих можно дополнить пунктом 7, говорящим, что пункт 3 можно выполнить по другому - прилагаемые файлы из архива скопировать или в папку C:\Windows\System32 или в папку с установленным Total Commander'ом. Прям рядом с ехе.
Последний раз редактировалось Destiny Пн ноя 08, 2021 12:42, всего редактировалось 1 раз.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

О, спасибо. После релиза добавлю инструкцию в Wiki.
Файлы то ж куда-нибудь перехостю.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

Кстати, пункт 5) Первая попытка почему-то приводит к фризу всего Тотала. Поэтому мы через диспетчер убиваем его процесс: оказывается не везде воспроизводится, что радует. Сейчас у человечка настроил этот плагин с этими дровами и у него с первого же раза все открылось. Никаких фризов, зависонов и тормозов. Так что пункт со *, так сказать.

Добавлено спустя 18 минут:

Блин, чёт до меня ток ща дошло, а что - тип xlsM наш ODBC не может открыть? Засада однако(((
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Насколько я могу судить, то в 32-битные ODBC драйвера этот формат не поддерживают, а вот 64-битные вполне и потому для 64-битной версии достаточно будет просто поменять DetectString у плагина.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Насколько я могу судить, то в 32-битные ODBC драйвера этот формат не поддерживают, а вот 64-битные вполне и потому для 64-битной версии достаточно будет просто поменять DetectString у плагина.
А где-то доказательную базу можно найти? Статьи, обсуждения, ещё что-то?
Ибо я пробовал и эту строку менять, и обе битности проверял - как бы нигде и никак не работает...

Просто если никакой вменяемой ошибки не будет получено в ходе дебага, то ... даж не ясно - как ловить причину этой ошибки.
От плагина я получаю только стандартную отмазку "Cant' connect to database" - но мы то знаем, что это не очень полезная и полная ошибка((( А если ODBC не выдает какого-то аналога GetLastError(), то очень плохо...

И всё же что-то похожее должно быть в доступе.
https://social.msdn.microsoft.com/Forum ... aproviders
там указано, что в схожей ситуации человек всё же получает БОЛЕЕ звучные тексты ошибки/ошибок, что вышло(-ли) в результате попытки открыть файл xlsm. И там весьма хорошие коды есть. А у нас ничего похожего не выводится. Просто не смог и всё. И где и как - не ясно(((
Конечно там другой ЯП, но возможность получения текста ошибки не может же зависеть от этого.
Последний раз редактировалось Destiny Пн ноя 08, 2021 20:59, всего редактировалось 1 раз.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

Код: Выделить всё

} else if (_tcscmp(fileext, TEXT(".xlsx")) == 0 || _tcscmp(fileext, TEXT(".xlsb")) == 0) { ...
Как видно чего то не хватает :)

В коде надо править, в том числе сделать условную компиляцию, чтобы для 32-бит и 64-битные версии отдавали разные строки обнаружения.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):чтобы для 32-бит и 64-битные версии отдавали разные строки обнаружения
А эт прям-точно-точно надо? Вроде как что там, что тут - драйвер есть. Значит файл должен бы был браться)))
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

32-битный ODBC администратор не различает 32 и 64-битные драйверов и показывает их одним списком. Чтобы убедиться, достаточно запустить его (C:\Windows\SysWOW64\odbcad32.exe) и попробовать создать пользовательский DSN для Excel с xlsm. В результате вернет ошибку с odbcji32.dll, что верно.
Возможно после установки MADE x32 будет добавлен драйвер с .xlsm, но сомневаюсь. Надо будет проверить.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):и попробовать создать пользовательский DSN для Excel с xlsm. В результате вернет ошибку с odbcji32.dll, что верно.
Создал. Ошибок нет. Но не понятно как этим пользоваться и как проверить, что получившийся Франкенштейн работоспособен. Попробовал в пустой книге Экселя создать внешнее подключение, выбрал этот новый DSN, но на этапе выбора таблицы обломался. Типа нет ничего. Хотя точно есть.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

После того, как в исходниках добавил xlsm в строку определения и в указанное выше место, то у меня файл открылся.

Отмечу, что MADE2010 x32 не содержит драйвера Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) и потому, чтобы открывать xlsm требуется версия 2016.

P.S. Пока не выкладываю, т.к. вношу правки для вкл/откл фильтров и темной темы, а также пытаюсь забороть косяк с курсором.
Также надо поправить размер областей в строке состояния, если у пользователя стоит 125% или 150% увеличение для текста.

P.P.S. С 2016 отвалился доступ к mdb. Удалил его, установил 2010, отвалился xlsm. Обычная история :D
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):Отмечу, что MADE2010 x32 не содержит драйвера Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb) и потому, чтобы открывать xlsm требуется версия 2016.
Я думаю даже и "на всякий случай" не стоит рассматривать вариант с предложением поставить 2010 версию дров. Только 2016)))
Так что считаем однозначным, что набор (*.xls, *.xlsx, *.xlsm, *.xlsb) должен поддерживаться плагином;)
little-brother писал(а):а также пытаюсь забороть косяк с курсором.
Тут такой момент - если не двигать мышь, то да - это заметно, но как только сдвигаешь хоть на мм. её, то курсор возвращается в обычному состоянию. Эт Раз. Два - для текстовых плагинов есть режим "показ курсора". Включается по F6. В Листере при просмотре/редактировании он работает. Может на это надо как-то реагировать более правильно? типа что-то там возвращать нужное при опросе плагина Тоталом, или самому следить за нажатием)))
И Три - попробуйте дважды быстро нажать F3/F5 - гарантирую - Вы обалдеете)) т.к. ваш плагин раскроется на полный экран. А этого явно не планировалось да и пользы нет от этого режима. Так что что-то надо делать с поддержкой нажатий F1-12.
И с поддержкой ESC - т.к. после активации поиска выйти по нажатию этой кнопки невозможно - оно не работает. Что-то становится типа главным topmost окном и перехватывает это нажатие.

Добавлено спустя 5 минут:
little-brother писал(а):С 2016 отвалился доступ к mdb
Это ж вроде Access'овская база данных? Ну, наверное, если и когда появятся пользователи этого чуда - то тогда и можно начать разбираться)))
Все ж хоть это и полноценный продукт Офиса и много что на нем держится, но вот чаще всего на быстрый просмотр ищут именно экселевские файлы.
little-brother
Сообщения: 205
Зарегистрирован: Ср сен 29, 2021 16:45

Сообщение little-brother »

дважды быстро нажать F3/F5 - гарантирую - Вы обалдеете))
Не, это был баг фикс как раз курсора. Я после поиска строки отправлял в окно Lister нажатие мышки и курсор приходил в норму, только вот при этом отваливается разделитель и выход по Esc, то есть клик не очень хорошее решение как оказалось. При быстром нажатии получается двойной клик и соответственно на весь экран раскрывается. Думаю на F11 добавить, чтобы штатно было (или у Lister своя комбинация?).

.mdb, да, Access. Сам никогда не пользовался, но вот тестирую и на нем. Понятно, что у него распространенность на порядок, а то и два, меньше чем у Excel. Никогда не видел ни одного продукта на этой СУБД.
Destiny
Сообщения: 340
Зарегистрирован: Вт дек 15, 2015 18:22

Сообщение Destiny »

little-brother писал(а):При быстром нажатии получается двойной клик и соответственно на весь экран раскрывается. Думаю на F11 добавить, чтобы штатно было (или у Lister своя комбинация?).
Чего-то не догоняю. Комбинация чего? Листер не может и не должен раскрываться на полный экран с потерей заголовка окна. Это глюк какой-то, что у вас эта возможность вообще появилась. От этого надо избавится!
К тому же есть факт падения тотала при "прыжках" то в полный экран, то обратно. Ясно, что это плагин где-то падает, но от этого не легче. Неее. такого "спецпоказа" не должно быть априори!
Ответить