Это PARADOX
CoInitialize(NULL);
_ConnectionPtr pConn("ADODB.Connection");
try
{
pConn.CreateInstance(__uuidof(Connection));
pConn->CursorLocation = adUseClient;
pConn->Open(""Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Lisega;Extended Properties=Paradox 5.x";" , "", "",0);
_RecordsetPtr pRst;
pRst.CreateInstance(__uuidof(Recordset));
pRst->Open("SELECT SHRIFT_1 FROM PRJINF81.DB", _variant_t((IDispatch*)pConn, true), adOpenDynamic, adLockReadOnly, adCmdUnknown);
int nNumFields = pRst->Fields->Count;
while(!pRst->ADOEOF)
{
for(short index=0; index<nNumFields; index++)
{
_bstr_t strName = pRst->Fields->Item[(_variant_t)index]->Name;
_bstr_t strValue = pRst->Fields->Item[(_variant_t)index]->Value;
cout << strName << " " << strValue << " " << pRst->Fields->Item[(_variant_t)index]->Type << endl;
}
pRst->MoveNext();
}
pRst->Close();
pRst->Close();
cout<<"cLOSE"<<endl;
}
catch(_com_error e)
{
cout << e.ErrorMessage() << endl;
}
if(pConn != NULL)
pConn->Close();
pConn->Close();
CoUninitialize();
return 1;
Если Не открывать рекордсет, то получается ошибка в файле msado15.til
inline HRESULT Connection15::Close ( ) {
HRESULT _hr = raw_Close();
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _hr; //вот здесь ошибка
}
В окне Output :
First-chance exception at 0x75b5b727 in Support_For_SP.exe: Microsoft C++ exception: _com_error at memory location 0x002bf6f4..
Unhandled exception at 0x75b5b727 in Support_For_SP.exe: Microsoft C++ exception: _com_error at memory location 0x002bf6f4..
Если добавить код открытиу рекордсета то ловится исключение idispatch error #3127
Накидал вот такой код в VB6 и все работает как часы
Option Explicit
Dim rs As ADODB.Recordset
Dim Conn As ADODB.Connection
Dim ConnectionString As String
Private Sub Form_Load()
Set Conn = CreateObject("ADODB.Connection")
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Lisega;Extended Properties=Paradox 5.x;"
Conn.CursorLocation = adUseClient
Conn.Open ConnectionString
Dim i As Integer
Set rs = Conn.Execute("SELECT SHRIFT_1 FROM KONSTR8.DB")
MsgBox rs.RecordCount
rs.Close
Conn.Close
End
Как бы его в С++ перевести?)