TADOQuery и исключение "Object was open"
От: Pike  
Дата: 22.08.07 14:37
Оценка:
Здравствуйте!
Подключаюсь с помощью ADO к БД Oracle 10g2. Использую TADOConnection и TADOQuery.
Свойство ConnectionString для TADOConnection равно "Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=SUSER;Password=xxx;Data Source=SSRC".
Свойство Connection TADOQuery равно соответственно объекту TADOConnection.
Приложение нормально работает при запуске в IDE.
Но при запуске приложения отдельно я получаю ADO исключение "Object was open", причем уже после успешного открытия соединения объекта TADOConnection.
Код такой:
if (DM->ADOQuery->Active)
  DM->ADOQuery->Close();
DM->ADOQuery->SQL->Clear();
DM->ADOQuery->SQL->Add("SELECT * FROM spec_v");
DM->ADOQuery->Open(); // здесь получаю исключение "Object was open", когда приложение запускается не под IDE


Значение ADOQuery->Active перед вызовом Open() точно равно false.
Как это победить?
Re: TADOQuery и исключение "Object was open"
От: Pike  
Дата: 23.08.07 11:23
Оценка:
Проблема возникала только тогда, когда использовался CursorLocation clUseServer.
Если заменить на clUseClient, то проблема не возникала, но мне такая замена не подходила.
Оставил CursorLocation = clUseServer и иcпользовал вместо провайдера OLE DB от Oracle(Provider=OraOLEDB.Oracle.1) провайдер от Microsoft (Provider=MSDAORA.1).
Re: TADOQuery и исключение "Object was open"
От: Oxotnik  
Дата: 05.09.07 08:18
Оценка:
DM->ADOQuery->Active=false;
...
...

DM->ADOQuery->Active=true;

так не катит?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.