次に示すよう、 DBPROP_IRowsetLocateプロパティを設定するコードを追加する必要があります。このプロパティは、コンシューマーがブックマーク列を望んでいるプロバイダーを指定します。このコードでは、 whileループが含まれている呼び出しを IRowsetLocate::Compare。この呼び出しは常に成功以来、それ自体へのブックマークを比較する必要があります。値MoveToBookmarkを後で呼び出すことができるように呼び出し、ブックマークを一時変数に格納します。
////////////////////////////////////////////////////////////////////////TestProv コンシューマー アプリケーションの TestProvDlg.cpp無効に CTestProvDlg::OnRun() {CCommandlt;CAccessor <CProvider> > テーブル;CDataSource ソース;CSession セッション;場合は (ソース。Open("MyProvider.MyProvider.1", NULL, NULL, NULL, NULL) ! S_OK =)戻る;場合 (セッション。Open(source) ! S_OK =)戻る;CDBPropSet propset(DBPROPSET_ROWSET);propset。AddProperty(DBPROP_IRowsetLocate, true);場合 (テーブル。Open(session, _T("c:\\public\\testprf2\\foo.txt"), &propset) ! S_OK =)戻る;CBookmark <4> tempBookmark;ULONG ulcount を正しく = 0;(テーブル。MoveNext() S_OK = =){DBCOMPARE 比較;場合 (ulcount を正しく 2 = =)tempBookmark = table.bookmark;hr = テーブル。比較 (table.bookmark、table.bookmark、& 比較);場合 (FAILED(hr))ATLTRACE (_T ("比較に失敗しました: 0x%X\n」)、人事);他ATLASSERT (比較 DBCOMPARE_EQ = =);m_ctlString1.AddString(table.szCommand);m_ctlString2.AddString(table.szText);ulcount を正しく + +;}テーブル。MoveToBookmark(tempBookmark);m_ctlString1.AddString(table.szCommand);m_ctlString2.AddString(table.szText);}