IDataInitialize. Класс не зарегистрирован ....
От: drot Беларусь  
Дата: 10.11.05 15:09
Оценка:
Привет всем !

Вот код выбора строки подключения к БД:

MSDASC.DataLinks oDataLink = new MSDASC.DataLinksClass();
ADODB.Connection oCon = new ADODB.ConnectionClass();
oCon.ConnectionString = sConnection;
oDataLink.hWnd = (int)Handle;
object objCon = (object)oCon;
if (oDataLink.PromptEdit(ref objCon)) // HERE — An unhandled exception
{
textConnectionString.Text = oCon.ConnectionString;
}
oDataLink = null;
oCon = null;

An unhandled exception:
Additional information: Initialization string cannot be retrieved from IDataInitialize. Класс не зарегистрирован

Вызвов в конструкторе формы Application.OleRequired() ситуацию не меняет

Код делающий то же самое, на той же машине, на С++ работает без проблем:

MSDASC::IDataSourceLocatorPtr dsl = NULL;
_ConnectionPtr pConn = NULL;
CString sConStr;
HRESULT hr;

GetDlgItem(IDC_EDIT_CONSTR)->GetWindowText(sConStr);
sConStr = sConStr.Trim();
try
{
hr = pConn.CreateInstance(__uuidof(Connection));
if (S_OK != hr)
{
throw(_com_error(hr, NULL));
}
pConn->ConnectionString = (TCHAR *)sConStr.GetBuffer();
hr = dsl.CreateInstance(__uuidof(MSDASC::DataLinks));
if (S_OK != hr)
{
throw(_com_error(hr, NULL));
}
dsl->PuthWnd((long)m_hWnd);
_variant_t vConn = pConn.GetInterfacePtr();
if (dsl->PromptEdit(&vConn.pdispVal))
{
sConStr = (TCHAR *)pConn->ConnectionString;
GetDlgItem(IDC_EDIT_CONSTR)->SetWindowText(sConStr);
}
}
catch (_com_error &e)
{
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.