Sdílet prostřednictvím


CUtlProps – třída

Implementuje vlastnosti pro různá rozhraní vlastností OLE DB (například IDBProperties, IDBPropertiesa IRowsetInfo).

Syntaxe

template < class T >
class ATL_NO_VTABLE CUtlProps : public CUtlPropsBase

Parametry

T
Třída, která obsahuje BEGIN_PROPSET_MAP.

Požadavky

Hlavička: atldb.h

Členové

Metody

Název Popis
GetPropValue Získá vlastnost ze sady vlastností.
IsValidValue Slouží k ověření hodnoty před nastavením vlastnosti.
OnInterfaceRequested Zpracovává požadavky na volitelné rozhraní, když příjemce volá metodu v rozhraní pro vytvoření objektu.
OnPropertyChanged Volá se po nastavení vlastnosti pro zpracování zřetězených vlastností.
SetPropValue Nastaví vlastnost v sadě vlastností.

Poznámky

Většina z této třídy je podrobnosti implementace.

CUtlProps obsahuje dva členy pro interní nastavení vlastností: GetPropValue a SetPropValue.

Další informace o makrech používaných v mapě sady vlastností najdete v tématu BEGIN_PROPSET_MAP a END_PROPSET_MAP.

CUtlProps::GetPropValue

Získá vlastnost ze sady vlastností.

Syntaxe

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

Parametry

pguidPropSet
[v] Identifikátor GUID pro propSet.

dwPropId
[v] Index vlastností.

pvValue
[ven] Ukazatel na variantu, která obsahuje novou hodnotu vlastnosti.

Návratová hodnota

Failure v případě selhání a S_OK v případě úspěchu.

CUtlProps::IsValidValue

Slouží k ověření hodnoty před nastavením vlastnosti.

Syntaxe

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

Parametry

iCurSet
Index do pole sady vlastností; nula, pokud je nastavena pouze jedna vlastnost.

pDBProp
ID vlastnosti a nová hodnota ve struktuře DBPROP .

Návratová hodnota

Standardní HODNOTA HRESULT. Výchozí návratová hodnota je S_OK.

Poznámky

Pokud máte nějaké ověřovací rutiny, které chcete spustit na hodnotě, kterou chcete použít k nastavení vlastnosti, měli byste tuto funkci přepsat. Můžete například ověřit DBPROP_AUTH_PASSWORD v tabulce hesel a určit platnou hodnotu.

CUtlProps::OnInterfaceRequested

Zpracovává požadavky na volitelné rozhraní, když příjemce volá metodu na jednom z rozhraní pro vytváření objektů.

Syntaxe

virtual HRESULT CUtlPropsBase::OnInterfaceRequested(REFIID riid);

Parametry

riid
[v] IID požadovaného rozhraní. Další podrobnosti najdete v popisu parametru ICommand::Execute riid v referenčních informacích programátora OLE DB (v sadě MDAC SDK).

Poznámky

OnInterfaceRequested zpracovává požadavky příjemců na volitelné rozhraní, když uživatel volá metodu na jednom z rozhraní pro vytváření objektů (například IDBCreateSession, IDBCreateCommand, IOpenRowsetnebo ICommand). Nastaví odpovídající vlastnost OLE DB pro požadované rozhraní. Pokud například uživatel požaduje IID_IRowsetLocate, OnInterfaceRequested nastaví DBPROP_IRowsetLocate rozhraní. Tím se udržuje správný stav během vytváření sady řádků.

Tato metoda je volána při volání IOpenRowset::OpenRowset příjemce nebo ICommand::Execute.

Pokud uživatel otevře objekt a požádá o volitelné rozhraní, měl by poskytovatel nastavit vlastnost přidruženou k ho rozhraní tak, aby VARIANT_TRUE. Chcete-li povolit zpracování specifické pro vlastnost, OnInterfaceRequested je volána před zavolání metody zprostředkovatele Execute . Ve výchozím nastavení OnInterfaceRequested zpracovává následující rozhraní:

  • IRowsetLocate

  • IRowsetChange

  • IRowsetUpdate

  • IConnectionPointContainer

  • IRowsetScroll

Pokud chcete zpracovat jiná rozhraní, přepište tuto funkci ve zdroji dat, relaci, příkazu nebo třídě sady řádků pro zpracování funkcí. Přepsání by mělo projít normálním rozhraním vlastností set/get, aby se zajistilo, že vlastnosti nastavení také nastaví všechny zřetězený vlastnosti (viz OnPropertyChanged).

CUtlProps::OnPropertyChanged

Volá se po nastavení vlastnosti pro zpracování zřetězených vlastností.

Syntaxe

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

Parametry

iCurSet
Index do pole sady vlastností; nula, pokud je nastavena pouze jedna vlastnost.

pDBProp
ID vlastnosti a nová hodnota ve struktuře DBPROP .

Návratová hodnota

Standardní HODNOTA HRESULT. Výchozí návratová hodnota je S_OK.

Poznámky

Pokud chcete zpracovat zřetězených vlastností, jako jsou záložky nebo aktualizace, jejichž hodnoty jsou závislé na hodnotě jiné vlastnosti, měli byste tuto funkci přepsat.

Příklad

V této funkci získá uživatel ID vlastnosti z parametru DBPROP* . Teď je možné porovnat ID s vlastností, která se má zřetězit. Při nalezení vlastnosti je SetProperties volána s vlastností, která bude nyní nastavena ve spojení s druhou vlastností. V tomto případě, pokud jeden získá DBPROP_IRowsetLocate, DBPROP_LITERALBOOKMARKSnebo DBPROP_ORDEREDBOOKMARKS vlastnost, jeden může nastavit DBPROP_BOOKMARKS vlastnost.

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

Nastaví vlastnost v sadě vlastností.

Syntaxe

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

Parametry

pguidPropSet
[v] Identifikátor GUID pro propSet.

dwPropId
[v] Index vlastností.

pvValue
[v] Ukazatel na variantu, která obsahuje novou hodnotu vlastnosti.

Návratová hodnota

Failure v případě selhání a S_OK v případě úspěchu.

Viz také

Šablony zprostředkovatele OLE DB
Architektura šablon zprostředkovatele OLE DB