Меню

Microsoft jet database engine неопознанная ошибка

   Eeelena

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 = Неопределено;

    Записи  = Неопределено;

    Возврат ТЗ;

КонецФункции

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    Неопознанная ошибка соединения с бд

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    17.02.12, 11:46

      Вижал выдаёт неопознанную ошибку в данном коде:

      ExpandedWrap disabled

            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();

      !!! выделено место ошибки.

      полный код тут

      ExpandedWrap disabled

        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



      Сообщ.
      #2

      ,
      17.02.12, 12:30

        Там текст ошибки «Неопознанная ошибка» или что-то другой?
        Можеть быть в задании пути файла неправильный слэш (\) поставили?


        Patrool



        Сообщ.
        #3

        ,
        17.02.12, 14:24

          Цитата coder @ 17.02.12, 12:30

          Там текст ошибки «Неопознанная ошибка» или что-то другой?
          Можеть быть в задании пути файла неправильный слэш (\) поставили?

          вот что пишет
          «System.Data.OleDb.OleDbException не обработано
          Message=Неопознанная ошибка
          Source=Microsoft JET Database Engine
          ErrorCode=-2147467259″

          слеши вроде те


          kanes



          Сообщ.
          #4

          ,
          17.02.12, 18:38

            Слешы в connectionString не те. должны быть


            Patrool



            Сообщ.
            #5

            ,
            17.02.12, 19:34

              Цитата kanes @ 17.02.12, 18:38

              Слешы в connectionString не те. должны быть

              Поменял, не помогло, ошибка та же


              NetVir



              Сообщ.
              #6

              ,
              27.02.12, 14:47

                Senior Member

                ****

                Рейтинг (т): 23

                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                0 пользователей:

                • Предыдущая тема
                • .NET: Базы данных
                • Следующая тема

                Рейтинг@Mail.ru

                [ Script execution time: 0,0239 ]   [ 16 queries used ]   [ Generated: 28.01.23, 21:49 GMT ]  

                RRS feed

                • 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 error

                  In 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

                • 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

                В Октябре был выпущен ряд обновлений, относящихся к категории обновлений безопасности Windows, установка которых может вызвать ошибки в приложениях, использующих программный интерфейс устаревшего Поставщика OLE DB для Jet (Microsoft.Jet.OLEDB.4.0), например, при попытке программного доступа в Microsoft Office Excel или Access версии 2007 и более старых версий Office или сторонних приложений, таких как , самописных АРМ-ов и т.п., использующих данный интерфейс.

                Перечень обновлений (то, что удалось найти), установка которых порождает проблему :

                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.

                0 0 голоса
                Рейтинг статьи
                Подписаться
                Уведомить о
                guest

                0 комментариев
                Старые
                Новые Популярные
                Межтекстовые Отзывы
                Посмотреть все комментарии

                А вот еще интересные материалы:

              • Яшка сломя голову остановился исправьте ошибки
              • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
              • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
              • Microsoft flight simulator ошибка подключения к серверу
              • Microsoft flight simulator ошибка пакета установщика windows