Ошибка: "Не удалось найти Installable ISAM"
Я написал код VBA в книге Excel для извлечения данных из базы данных Access в том же каталоге на рабочем столе. Он отлично работает на моей машине и на нескольких других компьютерах под управлением Windows XP, но когда мы протестировали это на машине Vista, мы столкнулись со следующей ошибкой:
Не удалось найти устанавливаемый ISAM
Я сделал кучу поиска в Интернете, но, похоже, не нашел конкретного ответа. Строка подключения кажется прекрасной, и, как я уже упоминал, она работает на нескольких машинах.
Кто-нибудь знает, что может быть причиной этого? Строка подключения следующая:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ptdb\Program Tracking Database.mdb;
Спасибо
Ответы
Ответ 1
Поместите одиночные кавычки вокруг Extended Properties
:
OleDbConnection oconn =
new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';");
Попробуйте, это действительно работает.
Ответ 2
Попробуйте помещать одинарные кавычки вокруг источника данных:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb';
Ответ 3
Вы проверили этот http://support.microsoft.com/kb/209805? В частности, есть ли у вас Msrd3x40.dll.
Вы также можете проверить, что у вас установлена последняя версия Jet: http://support.microsoft.com/kb/239114
Ответ 4
Просто используйте Jet OLEDB: в строке подключения.
он решил для меня.
приведен пример ниже:
"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=E:\Database.mdb;Jet OLEDB:Database Password=b10w"
Ответ 5
Я только что столкнулся с очень похожей проблемой.
Как и вы, моя строка подключения оказалась правильной - и действительно, точно такая же строка соединения работала в других сценариях.
Проблема оказалась нехваткой ресурсов. 19 раз из 20, я бы увидел, что "Не удалось найти устанавливаемый ISAM", но один или два раза (без каких-либо изменений кода вообще), вместо этого он будет иметь "Out of memory".
Перезагрузка машины "решила" проблему (на данный момент...?). Это произошло с помощью Jet версии 4.0.9505.0 в Windows XP.
Ответ 6
Я использовал это для обновления файла 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();
Ответ 7
Используйте эту строку подключения
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + strFileName + ";" + "Extended Properties=" + "\"" + "Excel 12.0;HDR=YES;" + "\"";
Ответ 8
Эта проблема возникает из-за того, что машина не может найти правильный ISAM (индексированный метод последовательного драйвера), зарегистрированный для доступа.
Вероятно, потому, что на компьютере не установлены MSACeesss? Я бы удостоверился, что у вас установлена последняя версия Jet, и если она по-прежнему не работает, найдите файл Msrd3x40.dll с одного из других компьютеров, скопируйте его где-нибудь на машину Vista и вызовите regsvr32 (в режиме администратора), который должен отсортировать его для вас.
Ответ 9
Используйте строку подключения ниже для чтения из файла XLSX:
string ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Source =" + < > + "; Extended Свойства = Excel 8.0;";