Wymiany pola rekordu: Jak działa RFX
W tym temacie opisano proces RFX.Jest to zaawansowane tematu, obejmujące:
RFX i zestawu rekordów
Proces RFX
[!UWAGA]
Ten temat dotyczy klasy pochodzące od CRecordset w którym wiersz luzem pobieranie nie została zaimplementowana.Jeśli używasz pobieranie wiersza luzem wymiany pola rekordu luzem (RFX luzem) jest zaimplementowana.Luzem RFX jest podobny do RFX.Aby poznać różnice, zobacz zestaw rekordów: pobieranie rekordów luzem (ODBC).
RFX i zestawu rekordów
Członkowie danych pola obiektu recordset, wzięte razem, stanowią buforu Edycja, przechowującą zaznaczone kolumny jeden rekord.Gdy zestaw rekordów jest otwierane pierwszy raz i ma odczytać pierwszy rekord, RFX wiązania (associates) każdego zaznaczone kolumny adres elementu danych odpowiedniego pola.Gdy zestaw rekordów aktualizacji rekordu, RFX wywołuje funkcje interfejsu API ODBC SQL wysłać Aktualizacja lub WSTAWIĆ instrukcji do sterownika.RFX używa jej wiedzy członków dane pole określenie kolumn, do pisania.
Ramy zapasową buforu Edycja na pewnych etapach, można przywrócić jego zawartość, jeśli to konieczne.RFX wykonuje kopię zapasową buforu edycji, przed dodaniem nowego rekordu i przed rozpoczęciem edytowania istniejącego rekordu.Przywracane buforu Edycja w niektórych przypadkach, na przykład, po Aktualizacja następujące wywołanie AddNew.Bufor Edycja nie są przywracane, jeśli można porzucić buforu edycji nowo zmienionych, na przykład przenoszenie do innego rekordu przed wywoływaniem Aktualizacja.
Oprócz wymianę danych między źródłem danych i członkowie danych pola w zestawie rekordów, RFX zarządza parametrów wiązania.Gdy zestaw rekordów jest otwarty, parametr danych członków są powiązane w kolejności od "?" symbole zastępcze w instrukcji SQL, CRecordset::Open konstrukcji.Aby uzyskać więcej informacji, zobacz zestaw rekordów: parametryzacja zestaw rekordów (ODBC).
Zastąpić klasy rekordów z DoFieldExchange wykonuje pracę, przenoszenia danych w obu kierunkach.Okno dialogowe wymiany danych (DDX), takich jak RFX potrzebuje informacji o danych członków swojej klasy.Kreator udostępnia niezbędne informacje, pisząc implementacji specyficznych rekordów z DoFieldExchange , na podstawie danych pola Członkowskich nazwy i typy danych określić za pomocą kreatora.
Proces wymiany pola rekordu
W tej sekcji opisano sekwencję zdarzeń RFX otwarcia obiektu zestaw rekordów i podczas dodawania, aktualizowania i usuwania rekordów.Tabela Sekwencji z RFX operacji podczas rekordów otwórz i tabeli Sekwencji z RFX operacji podczas przewijania w tym temacie Pokaż proces jako procesy RFX przenieść polecenia w zestawie rekordów i RFX zarządza aktualizacji.Podczas tych procesów DoFieldExchange jest wywoływana w celu wykonywania wielu różnych operacji.M_nOperation członek danych z CFieldExchange obiekt Określa, która operacja jest wymagane.Użytkownik może okazać się pomocna do odczytu 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 powiązanie kolumn i parametry
Następujące działania RFX, występują w kolejności pokazanej wywołaniu obiektu recordset Otwórz Członkowskich funkcji:
Jeśli zestaw rekordów ma parametr danych członków, wywołuje ramach DoFieldExchange do związania parametrów symboli zastępczych parametru w ciągu instrukcję SQL w zestawie rekordów.Znaleziono dane, zależne od typu reprezentacja wartość parametru jest używany dla każdego symbolu zastępczego w Zaznacz instrukcji.Dzieje się tak po instrukcji SQL jest gotowa, ale przed jego wykonaniem.Informacji na temat przygotowywania instrukcji, zobacz :: SQLPrepare funkcji ODBC Programmer's Reference.
Rozmowy w ramach DoFieldExchange po raz drugi powiązać wartości wybranych kolumn z odpowiedniego pola danych członków zestawu rekordów.Obiekt recordset to ustanawia jako bufor Edycja, zawierający kolumny pierwszego rekordu.
Zestaw rekordów wykonuje instrukcję SQL i źródła danych zaznacza pierwszy rekord.Rekord kolumn są ładowane do członków danych pola w zestawie rekordów.
W poniższej tabeli przedstawiono sekwencję operacji RFX po otwarciu zestawu rekordów.
Kolejność operacji RFX otwartych 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ązania członków danych parametru. |
|
|
5.Powiązać pole danych członków kolumn. |
|
|
|
6.ODBC nie przeprowadzki i wypełnia się w danych. |
|
7.Ustalenie danych dla języka C++. |
|
Zestawy rekordów umożliwia wykonanie przygotowanego przez ODBC umożliwić szybkie ponowne wykonanie kwerendy z tej samej instrukcji SQL.Aby uzyskać więcej informacji o wykonanie przygotowany, 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 uprzednio przechowywanych w członków danych pola z wartościami dla nowego rekordu.
W poniższej tabeli przedstawiono sekwencję operacji RFX, gdy użytkownik przesuwa się między rekordami.
Kolejność operacji RFX podczas przewijania
Operacja |
Operacja DoFieldExchange |
Operacja bazy danych/SQL |
---|---|---|
1.Wywołanie MoveNext lub jednej z innych funkcji Przenieś. |
|
|
|
|
2.ODBC nie przeprowadzki i wypełnia się w danych. |
|
3.Ustalenie danych dla języka C++. |
|
RFX: Dodawanie nowych rekordów i edycję istniejących rekordów
Jeśli zostanie dodany nowy rekord, zestaw rekordów działa jako bufor Edycja zbudowanie zawartość nowego rekordu.Jak w przypadku dodawania rekordów, edytowanie rekordów polega na zmianę wartości w zestawie rekordów pole danych członków.Z perspektywy RFX kolejność jest następująca:
Rozmowa z zestawem rekordów AddNew lub Edytuj funkcji składowej powoduje RFX do przechowywania bieżący bufor Edycja, więc można go później przywrócić.
AddNewlub Edytuj przygotowuje pól w buforze Edycja tak RFX można wykryć zmienione pole danych członków.
Ponieważ nowy rekord nie ma żadnych poprzednich wartości do porównywania nowe, AddNew ustawia wartość każdego pola danych członka PSEUDO_NULL wartości.Później, po wywołaniu Aktualizacja, RFX porównuje wartość każdy członek 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 true wartości Null ani jest albo tych taki sam, jak C++ NULL.)
W przeciwieństwie do Aktualizacja wymagają AddNew, Aktualizacja wymagają Edytuj porównuje zaktualizowane wartości z wcześniej przechowywane wartości, a nie przy użyciu PSEUDO_NULL.Różnica jest AddNew nie ma żadnych wartości przechowywanych wcześniej dla porównania.
Wartości elementów danych pola bezpośrednio ustawić, których wartości chcesz edytować, lub że chcesz wypełnić nowym rekordzie.Może to obejmować calling SetFieldNull.
Rozmowy do Aktualizacja sprawdza, czy zmienione pole danych członków, jak opisano w kroku 2 (patrz tabela Sekwencji z RFX operacji podczas przewijania).Brak uległy zmianie, Aktualizacja zwraca wartość 0.Niektórzy członkowie dane pole uległy zmianie, Aktualizacja przygotowuje się i wykonuje SQL WSTAW instrukcji, która zawiera wartości dla wszystkich zaktualizowanych pól w rekordzie.
Dla AddNew, Aktualizacja stwierdza, przywracając zapisane wartości rekordu, które były aktualne przed AddNew wywołania.Dla Edytuj, nowe, edytowane wartości pozostają na miejscu.
W poniższej tabeli przedstawiono sekwencję operacji RFX po dodaniu 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 Edycja. |
|
|
3.Dla AddNew, oznaczyć pole danych członków jako "czyste" oraz wartość Null. |
|
4.Przypisanie wartości do zestawu rekordów pole danych członków. |
|
|
5.Wywołanie Aktualizacja. |
|
|
|
6.Sprawdź, czy zmienione pola. |
|
|
7.Budowanie SQL WSTAWIĆ instrukcji dla AddNew lub Aktualizacja instrukcji dla Edytuj. |
|
|
|
8.Wyślij SQL. |
|
9.Dla AddNew, Przywróć buforu edycji jej zawartości kopii zapasowej.Dla Edytuj, usuwanie kopii zapasowej. |
|
RFX: Usuwanie istniejących rekordów
Podczas usuwania rekordu RFX ustawia wszystkie pola NULL jak przypomnienie, że rekord jest usuwany i należy go opuścić.Inne informacje sekwencji RFX nie jest konieczne.
Zobacz też
Zadania
Informacje
Makra, globalne funkcje i zmienne globalne