Condividi tramite


Classe CUtlProps

Implementa le proprietà per un'ampia gamma di interfacce delle proprietà OLE DB , ad esempio , IDBPropertiesIDBPropertiese IRowsetInfo.

Sintassi

template < class T >
class ATL_NO_VTABLE CUtlProps : public CUtlPropsBase

Parametri

T
Classe che contiene l'oggetto BEGIN_PROPSET_MAP.

Requisiti

Intestazione: atldb.h

Membri

Metodi

Nome Descrizione
GetPropValue Ottiene una proprietà da un set di proprietà.
IsValidValue Utilizzato per convalidare un valore prima di impostare una proprietà.
OnInterfaceRequested Gestisce le richieste per un'interfaccia facoltativa quando un consumer chiama un metodo su un'interfaccia di creazione di oggetti.
OnPropertyChanged Chiamato dopo aver impostato una proprietà per gestire le proprietà concatenati.
SetPropValue Imposta una proprietà in un set di proprietà.

Osservazioni:

La maggior parte di questa classe è un dettaglio di implementazione.

CUtlProps contiene due membri per impostare internamente le proprietà: GetPropValue e SetPropValue.

Per altre informazioni sulle macro utilizzate in una mappa del set di proprietà, vedere BEGIN_PROPSET_MAP e END_PROPSET_MAP.

CUtlProps::GetPropValue

Ottiene una proprietà da un set di proprietà.

Sintassi

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

Parametri

pguidPropSet
[in] GUID per l'oggetto PropSet.

dwPropId
[in] Indice della proprietà.

pvValue
[out] Puntatore a una variante che contiene il nuovo valore della proprietà.

Valore restituito

Failure in caso di errore e S_OK in caso di esito positivo.

CUtlProps::IsValidValue

Utilizzato per convalidare un valore prima di impostare una proprietà.

Sintassi

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

Parametri

iCurSet
Indice nella matrice di set di proprietà; zero se è presente un solo set di proprietà.

pDBProp
ID proprietà e nuovo valore in una struttura DBPROP .

Valore restituito

HRESULT standard. Il valore restituito predefinito è S_OK.

Osservazioni:

Se sono presenti routine di convalida da eseguire su un valore che si sta per utilizzare per impostare una proprietà, è necessario eseguire l'override di questa funzione. Ad esempio, è possibile convalidare DBPROP_AUTH_PASSWORD rispetto a una tabella delle password per determinare un valore valido.

CUtlProps::OnInterfaceRequested

Gestisce le richieste per un'interfaccia facoltativa quando un consumer chiama un metodo su una delle interfacce di creazione dell'oggetto.

Sintassi

virtual HRESULT CUtlPropsBase::OnInterfaceRequested(REFIID riid);

Parametri

riid
[in] IID per l'interfaccia richiesta. Per altri dettagli, vedere la descrizione del parametro riid di ICommand::Execute in OLE DB Programmer's Reference (in MDAC SDK).

Osservazioni:

OnInterfaceRequestedgestisce le richieste di consumer per un'interfaccia facoltativa quando un consumer chiama un metodo su una delle interfacce di creazione dell'oggetto ( ad esempio IDBCreateSession, IDBCreateCommandIOpenRowset, o ICommand). Imposta la proprietà OLE DB corrispondente per l'interfaccia richiesta. Ad esempio, se il consumer richiede IID_IRowsetLocate, OnInterfaceRequested imposta l'interfaccia DBPROP_IRowsetLocate . In questo modo viene mantenuto lo stato corretto durante la creazione del set di righe.

Questo metodo viene chiamato quando il consumer chiama IOpenRowset::OpenRowset o ICommand::Execute.

Se un consumer apre un oggetto e richiede un'interfaccia facoltativa, il provider deve impostare la proprietà associata a tale interfaccia su VARIANT_TRUE. Per consentire l'elaborazione specifica della proprietà, OnInterfaceRequested viene chiamata prima che venga chiamato il metodo del Execute provider. Per impostazione predefinita, OnInterfaceRequested gestisce le interfacce seguenti:

  • IRowsetLocate

  • IRowsetChange

  • IRowsetUpdate

  • IConnectionPointContainer

  • IRowsetScroll

Se si desidera gestire altre interfacce, eseguire l'override di questa funzione nell'origine dati, nella sessione, nel comando o nella classe del set di righe per elaborare le funzioni. L'override deve passare attraverso le normali interfacce delle proprietà set/get per assicurarsi che l'impostazione delle proprietà imposti anche eventuali proprietà concatenati (vedere OnPropertyChanged).

CUtlProps::OnPropertyChanged

Chiamato dopo aver impostato una proprietà per gestire le proprietà concatenati.

Sintassi

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

Parametri

iCurSet
Indice nella matrice di set di proprietà; zero se è presente un solo set di proprietà.

pDBProp
ID proprietà e nuovo valore in una struttura DBPROP .

Valore restituito

HRESULT standard. Il valore restituito predefinito è S_OK.

Osservazioni:

Se si desidera gestire le proprietà concatenati, ad esempio segnalibri o aggiornamenti i cui valori dipendono dal valore di un'altra proprietà, è necessario eseguire l'override di questa funzione.

Esempio

In questa funzione, l'utente ottiene l'ID proprietà dal DBPROP* parametro . È ora possibile confrontare l'ID con una proprietà a catena. Quando la proprietà viene trovata, SetProperties viene chiamata con la proprietà che verrà ora impostata insieme all'altra proprietà. In questo caso, se si ottiene la DBPROP_IRowsetLocateproprietà , DBPROP_LITERALBOOKMARKSo DBPROP_ORDEREDBOOKMARKS , è possibile impostare la DBPROP_BOOKMARKS proprietà .

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

Imposta una proprietà in un set di proprietà.

Sintassi

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

Parametri

pguidPropSet
[in] GUID per l'oggetto PropSet.

dwPropId
[in] Indice della proprietà.

pvValue
[in] Puntatore a una variante che contiene il nuovo valore della proprietà.

Valore restituito

Failure in caso di errore e S_OK in caso di esito positivo.

Vedi anche

Modelli di provider OLE DB
Architettura dei modelli di provider OLE DB