Вопрос

Я написал код VBA в книге Excel для получения данных из базы данных Access в том же каталоге на рабочем столе.Он отлично работает на моей машине и на нескольких других машинах под управлением Windows XP, но когда мы тестировали это на машине с Vista, мы столкнулись со следующей ошибкой:

Не удалось найти устанавливаемый ISAM

Я много искал в Интернете, но не нашел конкретного ответа.Со строкой подключения вроде все в порядке, и, как я уже говорил, она работает на нескольких машинах.

Кто-нибудь знает, что может быть причиной этого?Моя строка подключения выглядит следующим образом:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ptdb\Program Tracking Database.mdb;

Спасибо

Нет правильного решения

Другие советы

Заключите одинарные кавычки вокруг Extended Properties:

OleDbConnection oconn = 
    new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';");

Попробуйте, это действительно работает.

Попробуйте заключить источник данных в одинарные кавычки:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb';

Проблема, как правило, заключается в пробелах, которые имеют значение для парсера.

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

Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb'; Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';

С таким же успехом вы можете использовать двойные кавычки;однако вам, вероятно, придется убегать от них, и я считаю, что это скорее Боль в алгоритме чем использование синглов.

Вы проверили это? http://support.microsoft.com/kb/209805?В частности, есть ли у вас Msrd3x40.dll.

Вы также можете проверить, установлена ​​ли у вас последняя версия Jet: http://support.microsoft.com/kb/239114

Просто используйте Jet OLEDB:в вашей строке подключения.это решило для меня.

пример ниже:

"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=E:\Database.mdb;Jet OLEDB:Database Password=b10w"

Я только что столкнулся с очень похожей проблемой.

Как и у вас, моя строка подключения выглядела корректной — и действительно, точно такая же строка подключения работала и в других сценариях.

Проблема оказалась в нехватке ресурсов.В 19 случаях из 20 я видел сообщение «Не удалось найти устанавливаемый ISAM», но один или два раза (без каких-либо изменений кода) вместо этого выдавалось сообщение «Недостаточно памяти».

Перезагрузка машины «решила» проблему (на данный момент...?).Это произошло при использовании Jet версии 4.0.9505.0 в Windows XP.

Я использовал это для обновления файла Excel 12 xlsx.

        System.Data.OleDb.OleDbConnection MyConnection;
        System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
        MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\\Programming\\Spreadsheet-Current.xlsx';Extended Properties='Excel 12.0;HDR=YES;';");
        MyConnection.Open();
        myCommand.Connection = MyConnection;
        string sql = "Update [ArticlesV2$] set [ID]='Test' where [ActualPageId]=114";// 
        myCommand.CommandText = sql;
        myCommand.ExecuteNonQuery();
        MyConnection.Close();

Используйте эту строку подключения

string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
      "Data Source=" + strFileName + ";" + "Extended Properties=" + "\"" + "Excel 12.0;HDR=YES;" + "\"";

Эта проблема связана с тем, что компьютер не может найти правильный зарегистрированный ISAM (метод индексированного последовательного драйвера), который необходим Access.

Вероятно, это потому, что на машине не установлен MSACeesss?Я бы убедился, что у вас установлена ​​последняя версия Jet, и если она все еще не работает, найдите файл Msrd3x40.dll на одной из других машин, скопируйте его куда-нибудь на машину с Vista и вызовите на нем regsvr32 (в режиме администратора). ), это должно разобраться для вас.

Используйте строку подключения ниже для чтения из файла XLSX:

String ConnectionString = "Provider = microsoft.ace.oledb.12.0; Data Source =" + <> + "; расширенные свойства = Excel 8.0;";

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top