Sdílet prostřednictvím


CFieldExchange – třída

Podporuje výměnu polí záznamů (RFX) a rutiny hromadné výměny polí záznamů (Bulk RFX) používané třídami databáze.

Syntaxe

class CFieldExchange

Členové

Veřejné metody

Název Popis
CFieldExchange::IsFieldType Vrátí nenulové, pokud je aktuální operace vhodná pro typ aktualizovaného pole.
CFieldExchange::SetFieldType Určuje typ datového členu sady záznamů – sloupec nebo parametr – reprezentovaný všemi následujícími voláními funkcí RFX do dalšího volání SetFieldType.

Poznámky

CFieldExchange nemá základní třídu.

Tuto třídu použijte, pokud píšete rutiny výměny dat pro vlastní datové typy nebo při implementaci hromadného načítání řádků; jinak tuto třídu nebudete používat přímo. RFX a Bulk RFX vyměňuje data mezi datovými členy pole objektu sady záznamů a odpovídajícími poli aktuálního záznamu ve zdroji dat.

Poznámka:

Pokud pracujete s třídami DAO (Data Access Objects) místo tříd ODBC (Open Database Connectivity), použijte místo toho třídu CDaoFieldExchange . Další informace najdete v článku Overview:Database Programming.

Objekt CFieldExchange poskytuje kontextové informace potřebné pro výměnu polí záznamu nebo hromadnou výměnu polí záznamu. CFieldExchange objekty podporují řadu operací, včetně parametrů vazby a datových členů polí a nastavení různých příznaků u polí aktuálního záznamu. Operace RFX a Bulk RFX se provádějí u datových členů tříd záznamů definovaných typem enum FieldType v CFieldExchange. Možné hodnoty FieldType jsou:

  • CFieldExchange::outputColumn pro datové členy pole.

  • CFieldExchange::inputParam nebo CFieldExchange::param pro datové členy vstupních parametrů.

  • CFieldExchange::outputParam pro datové členy výstupních parametrů.

  • CFieldExchange::inoutParam pro datové členy vstupního/výstupního parametru.

Většina členských funkcí a datových členů třídy je poskytována pro psaní vlastních rutin RFX. Často se používá SetFieldType . Další informace najdete v článcích Výměna polí záznamů (RFX) a Sada záznamů (ODBC). Informace o hromadném načítání řádků naleznete v článku Sada záznamů: Načítání záznamů hromadně (ODBC). Podrobnosti o globálních funkcích RFX a Bulk RFX naleznete v tématu Funkce výměny polí záznamu v části Makra a globální funkce MFC v tomto odkazu.

Hierarchie dědičnosti

CFieldExchange

Požadavky

Hlavička: afxdb.h

CFieldExchange::IsFieldType

Pokud napíšete vlastní funkci RFX, zavolejte IsFieldType na začátku funkce, abyste zjistili, zda lze aktuální operaci provést u konkrétního pole nebo datového typu parametru (a CFieldExchange::outputColumn, CFieldExchange::inputParam, CFieldExchange::param, CFieldExchange::outputParam, , nebo ).CFieldExchange::inoutParam

BOOL IsFieldType(UINT* pnField);

Parametry

pnField
V tomto parametru se vrátí pořadové číslo datového členu pole nebo parametru. Toto číslo odpovídá pořadí datového člena ve funkci CRecordset::D oFieldExchange nebo CRecordset::D oBulkFieldExchange .

Návratová hodnota

Nenulové, pokud lze aktuální operaci provést u aktuálního pole nebo typu parametru.

Poznámky

Postupujte podle modelu existujících funkcí RFX.

CFieldExchange::SetFieldType

Potřebujete volání SetFieldType v přepsání třídy sady záznamů DoFieldExchange nebo DoBulkFieldExchange .

void SetFieldType(UINT nFieldType);

Parametry

nFieldType
Hodnota enum FieldTypedeklarovaného v CFieldExchange, která může být jedním z následujících:

  • CFieldExchange::outputColumn

  • CFieldExchange::inputParam

  • CFieldExchange::param

  • CFieldExchange::outputParam

  • CFieldExchange::inoutParam

Poznámky

U datových členů pole je nutné volat SetFieldType s parametrem CFieldExchange::outputColumn, následované voláním funkcí RFX nebo Bulk RFX. Pokud jste neimplementovali hromadné načítání řádků, pak TřídaWizard toto volání za vás umístí SetFieldType do oddílu DoFieldExchangemapy pole .

Pokud parametrizujete třídu sady záznamů, musíte znovu volat SetFieldType mimo jakýkoli oddíl mapování polí, následované voláním RFX pro všechny členy dat parametru. Každý typ datového členu parametru musí mít vlastní SetFieldType volání. Následující tabulka rozlišuje různé hodnoty, které můžete předat, aby SetFieldType představovaly datové členy parametru vaší třídy:

Hodnota parametru SetFieldType Typ datového člena parametru
CFieldExchange::inputParam Vstupní parametr. Hodnota předaná do dotazu sady záznamů nebo uložené procedury.
CFieldExchange::param stejné jako CFieldExchange::inputParam.
CFieldExchange::outputParam Výstupní parametr. Vrácená hodnota uložené procedury sady záznamů.
CFieldExchange::inoutParam Vstupní/výstupní parametr. Hodnota, která se předá a vrátí z uložené procedury sady záznamů.

Obecně platí, že každá skupina volání funkce RFX přidružená k datovým členům pole nebo datovým členům parametrů musí předcházet voláním SetFieldType. Parametr nFieldType každého SetFieldType volání identifikuje typ datových členů reprezentovaných voláním funkce RFX, které následují za voláním SetFieldType .

Další informace o zpracování výstupních a vstupních/výstupních parametrů naleznete v CRecordset členské funkci FlushResultSet. Další informace o funkcích RFX a Bulk RFX naleznete v tématu Funkce výměny polí záznamu. Související informace o hromadném načítání řádků naleznete v článku Sada záznamů: Načítání záznamů hromadně (ODBC).

Příklad

Tento příklad ukazuje několik volání funkcí RFX s doprovodnými voláními SetFieldType. Všimněte si, že SetFieldType je volána ukazatelem pFX CFieldExchange na objekt.

void CSections::DoFieldExchange(CFieldExchange *pFX)
{
   pFX->SetFieldType(CFieldExchange::outputColumn);
   RFX_Text(pFX, _T("[CourseID]"), m_CourseID);
   RFX_Text(pFX, _T("[InstructorID]"), m_InstructorID);
   RFX_Text(pFX, _T("[RoomNo]"), m_RoomNo);
   RFX_Text(pFX, _T("[Schedule]"), m_Schedule);

   // output parameter
   pFX->SetFieldType(CFieldExchange::outputParam);
   RFX_Long(pFX, _T("Instructor_Count"), m_nCountParam);

   // input parameter
   pFX->SetFieldType(CFieldExchange::inputParam);
   RFX_Text(pFX, _T("Department_Name"), m_strNameParam);
}

Viz také

Graf hierarchie
CRecordset – třída