Перейти к содержанию
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
  • Модераторы
Опубликовано (изменено)

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

 

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 пользователей онлайн

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