Изменение обработчика кнопки Run

Необходимо добавить код для задания свойства DBPROP_IRowsetLocate , как показано ниже. Это свойство указывает поставщику, что потребитель хочет столбца закладки. В этом коде цикл while содержит вызов IRowsetLocate::Compare. Этот призыв должен всегда выполняются успешно, так как он сравнивает закладки на самого себя. Вызов сохраняет закладки во временной переменной, чтобы значение будет доступна позже для вызова функции MoveToBookmark.

//////////////////////////////////////////////////////////////////////
/ / Приложение потребителя TestProv в TestProvDlg.cpp

void 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);
}

Назад к модификации потребителя для использования с расширенной провайдера

Index