Klasa CDaoRecordView

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

Składnia

class AFX_NOVTABLE CDaoRecordView : public CFormView

Członkowie

Konstruktory chronione

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

Metody publiczne

Nazwa/nazwisko opis
CDaoRecordView::IsOnFirstRecord Zwraca wartość nonzero, jeśli bieżący rekord jest pierwszym rekordem w skojarzonym zestawie rekordów.
CDaoRecordView::IsOnLastRecord Zwraca wartość nonzero, jeśli bieżący rekord jest ostatnim rekordem w skojarzonym zestawie rekordów.
CDaoRecordView::OnGetRecordset Zwraca wskaźnik do obiektu klasy pochodzącej z CDaoRecordsetklasy . KlasaWizard zastępuje tę funkcję w razie potrzeby i tworzy zestaw rekordów.
CDaoRecordView::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 CDaoRecordset . Widok jest tworzony na podstawie zasobu szablonu okna dialogowego i wyświetla pola CDaoRecordset obiektu w kontrolkach szablonu okna dialogowego. Obiekt CDaoRecordView używa wymiany danych dialogowych (DDX) i wymiany pól rekordów DAO (DFX) w celu zautomatyzowania przenoszenia danych między kontrolkami w formularzu i polach zestawu rekordów. CDaoRecordView Udostępnia również domyślną implementację przenoszenia do pierwszego, następnego, poprzedniego lub ostatniego rekordu oraz interfejs do aktualizowania rekordu aktualnie w widoku.

Uwaga

Klasy baz danych DAO różnią się od klas baz danych MFC opartych na interfejsie Open Database Połączenie ivity (ODBC). Wszystkie nazwy klas bazy danych DAO mają prefiks "CDao". Nadal można uzyskać dostęp do źródeł danych ODBC za pomocą klas DAO; Klasy DAO zazwyczaj oferują lepsze możliwości, ponieważ używają aparatu bazy danych Microsoft Jet.

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 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. Jeśli nie utworzysz klasy widoku rekordów za pomocą Kreatora aplikacji, możesz utworzyć ją później za pomocą klasy ClassWizard. 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 na temat domyślnej implementacji przenoszenia rekordu z rekordu do rekordu, zobacz IsOnFirstRecord i IsOnLastRecord artykuł Using a Record View (Używanie widoku rekordu), który ma zastosowanie zarówno do , jak CRecordView i CDaoRecordView.

CDaoRecordView ś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). Wszystkie wymienione powyżej artykuły dotyczą zarówno elementów , jak CRecordView i CDaoRecordView.

Hierarchia dziedziczenia

Cobject

Ccmdtarget

Cwnd

Cview

Cscrollview

Cformview

CDaoRecordView

Wymagania

Nagłówek: afxdao.h

CDaoRecordView::CDaoRecordView

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

explicit CDaoRecordView(LPCTSTR lpszTemplateName);
explicit CDaoRecordView(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 CDaoRecordView::CDaoRecordView z nazwą zasobu lub identyfikatorem jako argumentem.

CDaoRecordView::OnInitialUpdate wywołuje metodę CWnd::UpdateData, która wywołuje metodę CWnd::DoDataExchange. To początkowe wywołanie służące do DoDataExchange łączenia kontrolek (pośrednio) z CDaoRecordset elementami CDaoRecordView 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ść CDaoRecordView::IDD w deklaracji klasy i używa jej na liście inicjowania składowych dla konstruktora.

CMyDaoRecordView::CMyDaoRecordView()
    : CDaoRecordView(CMyDaoRecordView::IDD)
{
   m_pSet = NULL;
   // TODO: add construction code here
}

CDaoRecordView::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 (na przykład elementy menu lub przyciski paska narzędzi) do przejścia do pierwszego lub poprzedniego rekordu.

CDaoRecordView::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 może nie być w stanie wykryć końca zestawu rekordów, dopóki użytkownik nie przeniesie się obok niego. Użytkownik może 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.

CDaoRecordView::OnGetRecordset

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

virtual CDaoRecordset* OnGetRecordset() = 0;

Wartość zwracana

Wskaźnik do obiektu pochodnego CDaoRecordset, 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).

CDaoRecordView::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ą funkcję CDaoRecordset składową Move obiektu skojarzonego z widokiem rekordów.

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. Jeśli wybierzesz opcję Początkowy pasek 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 CDaoRecordset
Klasa CDaoTableDef
Klasa CDaoQueryDef
Klasa CDaoDatabase
Klasa CDaoWorkspace
Klasa CFormView