Partager via


CUtlProps, classe

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 :

  • 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_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