Encontrar el grupo de propiedad y la propiedad ID de la propiedad que desea. (Véase en la referencia del programador OLE DB, OLE DB propiedades .)
En el ejemplo siguiente se asume que está intentando obtener una propiedad desde el conjunto de filas. El código para utilizar el comando o sesión es similar, pero utiliza una interfaz diferente.
Crear un objeto CDBPropset utilizando el grupo de propiedades como parámetro al constructor. Por ejemplo:
CDBPropSet propset(DBPROPSET_ROWSET)
Llamar AddProperty, pasándole el ID de la propiedad y un valor que se asigna a la propiedad. El tipo del valor depende de la propiedad que se está utilizando.
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IRowsetChange, true);
propset.AddProperty (DBPROP_UPDATABILITY,
DBPROPVAL_UP_INSERT | DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE)
Utilizar el miembro de datos m_spUnkSite para obtener el puntero para el objeto que crea el objeto.
CAgentRowsetlt;CMyProviderCommand > * pRowset = (CAgentRowset <CMyProviderCommand> *) pThis;
CComQIPtr < IRowsetInfo & IID_IRowsetInfo > spRowsetProps = pRowset
Utilice la interfaz IRowset llamar GetProperties. Pase la propiedad establecida como parámetro. Aquí está el código final:
CAgentRowsetlt;CMyProviderCommand > * pRowset = (CAgentRowset <CMyProviderCommand> *) pThis;
CComQIPtr < IRowsetInfo & IID_IRowsetInfo > spRowsetProps = pRowset;
conjunto.AddPropertyID(DBPROP_BOOKMARKS);
DBPROPSET * pPropSet = NULL;
ULONG ulPropSet = 0;
HRESULT hr;
Si (spRowsetProps)
HR = spRowsetProps - > GetProperties (1, conjunto & ulPropSet & pPropSet);
Si (pPropSet)
{
Var CComVariant = pPropSet - > .vvalue rgProperties [0];
CoTaskMemFree (pPropSet - > rgProperties);
CoTaskMemFree(pPropSet);
Si (SUCCEEDED(hr) & & (var.boolVal == VARIANT_TRUE))
{
…
}
}