22.09.14 — 01:17
Делаю обработку, которые считывает данные из файла Ексель, сначала все работало нормально, данные считывались и заполнялись в таблицу значений, потом почему то возникла ошибка при открытии файла Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Access Database Engine): Неопознанная ошибка 1с 8.3. Подскажите, пожалуйста, в чем может быть проблема?
Код функции:
Функция ПолучитьТЗИзEXCEL(ПутьКФайлу, ИмяНомерСтраницы, Заголовок = Истина, ПерваяСтрока = 0) Экспорт
ИмяНомерСтраницы=1;
ПерваяСтрока = 0;
ТЗ = Новый ТаблицаЗначений;
#Если Клиент Тогда
Состояние(«Подключение к файлу Excel…»);
#КонецЕсли
//
Попытка
Эксель = Новый COMОбъект(«Excel.Application»);
Версия = СтрПолучитьСтроку(СтрЗаменить(Эксель.Version, «.», Символы.ПС), 1);
Исключение
//СообщениеТекста(«Ошибка подключения к «+ПутьКФайлу+» : «+ОписаниеОшибки(),,СтатусСообщения.Важное);
Возврат ТЗ;
КонецПопытки;
//
Книга = Эксель.WorkBooks.Open(ПутьКФайлу);
// Выбираем данные запросом из таблицы файла по имени страницы
Если ТипЗнч(ИмяНомерСтраницы) = Тип(«Число») Тогда
Лист = Книга.WorkSheets(ИмяНомерСтраницы);
ИмяСтраницы = Лист.Name;
Иначе
ИмяСтраницы = ИмяНомерСтраницы;
КонецЕсли;
//
// Определим диапазон данных Excel
ПослЯчейка = СтрЗаменить(Книга.WorkSheets(ИмяСтраницы).Cells(1,1).SpecialCells(11).Address, «$», «»);
//
Эксель.Application.Quit();
//
Эксель = неопределено;
Книга = неопределено;
Лист = неопределено;
// Подлючаемся
Connection = Новый COMОбъект(«ADODB.Connection»);
Если Версия = «12» ИЛИ Версия = «14» Тогда
СтрокаПодключения =»Provider =Microsoft.ACE.OLEDB.12.0;Data Source=»+ПутьКФайлу+»;Extended Properties=»»Excel 12.0 Xml;HDR=»+?(Заголовок,»YES»,»NO»)+»;IMEX=1″»»;
Иначе
СтрокаПодключения =»Provider=Microsoft.Jet.OLEDB.4.0;Data Source=»+ПутьКФайлу+»;Extended Properties=»»Excel 8.0;HDR=»+?(Заголовок,»YES»,»NO»)+»;IMEX=1″»»;
КонецЕсли;
Попытка
Connection.Open(СтрокаПодключения);
Исключение
//ПолучитьCOMОбъект(ИмяФайла, «Excel.Application»);
Сообщить(ОписаниеОшибки());
Возврат ТЗ;
КонецПопытки;
Command=Новый COMОбъект(«ADODB.Command»);
Command.ActiveConnection=Connection;
Command.CommandText = ?(ПерваяСтрока = 0, «Select * From [» + ИмяСтраницы + «$]», «Select * From [» + ИмяСтраницы + «$A» + ПерваяСтрока + «:» + ПослЯчейка + «]»);
Попытка
Записи=Command.Execute();
Исключение
//Сообщить(«Ошибка при выполнении запроса!»+ОписаниеОшибки(), ,СтатусСообщения.ОченьВажное);
Возврат ТЗ;
КонецПопытки;
Для НомерПоля = 0 По Записи.Fields.Count-1 Цикл
СтрКолонка = Строка(Записи.Fields.Item(НомерПоля).Name);
СтрКолонка = СтрЗаменить(СтрКолонка,»№»,»Num»);
НедопустимыеСимволы = » ~`!@»»#№$;%^:&?*()-+=/|.,»;
Для i = 1 По СтрДлина(НедопустимыеСимволы) Цикл
СтрКолонка = СтрЗаменить(СтрКолонка, Mid(НедопустимыеСимволы, i, 1), «_»)
КонецЦикла;
ИмяКолонки = СокрЛП(СтрКолонка);
ТЗ.Колонки.Добавить(ИмяКолонки, , СтрКолонка);
КонецЦикла;
Пока НЕ Записи.EOF() Цикл
НоваяСтрока = ТЗ.Добавить();
Для НомерПоля = 0 По Записи.Fields.Count-1 Цикл
НоваяСтрока[НомерПоля] = Записи.Fields(Записи.Fields.Item(НомерПоля).Name).Value;
КонецЦикла;
Записи.MoveNext();
КонецЦикла;
Command = Неопределено;
Записи = Неопределено;
Возврат ТЗ;
КонецФункции
|
|
|
|

Неопознанная ошибка соединения с бд
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
|
|
Вижал выдаёт неопознанную ошибку в данном коде:
string sql = «SELECT * FROM WORDS»; string connectionString; connectionString = «Provider=Microsoft.Jet.OLEDB.4.0;» + @»Data Source= D:/бд/english.mdb»; OleDbConnection connection = new OleDbConnection(connectionString); !!! connection.Open();!!! OleDbCommand command = new OleDbCommand(sql, connection); OleDbDataReader dataReader = command.ExecuteReader(); !!! выделено место ошибки. полный код тут
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace Diplom { public partial class Form1 : Form { public Form1() { InitializeComponent(); dbacces.acces(); } } public class dbacces { public static void acces() { //список для английских слов List<string> englw = new List<string>(); // Формируем запрос к базе данных — // считываем английские слова string sql = «SELECT * FROM WORDS»; string connectionString; connectionString = «Provider=Microsoft.Jet.OLEDB.4.0;» + @»Data Source= D:/бд/english.mdb»; OleDbConnection connection = new OleDbConnection(connectionString); connection.Open(); OleDbCommand command = new OleDbCommand(sql, connection); OleDbDataReader dataReader = command.ExecuteReader(); // Организуем циклический перебор полученных записей // Заносим слова в список while (dataReader.Read()) { englw.Add(dataReader[«Englwords»].ToString()); } Form1 Sform1 = new Form1(); Sform1.button1.Text = englw[1]; // Очистка dataReader.Close(); connection.Close(); } } } В чём проблема? по-мимо кривых рук конечно=) |
|
coder |
|
|
Там текст ошибки «Неопознанная ошибка» или что-то другой? |
|
Patrool |
|
|
Цитата coder @ 17.02.12, 12:30 Там текст ошибки «Неопознанная ошибка» или что-то другой? вот что пишет слеши вроде те |
|
kanes |
|
|
Слешы в connectionString не те. должны быть |
|
Patrool |
|
|
Цитата kanes @ 17.02.12, 18:38 Слешы в connectionString не те. должны быть Поменял, не помогло, ошибка та же |
|
NetVir |
|
|
Senior Member
Рейтинг (т): 23 |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- .NET: Базы данных
- Следующая тема
[ Script execution time: 0,0239 ] [ 16 queries used ] [ Generated: 28.01.23, 21:49 GMT ]

- Remove From My Forums
-
Вопрос
-
I have ran into the same problem … Importing from Access into SQL 2005 using SSIS and get the error:
[Connection manager «SourceConnectionOLEDB»] Error: An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: «Microsoft JET Database Engine» Hresult: 0x80004005 Description: «Unspecified error».
Все ответы
-
Just to get a feel,
can you import anything from Access successfully? e.g. try 1 simple table
Are you importing more than 1 object?
Is the Access file local on the same machine?
What version of access was the file created in? -
Yes I can import 1 table at a time.
I’m importing approximately 141 tables
Access is on the local machine importing into a Local SQL Server DEV Edition 2005
Access 2003
-
I have the same issue. I’m importing from Access 2003 to SQL 2005 SP2 Enterprise edition.
I can import one table at a time, when I tried all tables it failed. I tried two tables, same error.
- Remove From My Forums
-
Question
-
User189888063 posted
Hai all,
Im a new comer to this community.I searched lots of bulletins n forums and tried all those steps,but could not find a solution to my problem.
All usually working before well, but accidentally crashed by undetermined
reason:Databases connections databases stop working under all web sites on web server.
I’ve given all permissions.
Affect only IIS applications.
if trying to open MS Access 2000 databases:
Microsoft JET Database Engine error ‘80004005’
Unspecified errorIn connection string, while try to work with MS Access db:
Set XXX = Server.CreateObject («ADODB.Connection»)
XXX.ConnectionString = «Provider=Microsoft.Jet.OLEDB.4.0;Data Source=XXXXX»
XXX.CursorLocation = 3 // could be vary
XXX.CommandTimeout = 60
XXX.Open <— ERROR HERE
This is a very urgent issue for me to proceed in my project.Help me please.
thanks
Ramya
Answers
-
-
Marked as answer by
Tuesday, September 28, 2021 12:00 AM
-
Marked as answer by
-
User189888063 posted
Hai Jeff and steve,
Thanks for all ur support in getting my problem resolved. Finally, i got it resolved. As i told before it was becos of something i changed in authentication settings of IIS. Now, after enabling basic authentication and disabling all other authentications,
i got evrythng working as before.Thanks again for ur kind support
Cheers
Ramya
-
Marked as answer by
Anonymous
Tuesday, September 28, 2021 12:00 AM
-
Marked as answer by
В Октябре был выпущен ряд обновлений, относящихся к категории обновлений безопасности Windows, установка которых может вызвать ошибки в приложениях, использующих программный интерфейс устаревшего Поставщика OLE DB для Jet (Microsoft.Jet.OLEDB.4.0), например, при попытке программного доступа в Microsoft Office Excel или Access версии 2007 и более старых версий Office или сторонних приложений, таких как 1С, самописных АРМ-ов и т.п., использующих данный интерфейс.
Перечень обновлений (то, что удалось найти), установка которых порождает проблему :
| Windows 7, Windows Server 2008 R2 | KB4041681 , KB4041678 , KB4041686 |
| Windows Server 2012 | KB4041690 |
| Windows 8.1, Windows Server 2012 R2 | KB4041693 , KB4041687 |
| Windows 10 1507 (RTM) | KB4042895 |
| Windows 10 1607, Windows Server 2016 | KB4041691 |
| Windows 10 1703 | KB4041676 |
Ошибка, которая может возникать при попытке вызова Поставщика OLE DB для Jet после установки данных обновлений:
Unexpected error from external database driver (1). (Microsoft JET Database Engine)
...или...
"Непредвиденная ошибка с внешнего драйвера базы данных (1). (Microsoft JET Database Engine)".
Другие примеры ошибок, которые могут возникать в данной ситуации:
[Microsoft][Driver ODBC Excel] Reserved error (-5016).
[Microsoft][ODBC Excel Driver] General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for process
Собственно, данная проблема описана в соответствующих статьях KB к выше обозначенным обновлениям в перечне известных проблем:

В качестве решения проблемы предлагается использование более современного Поставщика, например Microsoft Access Database Engine 2010 (Microsoft.ACE.OLEDB.12.0) или новее.
Если же оперативное изменение Ваших приложений, использующих Microsoft.Jet.OLEDB.4.0, невозможно, то лучше воздержаться от установки выше обозначенных обновлений, по крайней мере, до тех пор, пока не будут выпущены «обновления на обновления», исправляющие данную проблему.
По некоторой информации совсем недавно были выпущены обновления, направленные на решение проблемы для Windows 7 и Windows 8.1, но, по уже традиционному для Microsoft сценарию, эти обновления оказались кривыми и в данный момент они недоступны для загрузки:
| Windows 7, Windows Server 2008 R2 | KB4052234 |
| Windows Server 2012 | KB4052235 |
| Windows 8.1, Windows Server 2012 R2 | KB4052233 |
По информации, доступной в статье «Unexpected error from external database driver (1). (Microsoft JET Database Engine)» after applying October security updates., где описывается проблема и разные варианты её решения, перевыпуск недоступных на данный момент обновлений со стороны Microsoft планируется на 14 Ноября.
Доступные обновления, исправляющие проблему, которые мне удалось обнаружить на данный момент, таковы:
Надеюсь данная заметка поможет разобраться Вам в сложившейся ситуации и даст направление для решения проблемы.
My SSIS packages that write the output to excel file (the old .xls format — MS Excel 97-2003) started to fail with the following error:
SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: «Microsoft JET Database Engine» Hresult: 0x80004005 Description: «Unexpected error from external database driver (1).».
The problem began to occur after the most recent Windows update and it affects both the SQL server machine, and my own workstation (where I tried to run one of the offending packages in BIDS) which received Windows update on 10/11/2017.
The problem appears to affect only connections set up against «Microsoft.Jet.OLEDB.4.0» provider.
Other SSIS packages that read data from excel files utilizing «Microsoft.ACE.OLEDB.12.0» provider work fine.
Does anybody have a fix or a workaround for the problem.
Switching to excel 2007 (for the data export) is somehow problematic, as the ACE provider does not properly preserve data types and all output columns (date, integer, currency) are written out as text.
My SSIS packages that write the output to excel file (the old .xls format — MS Excel 97-2003) started to fail with the following error:
SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: «Microsoft JET Database Engine» Hresult: 0x80004005 Description: «Unexpected error from external database driver (1).».
The problem began to occur after the most recent Windows update and it affects both the SQL server machine, and my own workstation (where I tried to run one of the offending packages in BIDS) which received Windows update on 10/11/2017.
The problem appears to affect only connections set up against «Microsoft.Jet.OLEDB.4.0» provider.
Other SSIS packages that read data from excel files utilizing «Microsoft.ACE.OLEDB.12.0» provider work fine.
Does anybody have a fix or a workaround for the problem.
Switching to excel 2007 (for the data export) is somehow problematic, as the ACE provider does not properly preserve data types and all output columns (date, integer, currency) are written out as text.



