Проблемы
При попытке обновить данные в книге Microsoft Excel, которая ссылается на базу данных Microsoft Access, может появиться следующее сообщение об ошибке:
Не удалось найти устанавливаемый ISAM
Эта проблема возникает в том случае, если книга была ранее открыта и обновлена в более поздней версии Excel.
Причина
Если книга Excel, связанная с базой данных Access, открыта в более поздней версии Excel, параметры могут быть добавлены в строку подключения. Если более ранняя версия Excel не распознает эти параметры, она вызывает сообщение об ошибке.
Решение
Чтобы устранить эту проблему, удалите новые параметры из строки подключения. Для этого выполните следующие действия:
-
Откройте книгу Excel.
-
На ленте Data (данные ) нажмите кнопку Connections (соединения ).
-
В диалоговом окне подключения к книге выберите подключение к базе данных Access и нажмите кнопку свойства.
-
В диалоговом окне Свойства подключения откройте вкладку Определение .
-
Удалите из строки соединения следующие параметры:
Jet OLEDB: пропуск проверки UserInfo = ложь; Jet OLEDB: ограниченное кэширование базы данных = ложь; Jet OLEDB: обход ChoiceField проверки = ложь
-
В диалоговом окне Свойства подключения нажмите кнопку ОК. На этом этапе данные должны быть обновлены.
-
В диалоговом окне подключения к книге нажмите кнопку Закрыть, а затем сохраните обновленную книгу.
Дополнительная информация
Если вы обновите и сохраните книгу в более новой версии Excel, эта неполадка будет повторяться.
Нужна дополнительная помощь?
copy the below code to a buton click event. then change the path for you mdb and xls.
it will work..100%…………………
Dim DBImportConn As New OleDbConnection
Dim DBImportCmd As New OleDbCommand
Dim DBImportReader As OleDbDataReader
Dim ImpAccessData As Access.Application
Dim FilePath As String
If File.Exists(Application.StartupPath & «DatabasePatientData.mdb») Then
File.Delete(Application.StartupPath & «DatabasePatientData.mdb»)
End If
ImpAccessData = New Access.ApplicationClass
ImpAccessData.Visible = False
ImpAccessData.NewCurrentDatabase(Application.StartupPath & «DatabasePatientData.mdb»)
ImpAccessData.CloseCurrentDatabase()
ImpAccessData.Quit(Access.AcQuitOption.acQuitSaveAll)
ImpAccessData = Nothing
FilePath = Txt_FilePath.Text
If DBImportConn.State = ConnectionState.Open Then DBImportConn.Close()
DBImportConn = New OleDbConnection(«Provider=Microsoft.Jet.OLEDB.4.0;Data Source=» & FilePath & «;Extended Properties=»»Excel 8.0;HDR=Yes;IMEX=1″»;»)
DBImportConn.Open()
DBImportCmd = DBImportConn.CreateCommand
DBImportCmd.CommandText = «SELECT * INTO [MS Access;Database=» & Application.StartupPath & «DatabasePatientData.mdb» & «].[Sheet1] FROM [Sheet1$]»
DBImportCmd.ExecuteNonQuery()
DBImportConn.Close()
Как разрешить «Не удалось найти устанавливаемый ISAM». ошибка для поставщика OLE DB «Microsoft.ACE.OLEDB.12.0»
Яндекс.Директ
СМС рассылка без абонплаты!
Решения LoRaWAN для ЖКХ и города
Получите Допуск СРО! Акция — От 55т.р!
Я пытаюсь импортировать данные из файлов Excel 2007 (.xlsx) в SQL Server 2008 с помощью команды T-SQL OpenRowset() с поставщиком OLE DB «Microsoft.ACE.OLEDB.12.0» , и я получаю постоянная ошибка «Не удалось найти устанавливаемый ISAM». Все аппаратные средства 32-разрядные.
[Пересмотрено 1/10/12, чтобы попытаться более резко сосредоточиться на аномалиях)
Следующий оператор T-SQL создает ошибку:
SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’,
‘Data Source=C:workTestData.xlsx;Extended Properties=»Excel 12.0 XML;HDR=YES»‘,
‘SELECT * FROM [Sheet1$]’
)
Если я сохраню файл Excel в формате Excel 97-2003 (.xls) и использую более старый поставщик Microsoft.Jet.OLEDB.4.0 для импорта данных, он работает нормально. Это заставляет меня думать, что это не проблема безопасности или другая экологическая проблема.
SELECT * FROM OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’,
‘Excel 8.0;Database=C:workTestData.xls;HDR=YES’,
‘SELECT * FROM [Sheet1$]’
)
Однако, когда я пытаюсь создать файл *.xls с поставщиком Microsoft.ACE.OLEDB.12.0, который должен быть обратно совместим с форматом *.xls, он снова терпит неудачу с той же ошибкой:
SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’,
‘Data Source=C:workTestData.xls;Extended Properties=»Excel 8.0;HDR=YES»;’,
‘SELECT * FROM [Sheet1$]’
)
Кроме того, интересно, когда я использую мастер SSMS «Импорт данных…», он отлично работает. Я сохранил вывод мастера импорта данных в виде пакета SSIS и просмотрел файл SSIS, чтобы попытаться выяснить, как он работает, и он успешно использует поставщика Microsoft.ACE.OLEDB.12.0. Это строка соединения из пакета SSIS:
<DTS:Property DTS:Name=»ConnectionString»>
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:workTestData.xlsx;Extended Properties=»Excel 12.0 XML;HDR=YES»;
</DTS:Property>
Я также выполнил соответствующую конфигурацию SQL Server, чтобы разрешить распространенный запрос OPENROWSET:
sp_configure ‘show advanced options’, 1
reconfigure
GO
sp_configure ‘Ad Hoc Distributed Queries’, 1
reconfigure
GO
Если я также установил следующие значения * sp_MSset_oledb_prop * (которые я нашел в сообщении где-нибудь)…
USE [master]
GO
EXEC master.dbo.sp_MSset_oledb_prop N’Microsoft.ACE.OLEDB.12.0′, N’AllowInProcess’, 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N’Microsoft.ACE.OLEDB.12.0′, N’DynamicParameters’, 1
GO
… тогда ошибка изменится на «Unspecified error»:
OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)» returned message «Unspecified error».
Msg 7303, Level 16, State 1, Line 1
Cannot initialize the data source object of OLE DB provider «Microsoft.ACE.OLEDB.12.0» for linked server «(null)».
Однако я не уверен, что это ошибка восходящего или нисходящего потока. (Теперь он находит «устанавливаемый ISAM», но впоследствии не работает?)
Я пробовал это с несколькими файлами Excel на двух разных машинах/операционных системах (Windows Server 2003, Windows XP SP3). Обе машины 32-разрядные.
Я также попытался переустановить версии AccessDatabaseEngine.exe для Office 2007 и Office 2010 (http://www.microsoft.com/download/en/details.aspx?id=23734 и http://www.microsoft.com/download/en/details.aspx?id=13255, соответственно), безрезультатно.
Подводя итог:
«Microsoft.Jet.OLEDB.4.0» работает с использованием T-SQL, но «Microsoft.ACE.OLEDB.12.0» этого не делает.
«Microsoft.ACE.OLEDB.12.0» работает с помощью мастера «Импорт данных…» (насколько я могу сказать из сохраненного файла задания SSIS).
Настройка свойств «AllowInProcess» и «DynamicParameters» на «1» изменяет ошибку на «Unspecified error». (Это шаг вперед?!)
Любые мысли?
+18
tsql excel-2007 oledb openrowset isam
Martin_ATS 10 янв. ’12 в 2:48
источник
поделиться
7 ответов
ПОПРОБУЙТЕ это, это может вам помочь:
установите path и strFileType согласно требованию
string connString = «»;
// string strFileType = Path.GetExtension(UpfileName.FileName).ToLower();
// string path = UpfileName.PostedFile.FileName;
if (strFileType.Trim() == «.xls»)
{
connString = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source=» + path + «;Extended Properties=»Excel 8.0;HDR=Yes;IMEX=2″»;
}
else if(strFileType.Trim() == «.xlsx»)
{
connString = «Provider=Microsoft.ACE.OLEDB.12.0;Data Source=» + path + «;Extended Properties=»Excel 12.0;HDR=Yes;IMEX=2″»;
}
+1
Sagar R 30 янв. ’14 в 9:42
источник
поделиться
Хай также столкнулся с такой ситуацией, я решил ее
решаемые
string ConeectionString = String.Format(@»Provider=Microsoft.ACE.OLEDB.12.0;Data Source=» + txtFlp.Text
+ «;Extended Properties=»Excel 12.0 Xml;HDR=YES»»);
OleDbConnection oconn = new OleDbConnection(ConeectionString);</b>
0
user4049619 17 сент. ’14 в 9:03
источник
поделиться
другие ответы
Связанные вопросы
2
Не удалось найти устанавливаемый ISAM. Ошибка сервера в приложении
1
Соединение OLEDB с базой данных Access с паролем: «Не удалось найти устанавливаемый ISAM»
0
сохраняйте это исключение System.Data.OleDb.OleDbException(0x80004005)
0
VB.NET Microsoft.ACE.OLEDB.12.0 — Выберите команду col
Похожие вопросы
66
Поставщик Microsoft.ACE.OLEDB.12.0 не зарегистрирован
11
Поставщик Microsoft.ACE.OLEDB.12.0 больше не может открывать .mdb под Windows 8
1
Как узнать причину разрешения поставщика OLE на SQL Server?
1
Агент SQL Server не может выполнить запрос OPENROWSET, но я могу — «Microsoft.ACE.OLEDB.12.0» для связанного сервера «(null)» сообщила об ошибке
0
Экспорт данных из SQL Server 2014 в Excel
0
Поставщик OLE DB «Microsoft.ACE.OLEDB.12.0» вернул сообщение «Неопределенная ошибка»
0
«Не удалось найти Installable ISAM» С# Exception после чтения xls файла
0
Ошибка. Поставщик «Microsoft.ACE.OLEDB.12.0» не зарегистрирован на локальном компьютере.
0
Поставщик «Microsoft.ACE.OLEDB.12.0» не зарегистрирован на локальном компьютере. Microsoft Excel 2016
0
не удалось найти устанавливаемый isam [vb.net]
НАКОНЕЦ, решение!
Проверьте это: Msg 7302, уровень 16, состояние 1, строка 1 Невозможно создать экземпляр поставщика OLE DB «Microsoft.ACE.OLEDB.12.0» для связанного сервера «(null)»
В принципе, вы переходите к
Панель управления > Администрирование > Службы компонентов
затем разверните
Службы компонентов > Компьютеры > Мой компьютеp > Конфигурация DCOM
находка
MSDAINITIALIZE
перейдите к
Свойствa > Безопасность > Разрешения запуска и активации
нажмите
Настроить > Изменить…
добавьте свое имя пользователя или «все», если вы предпочитаете
отметьте ВСЕ поля «разрешить» для нового пользователя/группы
и нажмите ОК на обеих страницах
Теперь посмотрите, работает ли ваша команда OpenRowSet/OpenDataSource
Благодаря Ramesh Babu Vavilla (vr.babu) с сайта social.technet.microsoft.com для ссылки
0
Hamid Sadeghian 19 мая ’14 в 10:30
источник
поделиться
Это сработало для меня:
SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’,
‘Excel 12.0;HDR=NO;Database=C:tempfile.xlsx;’,[sheetname$])
0
Simon Turner 18 июл. ’17 в 11:27
источник
поделиться
Попробуйте это
SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’,
‘EXCEL 12.0;DataBase=C:TEMPtest.xlsx;Extended Properties=»EXCEL 12.0 Xml;HDR=YES’, [Sheet1$])
0
Gurm 26 февр. ’13 в 17:01
источник
поделиться
Я думаю, что ответ скрывается в информации о пакете SSIS, которую вы опубликовали. Новый формат файла xlsx хранит данные в формате XML вместо старого. Посмотрите на это снова. Он читает… Расширенные свойства = «Excel 12.0 XML; HDR = YES
Не пропустите этот XML после стандартного материала. (Для чего это стоит, я также прочитал, что вам нужно «Excel 12.0 Macro» для подключения к файлу xslm.)
Попробуй. Странно, но, надеюсь, это работает.
0
IHateScreenNamesToo 27 апр. ’12 в 18:16
источник
поделиться
Я решил с этим запросом:
SELECT * FROM OPENROWSET(‘Microsoft.ACE.OLEDB.12.0’,
‘Excel 12.0;HDR=NO;Database=D:Filename.xlsx;’,
[SheetName$])
Кажется, sql не нравится раздел «Расширенные свойства»…
Olechka77 0 / 0 / 0 Регистрация: 25.01.2016 Сообщений: 5 |
||||||||
1 |
||||||||
25.01.2016, 21:27. Показов 8531. Ответов 3 Метки нет (Все метки)
Пишу программу ежедневник.Подключила БД Access к форме С#,Запускаю и пишет Не удаётся найти устанавливаемый ISAM,подскажите пожалуйста в чём проблема и как её исправить,чтоб данные сохранялись.
Вот полный код программы:
0 |
mobile 26777 / 14456 / 3192 Регистрация: 28.04.2012 Сообщений: 15,782 |
||||
25.01.2016, 21:47 |
2 |
|||
Это значит, что на ПК нет офиса выше 2003 и, соответственно нет драйвера для оледб.12,0. Но можно использовать ODBC:
0 |
0 / 0 / 0 Регистрация: 25.01.2016 Сообщений: 5 |
|
26.01.2016, 20:14 [ТС] |
3 |
Спасибо! Офис у меня 2007 на пк. Попробовала ваш код,теперь написало ошибку:SQL сервер не существует или доступ запрещён,что делать,он включён
0 |
mobile 26777 / 14456 / 3192 Регистрация: 28.04.2012 Сообщений: 15,782 |
||||
26.01.2016, 21:41 |
4 |
|||
Возможно доступ запрещен из-за неверных деклараций Uid=Admin;Pwd=. Уберите Uid=Admin;Pwd=; из строки и добавьте в конце кавычки. Забыл… Если же и так не пройдет, то дело не в аксе, а в чем-то ином. Обратитесь к сисадмину, возможно поможет. Добавлено через 21 минуту
Если мсгбокс с данными таблицы не появится, или будет пустой, значит обычными способами к файлу не добраться. Он защищен или адрес неверный или еще что-то в этом духе
1 |
Я написал код VBA в книге Excel для извлечения данных из базы данных Access в том же каталоге на рабочем столе. Он отлично работает на моей машине и на нескольких других компьютерах под управлением Windows XP, но когда мы протестировали это на машине Vista, мы столкнулись со следующей ошибкой:
Не удалось найти устанавливаемый ISAM
Я сделал кучу поиска в Интернете, но, похоже, не нашел конкретного ответа. Строка подключения кажется прекрасной, и, как я уже упоминал, она работает на нескольких машинах.
Кто-нибудь знает, что может быть причиной этого? Строка подключения следующая:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:ptdbProgram Tracking Database.mdb;
Спасибо
04 фев. 2009, в 14:42
Поделиться
Источник
9 ответов
Поместите одиночные кавычки вокруг Extended Properties
:
OleDbConnection oconn =
new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';");
Попробуйте, это действительно работает.
bhupendra singh
23 май 2012, в 06:33
Поделиться
Попробуйте помещать одинарные кавычки вокруг источника данных:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:ptdbProgram Tracking Database.mdb';
BIBD
04 фев. 2009, в 17:18
Поделиться
Просто используйте Jet OLEDB: в строке подключения.
он решил для меня.
приведен пример ниже:
"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=E:Database.mdb;Jet OLEDB:Database Password=b10w"
Rezoan
08 апр. 2013, в 13:08
Поделиться
Я использовал это для обновления файла 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();
MarkVL
25 нояб. 2015, в 22:46
Поделиться
Используйте эту строку подключения
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + strFileName + ";" + "Extended Properties=" + """ + "Excel 12.0;HDR=YES;" + """;
Shahid Manzoor
13 окт. 2011, в 06:19
Поделиться
Я только что столкнулся с очень похожей проблемой.
Как и вы, моя строка подключения оказалась правильной — и действительно, точно такая же строка соединения работала в других сценариях.
Проблема оказалась нехваткой ресурсов. 19 раз из 20, я бы увидел, что «Не удалось найти устанавливаемый ISAM», но один или два раза (без каких-либо изменений кода вообще), вместо этого он будет иметь «Out of memory».
Перезагрузка машины «решила» проблему (на данный момент…?). Это произошло с помощью Jet версии 4.0.9505.0 в Windows XP.
Chris Nielsen
13 окт. 2009, в 23:46
Поделиться
Используйте строку подключения ниже для чтения из файла XLSX:
string ConnectionString = «Provider = Microsoft.ACE.OLEDB.12.0; Source =» + < > + «; Extended Свойства = Excel 8.0;»;
Raghav
22 нояб. 2012, в 14:26
Поделиться
Эта проблема возникает из-за того, что машина не может найти правильный ISAM (индексированный метод последовательного драйвера), зарегистрированный для доступа.
Вероятно, потому, что на компьютере не установлены MSACeesss? Я бы удостоверился, что у вас установлена последняя версия Jet, и если она по-прежнему не работает, найдите файл Msrd3x40.dll с одного из других компьютеров, скопируйте его где-нибудь на машину Vista и вызовите regsvr32 (в режиме администратора), который должен отсортировать его для вас.
pezi_pink_squirrel
04 фев. 2009, в 17:38
Поделиться
Ещё вопросы
- 0Angularjs фильтр по месяцам за последние 12 месяцев из 1 поля выбора
- 1Неверный синтаксис в SQL?
- 0Создание растрового изображения с помощью метода wxBitmap :: NewFromPNGData вызывает утверждение в wxWidgets 3.0
- 1Изучение Java — Создание простой игры в догадки
- 0JavaScript onkeypress отложенный триггер
- 1Конвертировать столбцы данных типа объекта с плавающей точкой
- 0Угловое поле сброса 1.2.9 и проверка после действительной отправки
- 0Как исправить аккордеон в подменю jQuery, используя nextUntil (), а не ()?
- 0Как я могу добавить дни к дате в MYSQL в запросе
- 1Хук Pre-commit изменяет AssemblyInfo
- 0путаница, передавая переменную в php через несколько скриптов
- 1Обнаружение Bluetooth без запроса в Android
- 1MVC5 Linq для ViewModel для Razor Посмотреть улучшение кода?
- 1Связь клиента с конкретным клиентом через сервер
- 0Как настроить Logstash для приема http-запросов от angularJS в качестве входных данных
- 0executebatch () в JDBC вставляет только несколько записей
- 0как определить тип панели управления сервера с помощью php?
- 0Возможно ли адаптивное размещение с вкладками?
- 0ионный сбор-повтор не работает
- 1OpenCV — Параметры в Лапласовом фильтре (Java)
- 1Listbox SelectedValue неправильно при первом вызове SelectedIndex
- 0Как проверить размер в байтах SQL-запроса?
- 0Jquery для расширения функциональности dropzone.js
- 0Как скопировать значения из одной строки в другую внутри одной базы данных?
- 1Как добавить свиток во Фрагмент
- 0Как я могу использовать Angularjs и Datatables для отображения данных в HTML-таблице
- 0HTML — недостающие символы Юникода
- 0PHP функция для автоматического приращения с измененным значением
- 0Поиск в angular.js по id
- 0JQuery — динамически изменяет размер объекта ответа после загрузки содержимого.
- 0ngModel — вставить директиву в форматер
- 1Как создать универсальное сочетание клавиш?
- 0Разница между DependencyInjection и импортом в конфигурационном файле
- 1Netty 4: сопоставление Channel-EventLoop в NioEventLoopGroup
- 0MYSQL INNER JOIN FUNCTION ERROR Выражение № 2 списка SELECT отсутствует в предложении GROUP BY
- 0Поиск недостающих данных в последовательности в MySQL
- 0Использование «div» в качестве селектора CSS
- 0получить данные из формы для вставки идентификатора данных из таблицы a в идентификатор данных из таблицы b
- 0Как угловой пересчитать изменения?
- 1Как объединить кортежи в python
- 1Мой Jcombobox, кажется, работает, но когда я делаю какой-либо выбор в нем, программа не появляется, чтобы зарегистрировать изменение
- 0IONIC: динамическое изменение цвета в демонстрации sidemenu
- 1Как полностью отключить дорогостоящие задачи регистрации в Python
- 1Как заполнить данные в JComboBox?
- 0как обновить статус комнаты после вставки с помощью php
- 0Ширина сетки не фиксируется
- 1Начальная точка анимации прогресса шестиугольника D3 js
- 1Android угадайку? Как изменить случайное число, когда пользователь понимает его правильно, и решить проблему с сбоем, когда пользователь ничего не вводит?
- 0Утечки памяти в C ++ из-за статической переменной [duplicate]
- 0преобразовать итерационную функцию в рекурсивную функцию