Cambiando il gestore pulsante Esegui

È necessario aggiungere codice per impostare la proprietà DBPROP_IRowsetLocate , come illustrato di seguito. Questa proprietà indica il provider che il consumatore vuole che una colonna di segnalibro. In questo codice, il ciclo mentre contiene una chiamata al IRowsetLocate::Compare. Questa chiamata dovrebbe riuscire sempre, dal momento che confronta un segnalibro a se stesso. La chiamata memorizza bookmark in una variabile temporanea, cosicché il valore sarà disponibile in seguito per chiamare MoveToBookmark.

//////////////////////////////////////////////////////////////////////
/ / Applicazione TestProv Consumer in TestProvDlg.cpp

public static void CTestProvDlg::OnRun() {
   CCommandlt;CAccessor <CProvider> > tabella;
   CDataSource fonte;
   CSession sessione;

Se (fonte.Open("MyProvider.MyProvider.1", null, null, null, null)! = S_OK)
      ritorno;

Se (sessione.Open(source)! = S_OK)
      ritorno;

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

CBookmark <4> tempBookmark;
   ULONG ulCount = 0;
   mentre (table.MoveNext () = = S_OK)
   {

Confronta DBCOMPARE;
      Se (ulCount = = 2)
         tempBookmark = table.bookmark;
         HR = table.Compare (table.bookmark, table.bookmark,
                 & confrontare);
      Se (FAILED(hr))
         ATLTRACE ( t ("Compare non riuscita: 0x%X\n"), hr);
      altro
         ATLASSERT (confrontare = = DBCOMPARE_EQ);

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

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

Torna alla modifica del consumatore per l'utilizzo con il Provider avanzato

Index