Класс CUtlProps
Реализует свойства для различных интерфейсов свойств OLE DB (например, IDBProperties
, IDBProperties
и IRowsetInfo
).
Синтаксис
template < class T >
class ATL_NO_VTABLE CUtlProps : public CUtlPropsBase
Параметры
T
Класс, содержащий BEGIN_PROPSET_MAP
объект .
Требования
Заголовок: atldb.h
Участники
Методы
Имя | Описание |
---|---|
GetPropValue | Возвращает свойство из набора свойств. |
IsValidValue | Используется для проверки значения перед заданием свойства. |
OnInterfaceRequested | Обрабатывает запросы к необязательному интерфейсу, когда потребитель вызывает метод в интерфейсе создания объекта. |
OnPropertyChanged | Вызывается после задания свойства для обработки связанных свойств. |
SetPropValue | Задает свойство в наборе свойств. |
Замечания
Большая часть этого класса — это подробные сведения о реализации.
CUtlProps
содержит два элемента для настройки свойств внутри системы: GetPropValue и SetPropValue.
Дополнительные сведения о макросах, используемых в карте набора свойств, см. в BEGIN_PROPSET_MAP и END_PROPSET_MAP.
CUtlProps::GetPropValue
Возвращает свойство из набора свойств.
Синтаксис
OUT_OF_LINE HRESULT GetPropValue(const GUID* pguidPropSet,
DBPROPID dwPropId,
VARIANT* pvValue);
Параметры
pguidPropSet
[in] GUID для PropSet.
dwPropId
[in] Индекс свойства.
pvValue
[out] Указатель на вариант, содержащий новое значение свойства.
Возвращаемое значение
Failure
при сбое и S_OK в случае успешного выполнения.
CUtlProps::IsValidValue
Используется для проверки значения перед заданием свойства.
Синтаксис
virtual HRESULT CUtlPropsBase::IsValidValue(ULONG /* iCurSet */,
DBPROP* pDBProp);
Параметры
iCurSet
Индекс в массив набора свойств; ноль, если имеется только один набор свойств.
pDBProp
Идентификатор свойства и новое значение в структуре DBPROP .
Возвращаемое значение
Стандартный HRESULT. Возвращаемое значение по умолчанию — S_OK.
Замечания
Если у вас есть какие-либо подпрограммы проверки, которые вы хотите запустить в значении, которое вы собираетесь использовать для задания свойства, необходимо переопределить эту функцию. Например, можно проверить DBPROP_AUTH_PASSWORD в таблице паролей, чтобы определить допустимое значение.
CUtlProps::OnInterfaceRequested
Обрабатывает запросы к необязательному интерфейсу, когда потребитель вызывает метод в одном из интерфейсов создания объекта.
Синтаксис
virtual HRESULT CUtlPropsBase::OnInterfaceRequested(REFIID riid);
Параметры
riid
[in] IID для запрошенного интерфейса. Дополнительные сведения см. в описании параметра ICommand::Execute
riid в справочнике программиста OLE DB (в пакете SDK MDAC).
Замечания
OnInterfaceRequested
обрабатывает запросы потребителей для необязательного интерфейса, когда потребитель вызывает метод в одном из интерфейсов создания объекта (напримерIDBCreateSession
, , IDBCreateCommand
IOpenRowset
илиICommand
). Он задает соответствующее свойство OLE DB для запрошенного интерфейса. Например, если потребитель запрашивает IID_IRowsetLocate
OnInterfaceRequested
DBPROP_IRowsetLocate
интерфейс. Это обеспечивает правильное состояние во время создания набора строк.
Этот метод вызывается, когда потребитель вызывает IOpenRowset::OpenRowset
или ICommand::Execute
.
Если потребитель открывает объект и запрашивает необязательный интерфейс, поставщик должен задать свойство, связанное с этим интерфейсом, VARIANT_TRUE. Чтобы разрешить обработку, определяемую свойством, OnInterfaceRequested
вызывается перед вызовом метода поставщика Execute
. По умолчанию OnInterfaceRequested
обрабатывает следующие интерфейсы:
IRowsetLocate
IRowsetChange
IRowsetUpdate
IConnectionPointContainer
IRowsetScroll
Если вы хотите обрабатывать другие интерфейсы, переопределите эту функцию в источнике данных, сеансе, команде или классе набора строк для обработки функций. Переопределение должно проходить через обычные интерфейсы набора и получения свойств, чтобы гарантировать, что параметры свойств также задают любые связанные свойства (см. раздел OnPropertyChanged).
CUtlProps::OnPropertyChanged
Вызывается после задания свойства для обработки связанных свойств.
Синтаксис
virtual HRESULT OnPropertyChanged(ULONG /* iCurSet */,
DBPROP* pDBProp);
Параметры
iCurSet
Индекс в массив набора свойств; ноль, если имеется только один набор свойств.
pDBProp
Идентификатор свойства и новое значение в структуре DBPROP .
Возвращаемое значение
Стандартный HRESULT. Возвращаемое значение по умолчанию — S_OK.
Замечания
Если вы хотите обрабатывать связанные свойства, например закладки или обновления, значения которых зависят от значения другого свойства, следует переопределить эту функцию.
Пример
В этой функции пользователь получает идентификатор свойства из DBPROP*
параметра. Теперь можно сравнить идентификатор с свойством в цепочку. При обнаружении SetProperties
свойства вызывается со свойством, которое теперь будет задано в сочетании с другим свойством. В этом случае, если он получает DBPROP_IRowsetLocate
свойство , DBPROP_LITERALBOOKMARKS
или DBPROP_ORDEREDBOOKMARKS
свойство, можно задать DBPROP_BOOKMARKS
свойство.
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
Задает свойство в наборе свойств.
Синтаксис
HRESULT SetPropValue(const GUID* pguidPropSet,
DBPROPID dwPropId,
VARIANT* pvValue);
Параметры
pguidPropSet
[in] GUID для PropSet.
dwPropId
[in] Индекс свойства.
pvValue
[in] Указатель на вариант, содержащий новое значение свойства.
Возвращаемое значение
Failure
при сбое и S_OK в случае успешного выполнения.
См. также
Шаблоны поставщика OLE DB
Архитектура шаблона поставщика OLE DB