Udostępnij za pośrednictwem


Wymiana pól rekordów: jak działa RFX

W tym temacie opisano ten proces RFX.Jest to zaawansowany obejmujący tematu:

  • RFX i zestawu rekordów

  • Proces RFX

[!UWAGA]

Ten temat dotyczy pochodną klasy CRecordset w wiersz, który luzem pobieranie nie została zaimplementowana.Jeśli używasz pobieranie wiersza zbiorczego wymiany pól rekordu luzem (RFX luzem) jest zaimplementowana.Większość RFX jest podobny do RFX.Aby zrozumieć różnice, zobacz zestaw rekordów: pobieranie rekordów luzem (ODBC).

RFX i zestawu rekordów

Członkowie danych pole obiektu recordset, wzięte razem, stanowią bufor Edycja przechowujący zaznaczone kolumny jeden rekord.Jeżeli zestaw rekordów jest otwierany po raz pierwszy jest chcesz przeczytać pierwszy rekord, RFX wiąże (associates) każda wybrana kolumna na adres członka danych odpowiedniego pola.Gdy zestaw rekordów aktualizacje rekordu, RFX wywołania funkcji interfejsu API ODBC do wysyłania SQL Aktualizacja lub Wstaw instrukcji do sterownika.RFX używa jej wiedzy pola danych członków Aby określić kolumny, które chcesz zapisać.

Ramach wykonuje kopię zapasową buforu Edycja na pewnych etapach, można przywrócić jego zawartość, jeśli to konieczne.Przed dodaniem nowego rekordu i przed rozpoczęciem edytowania istniejącego rekordu RFX kopię zapasową buforu edycji.Przywraca buforu Edycja w niektórych przypadkach, na przykład, po Aktualizacja następujące wywołanie AddNew.Bufor Edycja nie są przywracane, jeśli porzucić buforu Edycja zmienionego przez, na przykład przenoszenie do innego rekordu przed wywołaniem funkcji Aktualizacja.

Oprócz wymiany danych między źródłem danych i członkowie danych pole w zestawie rekordów, RFX zarządza parametry wiązania.Gdy zestaw rekordów jest otwarty, każdy parametr danych członków są powiązane rzędu "?" symbole zastępcze w instrukcji SQL który CRecordset::Open konstrukcje.Aby uzyskać więcej informacji, zobacz zestaw rekordów: parametryzacja zestaw rekordów (ODBC).

Zastąpić swojej klasy zestawu rekordów z DoFieldExchange nie wszystkie prace przenoszenia danych w obu kierunkach.Jak okno dialogowe wymiany danych (DDX) RFX potrzebuje informacji o danych członków klasy.Kreator zawiera informacje niezbędne pisząc implementacji specyficznych dla zestawu rekordów z DoFieldExchange , na podstawie danych pola Członkowskich nazwy i typy danych można określić przy użyciu kreatora.

Proces wymiany pole rekordu

W tej sekcji opisano kolejność zdarzeń RFX jako obiektu zestaw rekordów jest otwierany i w miarę dodawania, aktualizowania i usuwania rekordów.Tabela Sekwencji z RFX operacji podczas zestaw rekordów otwórz i tabeli Sekwencji z RFX operacji podczas przewijania w tym temacie przedstawiania procesu jako procesy RFX przenieść polecenia w zestawie rekordów i jak RFX zarządza aktualizacji.Podczas tych procesów DoFieldExchange nazywa się do wykonywania wielu różnych operacji.M_nOperation element członkowski danych CFieldExchange obiekt Określa, która operacja jest wymagane.Może być pomocne, aby przeczytać zestaw rekordów: jak zestawy rekordów wybierz rekordy (ODBC) i zestaw rekordów: jak zestawy rekordów aktualizacji rekordów (ODBC) przed przeczytaniem tego materiału.

RFX: Początkowy wiązanie kolumny i parametry

Następujące działania RFX występują w kolejności pokazanej, gdy wywołanie obiektu recordset Otwórz funkcji składowej:

  • Jeśli zestaw rekordów ma parametr danych członków, wywołuje ramach DoFieldExchange do związania parametrów parametr symboli zastępczych w ciągu instrukcji SQL w zestawie rekordów.Znalezione dane zależne od typu reprezentującego wartość parametru jest używany dla każdego symbolu zastępczego w Wybierz instrukcji.Dzieje się tak po instrukcja SQL jest przygotowana, ale przed jego wykonaniem.Aby uzyskać informacji na temat przygotowywania instrukcji, zobacz :: SQLPrepare funkcja ODBC Programmer's Reference.

  • Wywołania framework DoFieldExchange po raz drugi powiązać wartości wybranych kolumn do odpowiedniego pola danych członków w zestawie rekordów.Obiekt recordset to ustanawia jako bufor Edycja zawierające kolumny pierwszego rekordu.

  • Zestaw rekordów wykonuje instrukcję SQL i źródło danych zaznacza pierwszy rekord.Rekord kolumny są ładowane do elementów członkowskich danych pole w zestawie rekordów.

W poniższej tabeli przedstawiono kolejność operacji RFX po otwarciu zestawu rekordów.

Kolejność operacji RFX w otwartych zestawu rekordów

Operacja

Operacja DoFieldExchange

Operacja bazy danych SQL

1.Otwórz zestaw rekordów.

 

 

 

2.Tworzenie instrukcji SQL.

 

 

 

3.Wyślij SQL.

 

4.Powiązać parametr danych członków.

 

 

5.Pole danych członków należy powiązać kolumny.

 

 

 

6.ODBC nie przeprowadzki i wypełnia dane.

 

7.Poprawia dane dla języka C++.

 

Zestawy rekordów umożliwia wykonanie przygotowanego przez ODBC pozwalają na szybkie ponowne wykonanie kwerendy z tej samej instrukcji SQL.Aby uzyskać więcej informacji o wykonanie przygotowanego, zobacz zestaw SDK ODBC Programmer's Reference w bibliotece MSDN.

RFX: przewijanie

Podczas przewijania z jednego rekordu do innego ramach wywołuje DoFieldExchange do zastąpienia wartości zostały wcześniej zapisane w pole danych członków z wartościami dla nowego rekordu.

W poniższej tabeli przedstawiono kolejność operacji RFX, kiedy użytkownik przesuwa od rekordu do rekordu.

Kolejność operacji RFX podczas przewijania

Operacja

Operacja DoFieldExchange

Operacja bazy danych SQL

1.Wywołanie MoveNext lub jednej z innych funkcji przenoszenia.

 

 

 

 

2.ODBC nie przeprowadzki i wypełnia dane.

 

3.Poprawia dane dla języka C++.

 

RFX: Dodawanie nowych rekordów i edytowanie istniejących rekordów

Po dodaniu nowego rekordu, zestawu rekordów działa jako bufor edycji do budowania zawartość nowego rekordu.Jak w przypadku dodawania rekordów, edytowanie rekordów wymaga zmiany wartości elementów danych pola w zestawie rekordów.Z punktu widzenia RFX kolejność jest następująca:

  1. Połączenie z zestawem rekordów AddNew lub edytować funkcji składowej powoduje RFX zapisać bieżący bufor Edycja, tak aby można go później przywrócić.

  2. AddNewlub edytować przygotowuje pól w buforze Edycja dzięki RFX może wykryć zmienione pole danych członków.

    Ponieważ nowy rekord nie zawiera danych poprzedniej do porównywania nowe modele z, AddNew ustawia wartość każdego członka danych pola do PSEUDO_NULL wartości.Później, podczas wywoływania Aktualizacja, RFX porównuje wartość każdego członka danych z PSEUDO_NULL wartości.Jeśli występuje różnica, członek danych został ustawiony. (PSEUDO_NULL nie jest taka sama, jak kolumna rekordu z prawdziwej wartości Null ani żadnej z tych taki sam, jak C++ wartości NULL.)

    W przeciwieństwie do aktualizacji zaproszenie do AddNew, Aktualizacja wywołania dla edytować porównuje zaktualizowane wartości z poprzednio zapisanych wartości, a nie za pomocą PSEUDO_NULL.Różnica jest, że AddNew nie zawiera danych przechowywanych wcześniej dla porównania.

  3. Wartości elementów danych pola bezpośrednio ustawić, których wartości chcesz edytować lub które mają wypełnione dla nowego rekordu.Może to dotyczyć telefonicznej SetFieldNull.

  4. Wezwania do Aktualizacja sprawdza zmienionego pola danych członków, zgodnie z opisem w kroku 2 (zobacz tabelę Sekwencji z RFX operacji podczas przewijania).Jeśli żaden uległy zmianie, Aktualizacja zwraca wartość 0.Jeżeli niektórzy członkowie danych pola zostały zmienione, Aktualizacja przygotowuje i wykonuje SQL Wstaw instrukcji, która zawiera wartości dla wszystkich zaktualizowanych pól w rekordzie.

  5. Dla AddNew, Aktualizacja doszła do wniosku, przywracając poprzednio zapisanych wartości rekordu, które były aktualne przed AddNew zadzwonić.Dla edytować, nowe, edytowane wartości pozostają na miejscu.

W poniższej tabeli przedstawiono kolejność operacji RFX podczas dodawania nowego rekordu lub edytowania istniejącego rekordu.

Kolejność operacji RFX podczas AddNew i Edycja

Operacja

Operacja DoFieldExchange

Operacja bazy danych SQL

1.Call AddNew or Edit.

 

 

 

2.Wykonaj kopię zapasową buforu edycji.

 

 

3.Dla AddNew, oznaczyć pole danych członków jako "czyste" i wartość Null.

 

4.Przypisanie wartości do elementów członkowskich danych pola zestawu rekordów.

 

 

5.Wywołanie Aktualizacja.

 

 

 

6.Sprawdź, czy zmienione pola.

 

 

7.Budowanie SQL Wstaw instrukcji dla AddNew lub Aktualizacja instrukcji dla edytować.

 

 

 

8.Wyślij SQL.

 

9.Dla AddNew, Przywróć buforu Edytuj zawartość kopii zapasowej.Dla edytować, usuwanie kopii zapasowej.

 

RFX: Usuwanie istniejących rekordów

Podczas usuwania rekordu RFX Ustawia wszystkie pola wartości NULL jako przypomnienie, że rekord jest usuwany i musi opuścić ją.Nie trzeba inne informacje sekwencji RFX.

Zobacz też

Zadania

Dodawanie klienta MFC ODBC

Informacje

Makra, funkcje globalne i zmienne globalne

Klasa CFieldExchange

CRecordset::DoFieldExchange

Koncepcje

Wymiana pól rekordów (RFX)