Udostępnij za pośrednictwem


CUtlProps — Klasa

Implementuje właściwości dla różnych interfejsów właściwości OLE DB (na przykład IDBProperties, , IDBPropertiesi IRowsetInfo).

Składnia

template < class T >
class ATL_NO_VTABLE CUtlProps : public CUtlPropsBase

Parametry

T
Klasa zawierająca element BEGIN_PROPSET_MAP.

Wymagania

Nagłówek: atldb.h

Elementy członkowskie

Metody

Nazwa/nazwisko opis
GetPropValue Pobiera właściwość z zestawu właściwości.
IsValidValue Służy do sprawdzania poprawności wartości przed ustawieniem właściwości.
OnInterfaceRequested Obsługuje żądania opcjonalnego interfejsu, gdy użytkownik wywołuje metodę w interfejsie tworzenia obiektu.
OnPropertyChanged Wywoływana po ustawieniu właściwości do obsługi właściwości łańcuchowych.
SetPropValue Ustawia właściwość w zestawie właściwości.

Uwagi

Większość tej klasy jest szczegółem implementacji.

CUtlProps Zawiera dwa elementy członkowskie ustawiania właściwości wewnętrznie: GetPropValue i SetPropValue.

Aby uzyskać więcej informacji na temat makr używanych w mapie zestawu właściwości, zobacz BEGIN_PROPSET_MAP i END_PROPSET_MAP.

CUtlProps::GetPropValue

Pobiera właściwość z zestawu właściwości.

Składnia

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

Parametry

pguidPropSet
[in] Identyfikator GUID zestawu propset.

dwPropId
[in] Indeks właściwości.

pvValue
[out] Wskaźnik do wariantu zawierającego nową wartość właściwości.

Wartość zwracana

Failure w przypadku awarii i S_OK, jeśli się powiedzie.

CUtlProps::IsValidValue

Służy do sprawdzania poprawności wartości przed ustawieniem właściwości.

Składnia

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

Parametry

iCurSet
Indeks do tablicy zestawu właściwości; zero, jeśli istnieje tylko jeden zestaw właściwości.

pDBProp
Identyfikator właściwości i nowa wartość w strukturze DBPROP .

Wartość zwracana

Standardowy HRESULT. Domyślna wartość zwracana jest S_OK.

Uwagi

Jeśli masz jakiekolwiek procedury weryfikacji, które chcesz uruchomić na wartości, której zamierzasz użyć do ustawienia właściwości, należy zastąpić tę funkcję. Można na przykład zweryfikować DBPROP_AUTH_PASSWORD względem tabeli haseł, aby określić prawidłową wartość.

CUtlProps::OnInterfaceRequested

Obsługuje żądania opcjonalnego interfejsu, gdy użytkownik wywołuje metodę w jednym z interfejsów tworzenia obiektu.

Składnia

virtual HRESULT CUtlPropsBase::OnInterfaceRequested(REFIID riid);

Parametry

riid
[in] Identyfikator IID żądanego interfejsu. Aby uzyskać więcej informacji, zobacz opis parametru ICommand::Execute riid w dokumentacji programisty OLE DB (w zestawie SDK MDAC).

Uwagi

OnInterfaceRequested obsługuje żądania konsumentów dla opcjonalnego interfejsu, gdy użytkownik wywołuje metodę w jednym z interfejsów tworzenia obiektu (takich jak IDBCreateSession, IDBCreateCommand, IOpenRowsetlub ICommand). Ustawia odpowiednią właściwość OLE DB dla żądanego interfejsu. Jeśli na przykład użytkownik żąda IID_IRowsetLocate, OnInterfaceRequested ustawia DBPROP_IRowsetLocate interfejs. W ten sposób zachowuje prawidłowy stan podczas tworzenia zestawu wierszy.

Ta metoda jest wywoływana, gdy użytkownik wywołuje IOpenRowset::OpenRowset metodę lub ICommand::Execute.

Jeśli użytkownik otworzy obiekt i zażąda opcjonalnego interfejsu, dostawca powinien ustawić właściwość skojarzona z tym interfejsem na VARIANT_TRUE. Aby zezwolić na przetwarzanie specyficzne dla właściwości, OnInterfaceRequested jest wywoływana przed wywołaniem metody dostawcy Execute . Domyślnie OnInterfaceRequested obsługuje następujące interfejsy:

  • IRowsetLocate

  • IRowsetChange

  • IRowsetUpdate

  • IConnectionPointContainer

  • IRowsetScroll

Jeśli chcesz obsługiwać inne interfejsy, przesłoń tę funkcję w źródle danych, sesji, poleceniu lub zestawie wierszy do przetwarzania funkcji. Przesłonięcia powinny przechodzić przez interfejsy normalnych właściwości set/get, aby upewnić się, że ustawienie właściwości ustawia również wszystkie właściwości łańcuchowe (zobacz OnPropertyChanged).

CUtlProps::OnPropertyChanged

Wywoływana po ustawieniu właściwości do obsługi właściwości łańcuchowych.

Składnia

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

Parametry

iCurSet
Indeks do tablicy zestawu właściwości; zero, jeśli istnieje tylko jeden zestaw właściwości.

pDBProp
Identyfikator właściwości i nowa wartość w strukturze DBPROP .

Wartość zwracana

Standardowy HRESULT. Domyślna wartość zwracana jest S_OK.

Uwagi

Jeśli chcesz obsługiwać właściwości łańcuchowe, takie jak zakładki lub aktualizacje, których wartości są zależne od wartości innej właściwości, należy zastąpić tę funkcję.

Przykład

W tej funkcji użytkownik pobiera identyfikator właściwości z parametru DBPROP* . Teraz można porównać identyfikator z właściwością do łańcucha. Po znalezieniu właściwości jest wywoływana z właściwością , SetProperties która zostanie teraz ustawiona w połączeniu z inną właściwością. W takim przypadku, jeśli zostanie uzyskana DBPROP_IRowsetLocatewłaściwość , DBPROP_LITERALBOOKMARKSlub DBPROP_ORDEREDBOOKMARKS , można ustawić DBPROP_BOOKMARKS właściwość .

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

Ustawia właściwość w zestawie właściwości.

Składnia

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

Parametry

pguidPropSet
[in] Identyfikator GUID zestawu propset.

dwPropId
[in] Indeks właściwości.

pvValue
[in] Wskaźnik do wariantu zawierającego nową wartość właściwości.

Wartość zwracana

Failure w przypadku awarii i S_OK, jeśli się powiedzie.

Zobacz też

Szablony dostawców OLE DB
Architektura szablonu dostawcy OLE DB