Перейти к содержанию
Fire Monkey от А до Я
  • 0

FireDAC + ODBC + Excel (.xls; xlsx)


Andrey Efimov

Вопрос

  • Модераторы
Приветствую.
Необходимо получить данные из экселевского файла и обработать их (возможно с обратной перезаписью).
Всё хорошо работает у меня на 32 битной машине с W7 на борту и Delphi X Seattle.
Программку необходимо передать другому человеку, у него W7 64 бита. Перекомпилировал под 64, кидаю ему, запускает и ошибка "[FireDAC][Phys][ODBC][Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию.".
 
Причём передаю xlsx файл, который работает у меня.
 
Вот ещё попробовали, человек пересохраняет этот файл в xls и запускает мою 32 битную версию, через раз программа кушает этот файл... или выдаёт такую ошибку ""[FireDAC][Phys][ODBC][Microsoft][Драйвер ODBC Excel] Обновление невозможно. База данных или объект доступны только для чтения.""
 
на подключении установлено:
ODBCDriver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}
DriverID=ODBC
 
Сам драйвер на 64 битной машине установлен и прописан.
 
В чём может быть проблема?
 
АП (19.11.15). Приложение удалось проверить ещё на 3-х 32 битных системах, везде всё работает как часы, проблема конкретно в 64 битной системе...
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы

Наверное проблема в версиях Excel-я. Может ли он открыть xlsx файл на своем компьютере?  :)

Открывает, без проблем.

 

у меня 64 битная. кидай исходники и файл. проверю.

 

Мне на sql.ru ответил Дмитрий Арефьев, он тоже проверил у себя, сказал всё работает... видимо проблема именно у пользователя на компе...

 

Вот файлы:

Исходники: https://drive.google.com/file/d/0BwEZB8sRo0DSOG00WkJKcWp1cEk/view?usp=sharing

EXE(32 bits)+Excel файл: https://drive.google.com/file/d/0BwEZB8sRo0DSZ2FUMndsandiNTQ/view?usp=sharing

 

Выбираете Excel файл, жмёте "Обработка Xls". (это на всякий случай, не подумайте ничего плохого :) ПО временно написано конкретно под этот Excel файл.

 

Буду признателен за тесты на 64 битных системах.

 

p.s. Прошу, строго по коду не судить, это вообще "рабочий" вариант приложения... Потом всё чистится (от всяких дубликатов и т.п.) и приводится в порядок.

Ссылка на комментарий
  • 0

Win 8.1, 64 бит, Офис 2010.

Исходники не смотрел, exe отработал нормально,

19.11.15  15:56:13 - Исходные файлы: Выбран файл: C:\Temp\123\Ostatki.xlsx
19.11.15  15:56:14 - XLS файл: Обработка началась...
19.11.15  15:56:14 - XLS файл: Обработка завершена.
Ссылка на комментарий
  • 0
Win 7, 64 бит, Офис 2010.
19.11.15  19:00:21 - Исходные файлы: Выбран файл: C:\Users\Downloads\EXECompareXMLandXLS\Ostatki.xlsx
19.11.15  19:00:23 - XLS файл: Обработка началась...
19.11.15  19:00:24 - XLS файл: Обработка завершена.
Ссылка на комментарий
  • 0
  • Модераторы

Огромное всем спасибо. Будем теперь точно разбираться, в чём дело, у пользователя на компе...

 

p.s. Тему позже закрою.

Изменено пользователем Andrey Efimov
Ссылка на комментарий
  • 0
  • Модераторы

Win 7, 64 бит, Офис 2003.

 

ваша ошибка думаю надо в сторону офиса копать )

 

О_о, вот спасибо. Но тут я примерно представляю в чём беда... устаревшая версия офиса, для подключения следует указывать XLS файл, но не XLSX файл. Вот полезная ссылка, мне пригодилась :), может ещё кому-то пригодится: Microsoft Excel 2007 ODBC Driver connection strings

 

Если у кого-то установлен 2007 офис, попробуйте пожалуйста приложение!

Ссылка на комментарий
  • 0

На работе 2010. дома 2007. дома тоже работает

19.11.15  20:42:16 - Исходные файлы: Выбран файл: C:\Users\Downloads\EXECompareXMLandXLS\Ostatki.xlsx
19.11.15  20:42:18 - XLS файл: Обработка началась...
19.11.15  20:42:19 - XLS файл: Обработка завершен
Ссылка на комментарий
  • 0
  • Модераторы

Пообщался ещё с Дмитрием, вот его ответы:

По поводу работы на 2003 и 2016 офисе.

    Если речь про ошибку "Источник данных не найден ...", то указанный ODBC драйвер не найден.
    Если речь про ошибку "Обновление невозможно ...", то ХЗ - Google в помощь и желательно на eng.

Он считает, что проблема именно в драйвере. Дал, ещё полезную ссылку в справку: http://docwiki.embarcadero.com/RADStudio/Seattle/en/DBMS_Environment_Reports_%28FireDAC%29

хотя справка, это первое место куда иду я, чтобы найти ответы на вопросы и по этой ссылке по моему уже был (сейчас не грузит страничку что-то...) :)

Ссылка на комментарий
  • 0
Если речь про ошибку "Источник данных не найден ...", то указанный ODBC драйвер не найден.

 

Логично.

Нужно запустить 64-битный Odbcad32.exe и посмотреть доступные источники данных для 64 битных приложений, есть ли там драйвер для Excel

Для 32 битных нужно запустить его же, но из папки %systemdrive%\Windows\SysWoW64.

https://support.microsoft.com/ru-ru/kb/942976

 

Заодно - посмотреть в настройки драйвера, возможно там выставлено "открывать только для чтения"

post-1218-0-15114300-1447951667.png

Изменено пользователем kami
Ссылка на комментарий
  • 0
  • Модераторы
Разобрались.
В 64 битной системе есть два ODBC(64 и 32). Так вот, запустили восстановление системы и 32 битное приложение заработало как часы, 64 приложение так и не работает.
Вот два важных файла:
To setup an ODBC link for 32bit application you must use
C:\Windows\SysWOW64\odbcad32.exe
 
To setup an ODBC link for 64bit application you must use
C:\Windows\System32\odbcad32.exe
 
При попытке запуска этих файлов выяснилось, что файл "C:\Windows\SysWOW64\odbcad32.exe" заработал нормально, благодаря чему и заработало моё 32 битное приложение, а файл "C:\Windows\System32\odbcad32.exe" не работает, выдавая ошибку
"Администратор Microsoft ODBC
-------------------------—
Не удается найти программы установки для драйвера ODBC Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb). Переустановите драйвер."

 

 

жмём "Ок" и видим ещё одну ошибку
"Ошибка ConfigDSN, ConfigDriver или ConfigTranslator для драйвера
-------------------------—
Найденные ошибки:
 
В указанном DSN архитектура драйвера и архитектура приложения не соответствуют друг другу. ".

 

 

Т.е. слетел драйвер для 64 битной системы.
По причине того, что 32 битное приложение заработало, было решено не заморачиваться и не искать этот драйвер, чтобы переустановить, а оставить всё как есть :)
 
Но, если кто знает ещё что-то или где достать рабочий драйвер, то пишите.
 
 
p.s. Всем ещё раз спасибо ;)
Ссылка на комментарий
  • 0
  • Модераторы

Простите за возможный офтоп, именно по этой причине в FMX использую платный TMS FlexCel for VCL & FireMonkey. Очень эффективно и без глюков!

Знаю, про этот компонент, но платить ещё ~8500 руб., только для того, чтобы помочь другу, для меня совсем не вариант. К тому же, это всё-таки оффтоп (сообщение вообще на рекламное похоже...). FireDac вполне себе справляется с поставленной задачей, просто у друга с компом проблемы, у остальных прога отлично отрабатывает...

Ссылка на комментарий
  • 0

 

Простите за возможный офтоп, именно по этой причине в FMX использую платный TMS FlexCel for VCL & FireMonkey. Очень эффективно и без глюков!

Знаю, про этот компонент, но платить ещё ~8500 руб., только для того, чтобы помочь другу, для меня совсем не вариант. К тому же, это всё-таки оффтоп (сообщение вообще на рекламное похоже...). FireDac вполне себе справляется с поставленной задачей, просто у друга с компом проблемы, у остальных прога отлично отрабатывает...

 

Реклама? Никогда не занимался рекламой)))) Я обычный живой человек, живущий в Челябинске. О TMS знаю только отчасти, поверь компонент действительно стоит своих денег. Давно его использую, забыл что такое OLE)

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...