Alterar o manipulador de botão Run

Você deve adicionar código para definir a propriedade DBPROP_IRowsetLocate , como mostrado abaixo. Essa propriedade informa o provedor que o consumidor quer uma coluna de indicador. Nesse código, o loop while contém uma chamada para IRowsetLocate:: Compare. Este chamar deve sempre êxito, uma vez que ele compara um indicador para si. A chamada armazena o indicador em uma variável temporária, para que o valor estará disponível mais tarde a chamar MoveToBookmark.

//////////////////////////////////////////////////////////////////////
/ / TestProv consumidor aplicativo em TestProvDlg.cpp

void CTestProvDlg::OnRun() {
   CCommandlt;CAccessor <CProvider> > da tabela;
   CDataSource fonte;
   CSession sessão;

se (origem.Open("MyProvider.MyProvider.1", NULL, NULL, NULL, NULL)! = S_OK)
      retornar;

se (sessão.Open(Source)! = S_OK)
      retornar;

CDBPropSet propset(DBPROPSET_ROWSET);
   propset.AddProperty(DBPROP_IRowsetLocate, true);
   se (tabela.Open(Session, _T("c:\\public\\testprf2\\foo.txt"), &propset)! = S_OK)
      retornar;

CBookmark <4> tempBookmark;
   ULONG ulCount = 0;
   ao mesmo tempo (tabela.MoveNext() = = S_OK)
   {

Comparação de DBCOMPARE;
      se (ulCount = = 2)
         tempBookmark = table.bookmark;
         hr = tabela.Compare (table.bookmark, table.bookmark,
                 & comparar);
      se (FAILED(hr))
         ATLTRACE ( t ("comparação falhada: 0x%X\n"), RH);
      outra pessoa
         ATLASSERT (compare = = DBCOMPARE_EQ);

m_ctlString1.AddString(table.szCommand);
      m_ctlString2.AddString(table.szText);
      ulCount + +;
   }

tabela.MoveToBookmark(tempBookmark);
   m_ctlString1.AddString(table.szCommand);
   m_ctlString2.AddString(table.szText);
}

Voltar para modificação de consumidor para utilização com o provedor avançado

Index