powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / sql ce и ошибка 80040E05 db_e_objopen
12 сообщений из 12, страница 1 из 1
sql ce и ошибка 80040E05 db_e_objopen
    #37913250
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем:

1. ms sql ce 3.5
2. Delphi 5

Задача:

Подключится к БД.

Для проверки я написал следующую фунцию:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
function Test(AConStr:string;AQry:string):string;
var
  DObj:TAdoDataset;
begin
  Result:=format('Test(''%s'',''%s'')'#13#10'   ->',[AConStr,AQry]);
//  DObj:=TAdoQuery.Create(nil);
  DObj:=TAdoDataset.Create(nil);
  try
    try
      DObj.ConnectionString:=AConStr;
//      DObj.SQL.Text:=AQry;
      DObj.CommandText:=AQry;
      DObj.Open;
      Result:=format('%s RecordCount=%d',[Result,DObj.RecordCount]);
      DObj.Close;
    except
      on E:EOleException do
        Result:=(Format('%s %s: ''%s'' [ErrCode=$%x]',
          [Result,e.ClassName,e.Message,e.ErrorCode]));
      on e:exception do
        Result:=format('%s %s:''%s''',[Result,e.ClassName,e.Message]);
    end;
  finally
    DObj.Free;
  end;
end;



Результаты ее работы меня несколько смутили:

1. Для тестовой БД Northwind:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\Northwind35.sdf','select * from Categories')
   -> RecordCount=8
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\Northwind35.sdf','select * from Customers')
   -> RecordCount=91

...

Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\Northwind35.sdf','Select * from INFORMATION_SCHEMA.TABLES')
   -> EOleException: 'Объект был открыт' [ErrCode=$80040E05]
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\Northwind35.sdf','Select * from INFORMATION_SCHEMA.COLUMNS')
   -> EOleException: 'Объект был открыт' [ErrCode=$80040E05]



2. Для БД, с которой необходимо работать (это база программы предоставления информации о движении алкоголя):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\base.sdf','select * from DecF1')
   -> RecordCount=0
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\base.sdf','select * from DecF10')
   -> EOleException: 'Объект был открыт' [ErrCode=$80040E05]
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\base.sdf','select * from DecF11')
   -> RecordCount=0
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\base.sdf','select * from DecF12')
   -> RecordCount=0
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\base.sdf','select * from DecF2')
....
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\base.sdf','select * from DecF8')
   -> EOleException: 'Объект был открыт' [ErrCode=$80040E05]
...
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\base.sdf','select * from ref_alckinds')
   -> EOleException: 'Объект был открыт' [ErrCode=$80040E05]
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\base.sdf','select * from ref_declforms')
   -> EOleException: 'Объект был открыт' [ErrCode=$80040E05]
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\base.sdf','select * from ref_declPeriod')
   -> RecordCount=4



Гуглинг нашел только некоторые сообщения, посвященные ошибке 80040E05 - она возникает, когда провайдер хочет, но не можетЮ открыть второе соединение. Это должно решаться заданием специального свойства "Multiple connections", котрое не все провайдеры поддерживают. Попытка его задания:

Код: sql
1.
2.
3.
4.
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\base.sdf;Multiple Connection=True','select * from DecF10')
   -> EOleException: 'Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена' [ErrCode=$80040E21]
Test('Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=.\base.sdf;Multiple Connection=False','select * from DecF10')
   -> EOleException: 'Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена' [ErrCode=$80040E21]



Вопросы:
1. Есть ли эффективный способ борьбы с это странной ошибкой "объект открыт"?
2. Как из дельфи еще можно работать с БД SQL CE?

Спасибо.
...
Рейтинг: 0 / 0
sql ce и ошибка 80040E05 db_e_objopen
    #37913305
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TADOConnection
...
Рейтинг: 0 / 0
sql ce и ошибка 80040E05 db_e_objopen
    #37913349
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_TADOConnection

Увы, с этим заклинанием пробовал - результат тотже.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
function TestConn(AConStr:string;AQry:string):string;
var
  DObj:TAdoDataset;
  Conn:TAdoConnection;
begin
  Result:=format('TestConn(''%s'',''%s'')'#13#10'   ->',[AConStr,AQry]);
  Conn:=TAdoConnection.Create(nil);
  DObj:=TAdoDataset.Create(nil);
  try
    try
      Conn.ConnectionString:=AConStr;
      Conn.LoginPrompt:=false;
      DObj.Connection:=Conn;
      DObj.CommandText:=AQry;
      DObj.Open;
      Result:=format('%s RecordCount=%d',[Result,DObj.RecordCount]);
      DObj.Close;
    except
      on E:EOleException do
        Result:=(Format('%s %s: ''%s'' [ErrCode=$%x]',
          [Result,e.ClassName,e.Message,e.ErrorCode]));
      on e:exception do
        Result:=format('%s %s:''%s''',[Result,e.ClassName,e.Message]);
    end;
  finally
    DObj.Free;
    Conn.Free;
  end;
end;
...
Рейтинг: 0 / 0
sql ce и ошибка 80040E05 db_e_objopen
    #37913357
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка появляется, когда в выборке есть столбец nvarchar длиной более 127.

Но проблема-то осталась...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
sql ce и ошибка 80040E05 db_e_objopen
    #39556814
Jenyok2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Аналогичная ситуация.
.
Как бороться ???
Есть решение ???
.
...
Рейтинг: 0 / 0
sql ce и ошибка 80040E05 db_e_objopen
    #39558776
Jenyok2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решения НЕТ совсем ???
.
...
Рейтинг: 0 / 0
sql ce и ошибка 80040E05 db_e_objopen
    #39571156
Jenyok2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поднимем темы !!!
.
Есть у кого либо решение по данному вопросу ?
.
...
Рейтинг: 0 / 0
sql ce и ошибка 80040E05 db_e_objopen
    #39571163
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jenyok2Поднимем темы !!!
.
Есть у кого либо решение по данному вопросу ?
.

CursorLocation := clUseServer не помогает?
...
Рейтинг: 0 / 0
sql ce и ошибка 80040E05 db_e_objopen
    #39575038
Jenyok2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tactical Nuclear PenguinJenyok2Поднимем темы !!!
.
Есть у кого либо решение по данному вопросу ?
.

CursorLocation := clUseServer не помогает?
.
Пробовали.
Не помогает.
Ошибка так и не исправлена в Delphi.
Как работать с базами данных с такой ошибкой НЕ понятно ???
Не возможно сделать простой запрос к БД , если в БД есть поле nvchar , длиной больше 127 символов.
.
Написано много у Delphi, а результата то НЕТ, НЕ работает...
Это напоминает, хотели как лучше, а получилось как всегда !!! В.С. Черномырдин.
.
...
Рейтинг: 0 / 0
sql ce и ошибка 80040E05 db_e_objopen
    #39575053
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jenyok2Tactical Nuclear Penguinпропущено...


CursorLocation := clUseServer не помогает?
.
Пробовали.
Не помогает.
Ошибка так и не исправлена в Delphi.
Как работать с базами данных с такой ошибкой НЕ понятно ???
Не возможно сделать простой запрос к БД , если в БД есть поле nvchar , длиной больше 127 символов.
.
Написано много у Delphi, а результата то НЕТ, НЕ работает...
Это напоминает, хотели как лучше, а получилось как всегда !!! В.С. Черномырдин.
.

Так ошибку и не исправят пока ее в QC не запилят, или там оракулы сидят?
...
Рейтинг: 0 / 0
sql ce и ошибка 80040E05 db_e_objopen
    #39580150
Jenyok2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поднимем тему слегка.
.
...
Рейтинг: 0 / 0
sql ce и ошибка 80040E05 db_e_objopen
    #39580161
Любезный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А смысл?
Во-первых, для Delphi 5 никто патчей не выпустит.
Во-вторых, если проблема встречается на последних версиях, ее надо постить в тикеты. Здесь про нее знают, а толку?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / sql ce и ошибка 80040E05 db_e_objopen
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]