Ошибка:«Не удалось найти устанавливаемый ISAM»
-
21-08-2019 - |
Вопрос
Я написал код 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;";