Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: JohnLennin от 16-10-2013, 18:30:20

Название: Подключение к MS Access
Отправлено: JohnLennin от 16-10-2013, 18:30:20
Уважаемые коллеги!
Раньше я писал приложения для autocad на vba, недавно начал использовать для этого .NET, поэтому не кидайте гнилыми помидорами если вопрос дурацкий.
Задача - подключиться к базе MS Access вытащить оттуда данные, создать объекты на основе этих данных.
на VBA я без проблем добираюсь до того что мне нужно. А вот с .Net возникают странные проблемы  :o
Написал .dll которая активирует форму и извлекая данные из БД Access'а складывает их куда надо.
Проблема в том, что почему-то когда я подгружаю эту dll через netload и активирую ее соответствующей командой она запускается и работает, но в упор не хочет подключаться к базе. :'(

Цитировать
System.Runtime.InteropServices.COMException (0x800A0E7A): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.

При этом если я запускаю эту dll из своего приложения - базу видит, подключается и извлекает все данные.
К базе подключаюсь через ADODB, ошибка происходит на dbs.Open() и только, когда она запускается из AutoCAD
        Dim dbs As New ADODB.Connection
        Dim rst As New ADODB.Recordset
        dbs.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DataBasePath
        dbs.Open()


В чем может быть проблема?
Название: Re: Подключение к MS Access
Отправлено: Александр Ривилис от 16-10-2013, 18:32:04
Я правильно понимаю, что речь идёт о 64-разрядной Windows и 64-разрядном AutoCAD?
Название: Re: Подключение к MS Access
Отправлено: JohnLennin от 16-10-2013, 18:35:05
Да, точно. 64-bit и ОС и AutoCAD в этом может быть проблема? Если да, то как бороться и где почитать про это?
Название: Re: Подключение к MS Access
Отправлено: Александр Ривилис от 16-10-2013, 18:42:39
Да, точно. 64-bit в этом может быть проблема?
Именно. Если мне не изменяет память, то нужно скачать и установить Microsoft Access Database Engine 2010 Redistributable (http://www.microsoft.com/en-us/download/details.aspx?id=13255) и изменить строку dbs.ConnectionString.
Название: Re: Подключение к MS Access
Отправлено: JohnLennin от 17-10-2013, 22:51:06
Действительно работает на x64 только с 64 разрядным DataEngine. Причем через ADODB туда уже не добраться, только OLEDB connection
И строка другая и методы другие
ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DataBasePath & ";User ID=Admin;Password=;"
Dim dbs As New OleDb.OleDbConnection(ConnectionString)
dbs.Open()
Собственно говоря вопрос оказался не свсем по автокаду, кто-же знал, что если компилятору поставить условие кмпилить только под x64 то эта ошибка полезет не только в автокаде но и везде, где она раньше не вылазила и все работало. А я все на Автокад грешил. :-\

Спасибо Александр, огромное!!!!