Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2012, 00:36   #11
Евгений_Магистр
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Я не эксперт в БД и ADO, но может дело в разрядности офиса?
64-разрядная ОС и офис тоже. Ранее, когда была 32-разрядная ОС - все драйвера отображались.
Евгений_Магистр вне форума Ответить с цитированием
Старый 28.04.2012, 00:39   #12
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

32-битный офис не пробовали ставить? И что произойдёт, если выбрать поставщика данных, который исчезает из списка?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 28.04.2012, 00:42   #13
Евгений_Магистр
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 64
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
32-битный офис не пробовали ставить? И что произойдёт, если выбрать поставщика данных, который исчезает из списка?
32 не пробовал ставить. Если я выбираю драйвер в Delphi 7, то подключается без проблем. Но стоило мне только перенести exe и БД на другой комп, как у меня появилась следующая ошибка при запуске программы:

«Невозможно найти устанавливаемый ISAM»
Евгений_Магистр вне форума Ответить с цитированием
Старый 28.04.2012, 00:43   #14
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Я пас .
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 28.04.2012, 00:57   #15
Евгений_Магистр
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 64
По умолчанию

Нашел решение! Помогло! Если вдруг кому пригодится:

Как только мы создаем UDL файл и запустить его на 64-разрядных ОС, она будет перечислять до всех 64-битных OLE DB, установленных на компьютере.
Причина этого проста. При двойном нажатии на UDL файл на 64-битной машине, это будет перечислить только 64-битный OLE DB, и если у нас есть 32 поставщиков Ole DB бит установлен, мы не сможем найти, что в перечисленных список.
Создать UDL файл с именем Test.udl по пути C: \.
Когда мы создали UDL файл на 64-битной машине и попытаться открыть ее, следующие
"C: \ Program Files \ Common Files \ System \ Ole DB \ Oledb32.dll", OpenDSLFile C: \ Test.udl
Команда будет вызываться через C: \ WINDOWS \ system32 \ rundll32.exe.
Здесь, как и Oledb32.dll rundll32.exe 64 бит и не буду перечислять 32 библиотек.

Тогда как для выполнения UDL в котором перечислены вниз 32 библиотек?
Мы можем найти 32-битной версии Oledb32.dll по пути: C: \ Program Files (x86) \ Common Files \ System \ Ole DB
и 32-битные версии rundll32.exe по пути: C: \ WINDOWS \ SysWOW64.

Нам нужно выполнить следующую команду из командной строки или Пуск / Выполнить:
C: \ Windows \ syswow64 \ rundll32.exe "C: \ Program Files (x86) \ Common Files \ System \ Ole DB \ Oledb32.dll", OpenDSLFile C: \ Test.udl
Проверьте пути rundll32.exe и Oledb32.dll при выполнении этой команды!
Здесь у вас есть 32-битный OLE DB.
Евгений_Магистр вне форума Ответить с цитированием
Старый 28.04.2012, 01:08   #16
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Всё же я был на верном пути...
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 22.01.2014, 22:28   #17
ESV1987
Новичок
Джуниор
 
Регистрация: 22.01.2014
Сообщений: 2
По умолчанию

столкнулся с той же проблемой

Это конечно хорошо, что Евгений_Магистр нашёл как отобразить все 32-битные драйверы в .udl. Но может я что-то не понимаю, конечно, но работать-то внешнее подключение от этого не стало.

Суть такова: в Delphi весь список драйверов отображается верно. А когда пытается проверить файл подключения .udl отдельно, он говорит, что нет такого поставщика данных (конечно, ему же даже не виден искомый драйвер Оракл). По описанной выше схеме можно запустить .udl, чтобы он коннектился, используя директорию SysWOW64, но в обычном режиме он же её всё равно не использует, а ищет дрова в system32.

Как ему объяснить, чтобы по умолчанию он искал драйвера в другом месте?

Аналогично с ODBC в Панели управления. Ссылка по умолчанию указывает на system и там всего 2 драйвера (SQL Server). А если изменить путь на SysWOW64 - то все драйвера видны...
ESV1987 вне форума Ответить с цитированием
Старый 12.04.2014, 12:57   #18
ESV1987
Новичок
Джуниор
 
Регистрация: 22.01.2014
Сообщений: 2
По умолчанию

В общем из Делфи видны как раз все драйвера: и 32 и 64-битные, но т.к. суть .udl - настройка подключения без использования среды Делфи, необходимо, чтобы весь список открывался и при нажатии на udl.

Проблема в том, что на 64-битной системе, когда мы открываем udl файл, он открывается с использованием библиотеки
C:\Program Files\Common Files\System\Ole DB\Oledb32.dll (функция OpenDSLFile)
с использованием exe-шника C:\WINDOWS\system32\rundll32.exe

А нам надо, чтобы открывалась библиотека
C:\Program Files (x86)\Common Files\System\Ole DB\Oledb32.dll (функция OpenDSLFile)
с использованием exe-шника C:\WINDOWS\SysWOW64\rundll32.exe

Одноразово это можно сделать и через командную строку, но я выбрал простой вариант: прицепить к каждому подключению ещё ярлык такого вида (свойство ярлыка "объект"):

C:\Windows\syswow64\rundll32.exe "C:\Program Files (x86)\Common Files\System\Ole DB\Oledb32.dll", OpenDSLFile test.udl

где test.udl - имя Вашего .udl-файла, который должен лежать в одной папке с данным ярлыком

Впоследствии открывать настройку подключения, естественно, только через ярлык, а не через сам udl-файл.

Собственно, шёл к этому сам, но последним штрихом, так сказать, стала статья: msdn
из которой и нашёл итоговое решение
ESV1987 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при указании utf-8 все символы отображаются квадратиками - в не правильной кодировке ZvEr_HaCkEr HTML и CSS 4 18.02.2011 15:37
В журнале исправлений в общей книге Excel 2007, не отображаются все изменения Tanyushaalex Microsoft Office Excel 0 21.10.2010 08:18
QuickRep не все элементы отображаются при просмотре xxxsas Общие вопросы C/C++ 1 12.04.2009 08:33
В IE7.0 не отображаются некоторые элементы страниц форума, которые нормально отображаются в FireFox3.0. Taras HTML и CSS 10 27.09.2008 13:30