Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
IRowsetLocateIRowsetChangeIRowsetUpdateIConnectionPointContainerIRowsetScroll
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