Compartir a través de


CUtlProps (Clase)

Implementa propiedades para una variedad de interfaces de propiedad OLE DB (por ejemplo, IDBProperties, IDBProperties y IRowsetInfo).

Sintaxis

template < class T >
class ATL_NO_VTABLE CUtlProps : public CUtlPropsBase

Parámetros

T
La clase que contiene BEGIN_PROPSET_MAP.

Requisitos

Encabezado: atldb.h

Miembros

Métodos

Nombre Descripción
GetPropValue Obtiene una propiedad de un conjunto de propiedades.
IsValidValue Se usa para validar un valor antes de establecer una propiedad.
OnInterfaceRequested Controla las solicitudes de una interfaz opcional cuando un consumidor llama a un método en una interfaz de creación de objetos.
OnPropertyChanged Se llama después de establecer una propiedad para controlar las propiedades encadenadas.
SetPropValue Establece una propiedad en un conjunto de propiedades.

Comentarios

La mayoría de esta clase es un detalle de implementación.

CUtlProps contiene dos miembros para establecer propiedades internamente: GetPropValue y SetPropValue.

Para obtener más información sobre las macros usadas en un mapa de conjunto de propiedades, vea BEGIN_PROPSET_MAP y END_PROPSET_MAP.

CUtlProps::GetPropValue

Obtiene una propiedad de un conjunto de propiedades.

Sintaxis

OUT_OF_LINE HRESULT GetPropValue(const GUID* pguidPropSet,
   DBPROPID dwPropId,
   VARIANT* pvValue);

Parámetros

pguidPropSet
[in] GUID del elemento PropSet.

dwPropId
[in] Índice de propiedad.

pvValue
[out] Puntero a una variante que contiene el nuevo valor de propiedad.

Valor devuelto

Failure si se produce un error y S_OK si se ejecuta correctamente.

CUtlProps::IsValidValue

Se usa para validar un valor antes de establecer una propiedad.

Sintaxis

virtual HRESULT CUtlPropsBase::IsValidValue(ULONG /* iCurSet */,
   DBPROP* pDBProp);

Parámetros

iCurSet
Índice en la matriz del conjunto de propiedades; cero si solo hay un conjunto de propiedades.

pDBProp
Id. de propiedad y nuevo valor en una estructura DBPROP.

Valor devuelto

Un HRESULT estándar. El valor devuelto predeterminado es S_OK.

Comentarios

Si tiene alguna rutina de validación que quiera ejecutar en un valor que va a usar para establecer una propiedad, debe invalidar esta función. Por ejemplo, podría validar DBPROP_AUTH_PASSWORD en una tabla de contraseñas para determinar un valor válido.

CUtlProps::OnInterfaceRequested

Controla las solicitudes de una interfaz opcional cuando un consumidor llama a un método en una de las interfaces de creación de objetos.

Sintaxis

virtual HRESULT CUtlPropsBase::OnInterfaceRequested(REFIID riid);

Parámetros

riid
[in] IID de la interfaz solicitada. Para obtener más información, vea la descripción del parámetro riid de ICommand::Execute en la Referencia del programador de OLE DB (en el SDK de MDAC).

Comentarios

OnInterfaceRequested controla las solicitudes del consumidor de una interfaz opcional cuando un consumidor llama a un método en una de las interfaces de creación de objetos, (como IDBCreateSession, IDBCreateCommand, IOpenRowset o ICommand). Establece la propiedad OLE DB correspondiente para la interfaz solicitada. Por ejemplo, si el consumidor solicita IID_IRowsetLocate, OnInterfaceRequested establece la interfaz DBPROP_IRowsetLocate. Al hacerlo, se mantiene el estado correcto durante la creación del conjunto de filas.

Se llama a este método cuando el consumidor llama a IOpenRowset::OpenRowset o ICommand::Execute.

Si un consumidor abre un objeto y solicita una interfaz opcional, el proveedor debe establecer la propiedad asociada a esa interfaz en VARIANT_TRUE. Para permitir el procesamiento específico de la propiedad, se llama a OnInterfaceRequested antes de llamar al método Execute del proveedor. De manera predeterminada, OnInterfaceRequested controla las interfaces siguientes:

  • IRowsetLocate

  • IRowsetChange

  • IRowsetUpdate

  • IConnectionPointContainer

  • IRowsetScroll

Si quiere controlar otras interfaces, invalide esta función en el origen de datos, la sesión, el comando o la clase del conjunto de filas para procesar las funciones. La invalidación debe pasar por las interfaces de propiedades normales set/get para asegurarse de que establecer propiedades también hace que se establezcan las propiedades encadenadas (vea OnPropertyChanged).

CUtlProps::OnPropertyChanged

Se llama después de establecer una propiedad para controlar las propiedades encadenadas.

Sintaxis

virtual HRESULT OnPropertyChanged(ULONG /* iCurSet */,
   DBPROP* pDBProp);

Parámetros

iCurSet
Índice en la matriz del conjunto de propiedades; cero si solo hay un conjunto de propiedades.

pDBProp
Id. de propiedad y nuevo valor en una estructura DBPROP.

Valor devuelto

Un HRESULT estándar. El valor devuelto predeterminado es S_OK.

Comentarios

Si quiere controlar propiedades encadenadas, como marcadores o actualizaciones cuyos valores dependen del valor de otra propiedad, debe invalidar esta función.

Ejemplo

En esta función, el usuario obtiene el id. de propiedad del parámetro DBPROP*. Ahora es posible comparar el id. con una propiedad que se va a encadenar. Cuando se encuentra la propiedad, se llama a SetProperties con la propiedad que ahora se establecerá junto con la otra propiedad. En este caso, si uno obtiene la propiedad DBPROP_IRowsetLocate, DBPROP_LITERALBOOKMARKS o DBPROP_ORDEREDBOOKMARKS, se puede establecer la propiedad DBPROP_BOOKMARKS.

HRESULT OnPropertyChanged(ULONG /*iCurSet*/, DBPROP* pDBProp)
{
   ATLASSERT(pDBProp != NULL);

   DWORD dwPropertyID = pDBProp->dwPropertyID;

   if (dwPropertyID == DBPROP_IRowsetLocate || 
      dwPropertyID == DBPROP_LITERALBOOKMARKS ||
      dwPropertyID == DBPROP_ORDEREDBOOKMARKS)
   {
      CComVariant var = pDBProp->vValue;

      if (var.boolVal == VARIANT_TRUE)
      {
         // Set the bookmarks property as these are chained
         CComVariant bookVar(true);
         CDBPropSet set(DBPROPSET_ROWSET);
         set.AddProperty(DBPROP_BOOKMARKS, bookVar);

         return SetProperties(1, &set);
      }
   }

   return S_OK;
}

CUtlProps::SetPropValue

Establece una propiedad en un conjunto de propiedades.

Sintaxis

HRESULT SetPropValue(const GUID* pguidPropSet,
   DBPROPID dwPropId,
   VARIANT* pvValue);

Parámetros

pguidPropSet
[in] GUID del elemento PropSet.

dwPropId
[in] Índice de propiedad.

pvValue
[in] Puntero a una variante que contiene el nuevo valor de propiedad.

Valor devuelto

Failure si se produce un error y S_OK si se ejecuta correctamente.

Consulte también

Plantillas de proveedores OLE DB
Arquitectura de plantillas de proveedores OLE DB