Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Implémente des propriétés pour une variété d’interfaces de propriété OLE DB (par exemple, IDBProperties, IDBPropertieset 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 IDBCreateSessionexemple, , IDBCreateCommand, IOpenRowsetou 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 :
IRowsetLocateIRowsetChangeIRowsetUpdateIConnectionPointContainerIRowsetScroll
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_LITERALBOOKMARKSou 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