2008年9月21日 星期日

以 Visual C++ 使用 SetData Update OLE DB

首先必須先使用SELECT找出所想要UPDATE的DATA SET,接著必須MoveNext()功能,來探訪每個找到的結果,最後才使用SetData()執行UPDATE功能。

如果沒有使用MoveNext(),則會回傳0x80040E04L錯誤訊息。(對照表

簡單範例
----------------------------------------------------
HRESULT hr ;
char commands[150];
sprintf(commands,"SELECT * FROM annotation WHERE eventid = '%s' AND objectid = '%s' AND frameid = '%f'",eventid,objectid,frameid);
RETURNHR(hr = the_object.Create(session, _T(commands) ))
RETURNHR(hr = the_object.Open(&propset))
while(the_object.MoveNext() == S_OK){
the_object.m_clusterid = clusterid+3;//UPDATE DATA
RETURNHR(hr = the_object.SetData(0))
}
the_object.Close();
if(hr == S_OK){
 return 1;
}else{
return 0;
}