CUtlProps, classe
Implémente des propriétés pour une variété d’interfaces de propriété OLE DB (par exemple, IDBProperties
, IDBProperties
et IRowsetInfo
).
Syntaxe
template < class T >
class ATL_NO_VTABLE CUtlProps : public CUtlPropsBase
Paramètres
T
Classe qui contient le BEGIN_PROPSET_MAP
.
Spécifications
En-tête : atldb.h
Membres
Méthodes
Nom | Description |
---|---|
GetPropValue | Obtient une propriété d’un jeu de propriétés. |
IsValidValue | Utilisé pour valider une valeur avant de définir une propriété. |
OnInterfaceRequested | Gère les demandes d’une interface facultative lorsqu’un consommateur appelle une méthode sur une interface de création d’objet. |
OnPropertyChanged | Appelé après avoir défini une propriété pour gérer les propriétés chaînées. |
SetPropValue | Définit une propriété dans un jeu de propriétés. |
Notes
La plupart de cette classe est un détail d’implémentation.
CUtlProps
contient deux membres pour définir des propriétés en interne : GetPropValue et SetPropValue.
Pour plus d’informations sur les macros utilisées dans un mappage de jeu de propriétés, consultez BEGIN_PROPSET_MAP et END_PROPSET_MAP.
CUtlProps::GetPropValue
Obtient une propriété d’un jeu de propriétés.
Syntaxe
OUT_OF_LINE HRESULT GetPropValue(const GUID* pguidPropSet,
DBPROPID dwPropId,
VARIANT* pvValue);
Paramètres
pguidPropSet
[in] GUID du PropSet.
dwPropId
[in] Index de propriété.
pvValue
[out] Pointeur vers une variante qui contient la nouvelle valeur de propriété.
Valeur de retour
Failure
en cas d’échec et de S_OK en cas de réussite.
CUtlProps::IsValidValue
Utilisé pour valider une valeur avant de définir une propriété.
Syntaxe
virtual HRESULT CUtlPropsBase::IsValidValue(ULONG /* iCurSet */,
DBPROP* pDBProp);
Paramètres
iCurSet
Index dans le tableau property-set ; zéro s’il n’existe qu’un seul jeu de propriétés.
pDBProp
ID de propriété et nouvelle valeur dans une structure DBPROP .
Valeur de retour
HRESULT standard. La valeur de retour par défaut est S_OK.
Notes
Si vous avez des routines de validation que vous souhaitez exécuter sur une valeur que vous êtes sur le point d’utiliser pour définir une propriété, vous devez remplacer cette fonction. Par exemple, vous pouvez valider DBPROP_AUTH_PASSWORD par rapport à une table de mot de passe pour déterminer une valeur valide.
CUtlProps::OnInterfaceRequested
Gère les demandes d’une interface facultative lorsqu’un consommateur appelle une méthode sur l’une des interfaces de création d’objet.
Syntaxe
virtual HRESULT CUtlPropsBase::OnInterfaceRequested(REFIID riid);
Paramètres
riid
[in] IID de l’interface demandée. Pour plus d’informations, consultez la description du paramètre riid de ICommand::Execute
la référence du programmeur OLE DB (dans le KIT SDK MDAC).
Notes
OnInterfaceRequested
gère les demandes de consommateur pour une interface facultative lorsqu’un consommateur appelle une méthode sur l’une des interfaces de création d’objet (par IDBCreateSession
exemple, , IDBCreateCommand
, IOpenRowset
ou ICommand
). Elle définit la propriété OLE DB correspondante pour l’interface demandée. Par exemple, si le consommateur demande IID_IRowsetLocate
, OnInterfaceRequested
définit l’interface DBPROP_IRowsetLocate
. Cela maintient l’état correct lors de la création de l’ensemble de lignes.
Cette méthode est appelée lorsque le consommateur appelle IOpenRowset::OpenRowset
ou ICommand::Execute
.
Si un consommateur ouvre un objet et demande une interface facultative, le fournisseur doit définir la propriété associée à cette interface sur VARIANT_TRUE. Pour autoriser le traitement spécifique à la propriété, OnInterfaceRequested
est appelé avant l’appel de la méthode du Execute
fournisseur. Par défaut, OnInterfaceRequested
gère les interfaces suivantes :
IRowsetLocate
IRowsetChange
IRowsetUpdate
IConnectionPointContainer
IRowsetScroll
Si vous souhaitez gérer d’autres interfaces, remplacez cette fonction dans votre source de données, session, commande ou classe d’ensemble de lignes pour traiter les fonctions. Votre remplacement doit passer par les interfaces de propriétés normales définies/get pour vous assurer que la définition des propriétés définit également toutes les propriétés chaînées (voir OnPropertyChanged).
CUtlProps::OnPropertyChanged
Appelé après avoir défini une propriété pour gérer les propriétés chaînées.
Syntaxe
virtual HRESULT OnPropertyChanged(ULONG /* iCurSet */,
DBPROP* pDBProp);
Paramètres
iCurSet
Index dans le tableau property-set ; zéro s’il n’existe qu’un seul jeu de propriétés.
pDBProp
ID de propriété et nouvelle valeur dans une structure DBPROP .
Valeur de retour
HRESULT standard. La valeur de retour par défaut est S_OK.
Notes
Si vous souhaitez gérer des propriétés chaînées, telles que des signets ou des mises à jour dont les valeurs dépendent de la valeur d’une autre propriété, vous devez remplacer cette fonction.
Exemple
Dans cette fonction, l’utilisateur obtient l’ID de propriété du DBPROP*
paramètre. À présent, il est possible de comparer l’ID à une propriété à chaîne. Lorsque la propriété est trouvée, SetProperties
elle est appelée avec la propriété qui sera maintenant définie conjointement avec l’autre propriété. Dans ce cas, si l’on obtient le DBPROP_IRowsetLocate
, DBPROP_LITERALBOOKMARKS
ou DBPROP_ORDEREDBOOKMARKS
la propriété, on peut définir la DBPROP_BOOKMARKS
propriété.
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
Définit une propriété dans un jeu de propriétés.
Syntaxe
HRESULT SetPropValue(const GUID* pguidPropSet,
DBPROPID dwPropId,
VARIANT* pvValue);
Paramètres
pguidPropSet
[in] GUID du PropSet.
dwPropId
[in] Index de propriété.
pvValue
[in] Pointeur vers une variante qui contient la nouvelle valeur de propriété.
Valeur de retour
Failure
en cas d’échec et de S_OK en cas de réussite.
Voir aussi
Modèles du fournisseur OLE DB
Architecture des modèles du fournisseur OLE DB