Hi, I have problem with basic access to DB via OLE DB.
I have basic sample program in C++ (MSVC 6) with use ATL.
I can open rowset, I can move next or prev rowset, I can
delete. But I cannot update or insert rowset (I have set
property: propset.AddProperty(DBPROP_UPDATABILITY,
DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT |
DBPROPVAL_UP_DELETE );
Rowset is opened with:
HRESULT CTestDbPSet::Open()
{
CDataSource db;
CSession session;
HRESULT hr;
CDBPropSet dbinit(DBPROPSET_DBINIT);
dbinit.AddProperty
(DBPROP_INIT_DATASOURCE, "D:\\C\\TestDbP\\Test Db.mdb");
hr = db.OpenWithServiceComponents
("Microsoft.Jet.OLEDB.4.0", &dbinit);
if (FAILED(hr)) return hr;
hr = session.Open(db);
if (FAILED(hr)) return hr;
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IRowsetScroll,
true);//Muze jit i pozadu po zaznamech
propset.AddProperty(DBPROP_IRowsetChange, true);
propset.AddProperty(DBPROP_UPDATABILITY,
DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT |
DBPROPVAL_UP_DELETE );
hr = CCommand<CAccessor<CT_SMS_OPERATOR> >::Open
(session, "SELECT * FROM MY_TABLE", &propset);
if (FAILED(hr)) return hr;
return MoveNext();
}
Function with problem:
void CTestDbPView::OnBtnUpdate()
{
UpdateData(TRUE);
m_pSet->m_STATUS=99;
HRESULT hr = m_pSet->SetData();//Update();
if (hr != S_OK)
{
AfxMessageBox(_T("Cannot Update."),
MB_OK);
return;
}
}
Thank for help!