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
neboCFieldExchange::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 FieldType
deklarované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 DoFieldExchange
mapy 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);
}