CUtlProps – třída
Implementuje vlastnosti pro různá rozhraní vlastností OLE DB (například IDBProperties
, IDBProperties
a 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
, IOpenRowset
nebo 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_LITERALBOOKMARKS
nebo 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