Здравствуйте!
Подключаюсь с помощью 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.
Как это победить?
Проблема возникала только тогда, когда использовался CursorLocation clUseServer.
Если заменить на clUseClient, то проблема не возникала, но мне такая замена не подходила.
Оставил CursorLocation = clUseServer и иcпользовал вместо провайдера OLE DB от Oracle(Provider=OraOLEDB.Oracle.1) провайдер от Microsoft (Provider=MSDAORA.1).