Sdílet prostřednictvím


Výměna pole záznamu (Record Field Exchange - RFX): Podstata práce RFX

Téma popisuje proces RFX. Je rozšiřujícím tématem, pokrývajícím:

  • RFX a sadu záznamů

  • Proces RFX

Poznámka

Toto téma se týká tříd odvozených z třídy CRecordset, ve které nebylo naimplementováno hromadné načítání řádku. Je naimplementována hromadná výměna pole záznamu (Bulk RFX), pokud používáte hromadné načítání řádku. Funkce hromadné výměny pole záznamu (Bulk RFX) je podobná funkci výměny pole záznamu (RFX). Chcete-li porozumět rozdílům, přečtěte si téma Sada záznamů: Hromadné načítání záznamů (rozhraní ODBC).

RFX a sadu záznamů

Objekt sady záznamů je členem dohromady vzatých datových polí, představující upravenou vyrovnávací paměť, která obsahuje vybrané sloupce jednoho záznamu. Když je sada záznamů poprvé otevřena a chystá se přečíst první záznam, RFX naváže (asociací) každý vybraný sloupec na adresu příslušného pole datového člena. Pokud sada záznamů aktualizuje záznam, RFX zavolá funkce rozhraní ODBC API a odešle ovladači SQL výraz UPDATE nebo INSERT. RFX používá znalosti o poli datových členů ke specifikaci sloupců, které chce zapisovat.

Architektura zálohuje v určitých fázích upravenou vyrovnávací paměť tak, že je v případě potřeby možno jejích obsah obnovit. RFX zálohuje upravenou vyrovnávací paměť před přidáním nového záznamu a před úpravou existujícího záznamu. V některých případech obnoví upravenou vyrovnávací paměť, například po metodě Update zavolané po metodě AddNew. Upravená vyrovnávací paměť není obnovena, pokud její obsah změníte za nový záznam, například přesunem na jiný záznam před zavoláním metody Update.

Kromě výměny dat mezi zdrojem dat a sadou záznamů pole dataových členů, je také přes RFX spravováno vázání parametrů. Při otevření sady záznamů jsou jakékoli parametry datových členů vázány v pořadí podle "?" zástupných symbolů u výpisu konstrukce SQL výrazu CRecordset::Open. Více informací naleznete v tématu Sada záznamů: Parametrizování a sada záznamů (rozhraní ODBC).

Vaše třída sady záznamů je přepsána metodou DoFieldExchange, která provádí veškeré práce přesouvání data v obou směrech. Podobně jako u výměny dialogových dat (dialog data exchange - DDX), potřebuje RFX informace o datových členech vaší třídy. Průvodce zápisem specifické sady záznamů, Vám poskytuje potřebné informace o implementaci metody DoFieldExchange, které jsou založeny na názvu datového člena a datových typech, které zadáte v průvodci.

Proces výměny pole záznamu (RFX)

Tato část popisuje sekvence událostí pro RFX když je objekt sady záznamů otevřen a vy vkládáte, upravujete nebo mažete záznamy. Tabulka Sekvence operací RFX během otevřené sady záznamu (RFX Operations Recordset Open) a tabulka Sekvence operací RFX při posouvání (RFX Operations During Scrolling) v tomto tématu je popisován proces RFX jako příkaz procesů Move v sadě záznamů a jako RFX spravující aktualizaci. Během těchto procesů je volána metody DoFieldExchange k provedení mnoha různých operací. Datový člen m_nOperation objektu CFieldExchange určuje, která operace je požadována. Před přečtením tohoto materiálu, naleznete užitečné rady v tématech Sada záznamů: Jak sady záznamů vybírají záznamy záznamy (rozhraní ODBC) a Sada záznamů: Jak sady záznamů aktualizují záznamy (rozhraní ODBC).

RFX: Počáteční vazba sloupců a parametrů

Následující činnosti RFX jsou prováděny v pořadí uvedeném, při volání objektu sady záznamů členské funkce Open:

  • Pokud má sada záznamů parametr datových členů, zavolá architektura metodu DoFieldExchange k navázání parametrů na zastupující parametry v řetězci datového záznamu SQL dotazu. Závislost datového typu reprezentovaná hodnotou parametru je použita pro každý zastupující parametr, nalezený v SELECT dotazu. To se provádí když je SQL dotaz připraven, ale ještě před jeho vykonáním. Informace o přípravě dotazu naleznete u popisu funkce :: SQLPrepare rozhraní ODBC v Programmer's Reference.

  • Architektura zavolá podruhé metodu DoFieldExchange k vytvoření vazby na vybrané sloupce odpovídající poli datových členů v sadě záznamů. To zařídí objekt sady záznamů jako je upravená vyrovnávací paměť, která obsahuje sloupce prvního záznamu.

  • Sada záznamů provede SQL dotaz a zdroj dat vybere první záznam. Záznam se sloupci je načten do sady záznamů pole datových členů.

Následující tabulka znázorňuje sekvence operací RFX při otevření sady záznamu.

Sekvence operací RFX během otevření sady záznamu

Vaše operace

Operace DoFieldExchange

Operace databáze/SQL

1. Otevři sadu záznamů.

 

 

 

2. Sestav SQL dotaz.

 

 

 

3. Odešli SQL dotaz.

 

4. Vazba parametru datových členů.

 

 

5. Vazba pole datových členů na sloupce.

 

 

 

6. Rozhraní ODBC provádí přesunutí a vyplnění údajů.

 

7. Oprav data pro C++.

 

Sady záznamů používají připravené dotazy rozhraním ODBC pro rychlé opakování stejného SQL dotazu. Pro další informace o připravených dotazech, se podívejte na téma o sadě SDK k rozhraní ODBC Programmer's Reference v knihovně MSDN.

RFX: Posouvání pomocí kolečka myši

Když se posouváte z jednoho záznamu na jiný, je architekturou zavolána metoda DoFieldExchange pro nahrazení původních hodnot z pole datových členů, hodnotami novými.

V následující tabulce jsou uvedeny sekvence operací RFX při přechodu z jednoho záznamu na druhý.

Sekvence operací RFX během posouvání

Vaše operace

Operace DoFieldExchange

Operace databáze/SQL

1. Zavolej MoveNext nebo nějakou jinou Move funkci.

 

 

 

 

2. Rozhraní ODBC provádí přesunutí a vyplnění údajů.

 

3. Oprav data pro C++.

 

RFX: Přidávání nových záznamů a uprava existujících záznamů

Pokud přidáte nový záznam, operace sady záznamů, jako je upravená vyrovnávací paměť, sestaví obsah nového záznamu. Stejně jako u přidávání záznamů, zahrnují úpravy záznamů hodnoty sady záznamů pole datových členů. Z hlediska RFX je sekvence následující:

  1. Zavoláním metody AddNew nebo metody Edit na sadu záznamů členskou funkcí způsobí, že RFX uloží aktuální upravenou vyrovnávací paměť, takže může být později obnovena.

  2. Metoda AddNew nebo metoda Edit připraví pole v upravené vyrovnávací paměti, takže RFX pak může detekovat změny v poli datových členů.

    Vzhledem k tomu, že nový záznam nemá žádné předchozí hodnoty k porovnání nastaví metoda AddNew hodnotu každého pole datového člena na hodnotu PSEUDO_NULL. Když je později zavolána metoda Update, porovnává RFX každou hodnotu datového člena s hodnotou PSEUDO_NULL. Pokud existuje rozdíl, provede se nastavení datového člena. (PSEUDO_NULL není stejný jako sloupec záznam s hodnotou Null true ani tyto je stejný jako C++ NULL.)

    Na rozdíl od metody Update zavolané po metodě AddNew, porovnává metoda Update zavolaná po metodě Edit aktualizované hodnoty s dříve uloženými hodnotami lépe než při použití hodnoty PSEUDO_NULL. Rozdíl je v tom, že metoda AddNew neobsahuje žádné dříve uložené hodnoty pro porovnání.

  3. Nastavíte přímo hodnoty pole datových členů, jejichž hodnoty chcete upravovat nebo vyplňovat pro nový záznam. To může zahrnovat zavolání metody SetFieldNull.

  4. Zavoláním metody Update jsou zkontrolovány pole datových členů tak, jak je to popsáno v kroku 2 (viz tabulka Sekvence operací RFX během posouvání). Pokud nebyl změněn žádný záznam, vrátí metoda Update hodnotu 0. Je-li některé pole datových členů změněno, metoda Update připraví a provede SQL dotaz INSERT, který obsahuje hodnoty pro všechny aktualizované pole v záznamu.

  5. Pro metodu AddNew, uzavře metoda Update obnovení dříve uložených hodnot záznamu, které byly aktuální před zavoláním metody AddNew. Pro metodu Edit zůstává nová upravená hodnota na svém místě.

Následující tabulka znázorňuje sekvence operací RFX při přidání nového záznam nebo úpravě existujícího záznamu.

Sekvence operací RFX během provádění metod AddNew a Edit

Vaše operace

Operace DoFieldExchange

Operace databáze/SQL

1. Zavolej metodu AddNew nebo Edit.

 

 

 

2. Zálohuj editovanou vyrovnávací paměť.

 

 

3. Pro metodu AddNew, označ pole datových členů jako "čisté" a Null-ové.

 

4. Přiřaď hodnoty sadě záznamů pole datových členů.

 

 

5. Zavolej metodu Update.

 

 

 

6. Zkontroluj změněné položky.

 

 

7. Vytvoř SQL dotaz INSERT pro metodu AddNew nebo SQL dotaz UPDATE pro metodu Edit.

 

 

 

8. Odešli SQL dotaz.

 

9. Pro metodu AddNew obnov editovanou vyrovnávací paměť její zálohovanou hodnotou. Pro metodu Edit odstraň zálohu.

 

RFX: Odstranění existujících záznamů.

Pokud odstraníte záznam, RFX nastaví všechna pole na hodnotu NULL jako připomínku, že se záznam odstranil, se musíte přesunout mimo něj. Nepotřebujete žádné další informace o sekvencích RFX.

Viz také

Úkoly

Přidání příjemce rozhraní ODBC knihovny MFC

Odkaz

Macros, Global Functions, and Global Variables

CFieldExchange Class

CRecordset::DoFieldExchange

Koncepty

Výměna pole záznamu (Record Field Exchange - RFX)