Ви повинні додати код для властивості DBPROP_IRowsetLocate значення, як показано нижче. Ця властивість розповідає постачальника, що споживач хоче закладку стовпця. У цей код, а петлю містить заклик до 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"), hr);
інше
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);
}
Назад до зміни споживача для використання розширеної постачальника послуг