Ändern des Lauf Schaltfläche Handlers

Sie müssen Code zum Festlegen der Eigenschaft DBPROP_IRowsetLocate hinzufügen, wie unten gezeigt. Diese Eigenschaft weist dem Anbieter, dass der Verbraucher eine Lesezeichenspalte will. In diesem Code der while -Schleife enthält einen Aufruf an IRowsetLocate::Compare. Dieser Aufruf sollte immer erfolgreich, da es ein Lesezeichen für selbst vergleicht. Der Aufruf speichert das Lesezeichen in einer temporären Variablen, so dass der Wert später zum Aufrufen von MoveToBookmark zur Verfügung stehen.

//////////////////////////////////////////////////////////////////////
/ / TestProv als Consumeranwendung in TestProvDlg.cpp

void CTestProvDlg::OnRun() {}
   CCommandlt;CAccessor <CProvider> > Tabellen;
   CDataSource Quelle;
   CSession Sitzung;

Wenn (Quelle.Open("MyProvider.MyProvider.1", NULL, NULL, NULL, null)! = S_OK)
      Rückkehr;

Wenn (Sitzung.Open(Source)! = S_OK)
      Rückkehr;

CDBPropSet propset(DBPROPSET_ROWSET);
   Propset.AddProperty(DBPROP_IRowsetLocate, true);
   Wenn (Tabelle.Open(Session, _T("c:\\public\\testprf2\\foo.txt"), &propset)! = S_OK)
      Rückkehr;

CBookmark <4> TempBookmark;
   ULONG UlCount = 0;
   während (Tabelle.MoveNext() == S_OK)
   {

DBCOMPARE vergleichen;
      Wenn (UlCount == 2)
         TempBookmark = table.bookmark;
         HR = Table.Compare (table.bookmark, table.bookmark,
                 & vergleichen);
      Wenn (FAILED(hr))
         ATLTRACE (_T ("Fehler beim Vergleichen: 0x%X\n"), hr);
      anderes
         ATLASSERT (vergleichen == DBCOMPARE_EQ);

m_ctlString1.AddString(Table.szCommand);
      m_ctlString2.AddString(Table.szText);
      UlCount ++;
   }

Tabelle.MoveToBookmark(tempBookmark);
   m_ctlString1.AddString(Table.szCommand);
   m_ctlString2.AddString(Table.szText);
}

Zurück zu den Verbraucher für die Verwendung mit der Enhanced Provider ändern

Index