Wie ich eine Eigenschaft in mein Provider verweisen?

Suchen Sie die Eigenschaftengruppe und Objekt-ID für die Eigenschaft gewünschten. (Siehe OLE DB-Eigenschaften in der OLE DB Programmer's Reference.)

Im folgende Beispiel wird davon ausgegangen, dass Sie versuchen, eine Eigenschaft aus dem Rowset abrufen. Der Code für die Verwendung der Sitzung oder Befehl ähnelt, jedoch eine andere Schnittstelle verwendet.

Erstellen Sie ein CDBPropset -Objekt mit die Eigenschaftengruppe als Parameter an den Konstruktor. Zum Beispiel:

CDBPropSet propset(DBPROPSET_ROWSET)

Rufen Sie AddProperty, übergeben sie die Eigenschafts-ID und einen Wert der Eigenschaft zugewiesen werden. Der Typ des Wertes hängt von der Eigenschaft, die Sie verwenden.

CDBPropSet propset(DBPROPSET_ROWSET);
Propset.AddProperty(DBPROP_IRowsetChange, true);
Propset.AddProperty (DBPROP_UPDATABILITY,
DBPROPVAL_UP_INSERT | ZUSÄTZLICH DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE)

Verwenden Sie den Datenmember m_spUnkSite auf den Zeiger auf das Objekt abzurufen, die das Objekt erstellt.

 CAgentRowsetlt;CMyProviderCommand > * pRowset = (CAgentRowset <CMyProviderCommand> *) pThis;

CComQIPtr < IRowsetInfo & IID_IRowsetInfo > SpRowsetProps = pRowset

Verwenden Sie die IRowset -Schnittstelle aufrufen, GetProperties. Übergeben Sie die Eigenschaftengruppe als Parameter. Hier ist der endgültige code:

CAgentRowsetlt;CMyProviderCommand > * pRowset = (CAgentRowset <CMyProviderCommand> *) pThis;

CComQIPtr < IRowsetInfo & IID_IRowsetInfo > SpRowsetProps = pRowset;

festgelegt.AddPropertyID(DBPROP_BOOKMARKS);
DBPROPSET * pPropSet = NULL;
ULONG UlPropSet = 0;
HRESULT hr;

Wenn (SpRowsetProps)
   HR = SpRowsetProps - > GetProperties (1, Satz, & UlPropSet & pPropSet);

Wenn (pPropSet)
{
   CComVariant Var = pPropSet - > RgProperties [0] .vvalue;
   CoTaskMemFree (pPropSet - > RgProperties);
   CoTaskMemFree(pPropSet);

Wenn (SUCCEEDED(hr) & & (var.boolVal == VARIANT_TRUE))
   {
      …
   }
}

Index