Udostępnij za pośrednictwem


Klasa CRecordView

Widok, który wyświetla rekordy bazy danych w kontrolkach.

Składnia

class AFX_NOVTABLE CRecordView : public CFormView

Elementy członkowskie

Konstruktory chronione

Nazwa/nazwisko opis
CRecordView::CRecordView CRecordView Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CRecordView::IsOnFirstRecord Zwraca wartość nonzero, jeśli bieżący rekord jest pierwszym rekordem w skojarzonym zestawie rekordów.
CRecordView::IsOnLastRecord Zwraca wartość nonzero, jeśli bieżący rekord jest ostatnim rekordem w skojarzonym zestawie rekordów.
CRecordView::OnGetRecordset Zwraca wskaźnik do obiektu klasy pochodzącej z CRecordsetklasy . KlasaWizard zastępuje tę funkcję w razie potrzeby i tworzy zestaw rekordów.
CRecordView::OnMove

Metody chronione

Nazwa/nazwisko opis
CRecordView::OnMove Jeśli bieżący rekord uległ zmianie, aktualizuje go w źródle danych, a następnie przechodzi do określonego rekordu (następny, poprzedni, pierwszy lub ostatni).

Uwagi

Widok jest widokiem formularza połączonym bezpośrednio z obiektem CRecordset . Widok jest tworzony na podstawie zasobu szablonu okna dialogowego i wyświetla pola CRecordset obiektu w kontrolkach szablonu okna dialogowego. Obiekt CRecordView używa wymiany danych dialogowych (DDX) i wymiany pól rekordów (RFX), aby zautomatyzować przenoszenie danych między kontrolkami w formularzu i polach zestawu rekordów. CRecordView Udostępnia również domyślną implementację przejścia do pierwszego, następnego, poprzedniego lub ostatniego rekordu oraz interfejs do aktualizowania rekordu aktualnie w widoku.

Uwaga

Jeśli pracujesz z klasami Data Access Objects (DAO), a nie z klasami Open Database Connectivity (ODBC), zamiast tego użyj klasy CDaoRecordView . Aby uzyskać więcej informacji, zobacz artykuł Omówienie: programowanie bazy danych.

Najczęstszym sposobem tworzenia widoku rekordów jest Kreator aplikacji. Kreator aplikacji tworzy zarówno klasę widoku rekordu, jak i skojarzona z nią klasę zestawu rekordów w ramach szkieletowej aplikacji początkowej. Jeśli nie utworzysz klasy widoku rekordów za pomocą Kreatora aplikacji, możesz utworzyć ją później za pomocą klasy ClassWizard. Jeśli po prostu potrzebujesz pojedynczego formularza, łatwiej jest pracę kreatora aplikacji. KlasaWizard umożliwia podjęcie decyzji o użyciu widoku rekordu w dalszej części procesu programowania. Użycie klasy ClassWizard do utworzenia widoku rekordu i zestawu rekordów oddzielnie, a następnie połączenia z nimi jest najbardziej elastycznym podejściem, ponieważ zapewnia większą kontrolę nad nazewnictwem klasy zestawu rekordów i jej klasy . H/. Pliki CPP. Takie podejście umożliwia również posiadanie wielu widoków rekordów w tej samej klasie zestawu rekordów.

Aby ułatwić użytkownikom końcowym przejście z rekordu do rekordu w widoku rekordu, Kreator aplikacji tworzy zasoby menu (i opcjonalnie pasek narzędzi) umożliwiające przejście do pierwszego, następnego, poprzedniego lub ostatniego rekordu. Jeśli tworzysz klasę widoku rekordów za pomocą klasy ClassWizard, musisz utworzyć te zasoby samodzielnie za pomocą menu i edytorów map bitowych.

Aby uzyskać informacje o domyślnej implementacji przenoszenia rekordu z rekordu do rekordu, zobacz IsOnFirstRecord i IsOnLastRecord artykuł Using a Record View (Korzystanie z widoku rekordu).

CRecordView śledzi pozycję użytkownika w zestawie rekordów, dzięki czemu widok rekordów może zaktualizować interfejs użytkownika. Gdy użytkownik przechodzi na końcu zestawu rekordów, widok rekordu wyłącza obiekty interfejsu użytkownika — takie jak elementy menu lub przyciski paska narzędzi — w celu dalszego przechodzenia w tym samym kierunku.

Aby uzyskać więcej informacji na temat deklarowania i używania widoków rekordów i klas zestawów rekordów, zobacz "Projektowanie i tworzenie widoku rekordów" w artykule Widoki rekordów. Aby uzyskać więcej informacji o sposobie działania widoków rekordów i sposobie ich używania, zobacz artykuł Using a Record View (Korzystanie z widoku rekordów).

Hierarchia dziedziczenia

Obiekt CObject

CCmdTarget

CWnd

Widok CView

CScrollView

CFormView

CRecordView

Wymagania

Nagłówek: afxdb.h

CRecordView::CRecordView

Podczas tworzenia obiektu typu pochodzącego z CRecordViewmetody wywołaj jedną z form konstruktora, aby zainicjować obiekt widoku i zidentyfikować zasób okna dialogowego, na którym opiera się widok.

explicit CRecordView(LPCTSTR lpszTemplateName);
explicit CRecordView(UINT nIDTemplate);

Parametry

lpszTemplateName
Zawiera ciąg o wartości null, który jest nazwą zasobu szablonu okna dialogowego.

nIDTemplate
Zawiera identyfikator zasobu szablonu okna dialogowego.

Uwagi

Możesz zidentyfikować zasób według nazwy (przekazać ciąg jako argument do konstruktora) lub według jego identyfikatora (przekazać niepodpisaną liczbę całkowitą jako argument). Zalecane jest użycie identyfikatora zasobu.

Uwaga

Klasa pochodna musi podać własny konstruktor. W konstruktorze klasy pochodnej wywołaj konstruktor CRecordView::CRecordView z nazwą zasobu lub identyfikatorem jako argumentem, jak pokazano w poniższym przykładzie.

CRecordView::OnInitialUpdate wywołuje metodę UpdateData, która wywołuje metodę DoDataExchange. To początkowe wywołanie służące do DoDataExchange łączenia kontrolek (pośrednio) z CRecordset elementami CRecordView członkowskimi danych pól utworzonymi przez klasę ClassWizard. Tych składowych danych nie można używać do momentu wywołania funkcji składowej klasy CFormView::OnInitialUpdate bazowej.

Uwaga

Jeśli używasz klasy ClassWizard, kreator definiuje enum wartość CRecordView::IDD, określa ją w deklaracji klasy i używa jej na liście inicjowania składowych dla konstruktora.

Przykład

CMyRecordView::CMyRecordView()
   : CRecordView(CMyRecordView::IDD)
{
   m_pSet = NULL;
   // TODO: add construction code here

}

CRecordView::IsOnFirstRecord

Wywołaj tę funkcję składową, aby określić, czy bieżący rekord jest pierwszym rekordem w obiekcie zestawu rekordów skojarzonym z tym widokiem rekordów.

BOOL IsOnFirstRecord();

Wartość zwracana

Nonzero, jeśli bieżący rekord jest pierwszym rekordem w zestawie rekordów; w przeciwnym razie 0.

Uwagi

Ta funkcja jest przydatna do pisania własnych implementacji domyślnych programów obsługi aktualizacji poleceń napisanych przez klasę ClassWizard.

Jeśli użytkownik przejdzie do pierwszego rekordu, platforma wyłączy wszystkie obiekty interfejsu użytkownika, które należy przenieść do pierwszego lub poprzedniego rekordu.

CRecordView::IsOnLastRecord

Wywołaj tę funkcję składową, aby określić, czy bieżący rekord jest ostatnim rekordem w obiekcie zestawu rekordów skojarzonym z tym widokiem rekordów.

BOOL IsOnLastRecord();

Wartość zwracana

Nonzero, jeśli bieżący rekord jest ostatnim rekordem w zestawie rekordów; w przeciwnym razie 0.

Uwagi

Ta funkcja jest przydatna do pisania własnych implementacji domyślnych programów obsługi aktualizacji poleceń, które klasyWizard zapisuje w celu obsługi interfejsu użytkownika do przenoszenia z rekordu do rekordu.

Uwaga

Wynik tej funkcji jest niezawodny, z wyjątkiem tego, że widok nie może wykryć końca zestawu rekordów, dopóki użytkownik nie przesunie go obok. Użytkownik musi przejść poza ostatni rekord, zanim widok rekordu będzie mógł stwierdzić, że musi wyłączyć wszystkie obiekty interfejsu użytkownika do przejścia do następnego lub ostatniego rekordu. Jeśli użytkownik przechodzi obok ostatniego rekordu, a następnie przechodzi z powrotem do ostatniego rekordu (lub przed nim), widok rekordu może śledzić pozycję użytkownika w zestawie rekordów i poprawnie wyłączyć obiekty interfejsu użytkownika. IsOnLastRecord jest również zawodny po wywołaniu funkcji OnRecordLastimplementacji , która obsługuje ID_RECORD_LAST polecenia lub CRecordset::MoveLast.

CRecordView::OnGetRecordset

Zwraca wskaźnik do obiektu pochodnego skojarzonego CRecordsetz widokiem rekordu.

virtual CRecordset* OnGetRecordset() = 0;

Wartość zwracana

Wskaźnik do obiektu pochodnego CRecordset, jeśli obiekt został pomyślnie utworzony; w przeciwnym razie wskaźnik NULL.

Uwagi

Należy zastąpić tę funkcję składową, aby utworzyć lub uzyskać obiekt zestawu rekordów i zwrócić do niej wskaźnik. Jeśli zadeklarujesz klasę widoku rekordów za pomocą klasy ClassWizard, kreator napisze dla Ciebie domyślne zastąpienie. Domyślna implementacja klasyWizard zwraca wskaźnik zestawu rekordów przechowywany w widoku rekordu, jeśli istnieje. Jeśli tak nie jest, tworzy obiekt zestawu rekordów typu określonego za pomocą klasy ClassWizard i wywołuje funkcję Open składową, aby otworzyć tabelę lub uruchomić zapytanie, a następnie zwraca wskaźnik do obiektu.

Aby uzyskać więcej informacji i przykładów, zobacz artykuł Record Views: Using a Record View (Widoki rekordów: używanie widoku rekordów).

CRecordView::OnMove

Wywołaj tę funkcję składową, aby przejść do innego rekordu w zestawie rekordów i wyświetlić jego pola w kontrolkach widoku rekordów.

virtual BOOL OnMove(UINT nIDMoveCommand);

Parametry

nIDMoveCommand
Jedna z następujących standardowych wartości identyfikatora polecenia:

  • ID_RECORD_FIRST Przenieś do pierwszego rekordu w zestawie rekordów.

  • ID_RECORD_LAST Przenieś do ostatniego rekordu w zestawie rekordów.

  • ID_RECORD_NEXT Przenieś do następnego rekordu w zestawie rekordów.

  • ID_RECORD_PREV Przenieś do poprzedniego rekordu w zestawie rekordów.

Wartość zwracana

Nonzero, jeśli przeniesienie zakończyło się pomyślnie; w przeciwnym razie 0, jeśli żądanie przeniesienia zostało odrzucone.

Uwagi

Domyślna implementacja wywołuje odpowiednią Move funkcję CRecordset składową obiektu skojarzonego z widokiem rekordu.

Domyślnie aktualizuje bieżący rekord w źródle danych, OnMove jeśli użytkownik zmienił go w widoku rekordu.

Kreator aplikacji tworzy zasób menu z elementami menu Pierwszy rekord, Ostatni rekord, Następny rekord i Poprzedni rekord. W przypadku wybrania opcji Docka paska narzędzi Kreator aplikacji utworzy również pasek narzędzi z przyciskami odpowiadającymi tym poleceniom.

Jeśli przejdziesz obok ostatniego rekordu w zestawie rekordów, widok rekordu będzie nadal wyświetlać ostatni rekord. Jeśli przejdziesz wstecz do pierwszego rekordu, widok rekordu będzie nadal wyświetlać pierwszy rekord.

Uwaga

Wywołanie OnMove zgłasza wyjątek, jeśli zestaw rekordów nie ma żadnych rekordów. Wywołaj odpowiednią funkcję obsługi aktualizacji interfejsu użytkownika — OnUpdateRecordFirst, , OnUpdateRecordLastOnUpdateRecordNextlub OnUpdateRecordPrev — przed odpowiednią operacją przenoszenia, aby określić, czy zestaw rekordów ma jakiekolwiek rekordy.

Zobacz też

Klasa CFormView
Wykres hierarchii
Klasa CRecordset
Klasa CFormView