CRecordView-Klasse

Eine Sicht, die Datenbankdatensätze in Steuerelementen anzeigt.

Syntax

class AFX_NOVTABLE CRecordView : public CFormView

Member

Geschützte Konstruktoren

Name Beschreibung
CRecordView::CRecordView Erstellt ein CRecordView-Objekt.

Öffentliche Methoden

Name Beschreibung
CRecordView::IsOnFirstRecord Gibt "nonzero" zurück, wenn der aktuelle Datensatz der erste Datensatz im zugeordneten Recordset ist.
CRecordView::IsOnLastRecord Gibt "nonzero" zurück, wenn der aktuelle Datensatz der letzte Datensatz im zugeordneten Recordset ist.
CRecordView::OnGetRecordset Gibt einen Zeiger auf ein Objekt einer klasse zurück, die von CRecordset. ClassWizard setzt diese Funktion für Sie außer Kraft und erstellt bei Bedarf das Recordset.
CRecordView::OnMove

Geschützte Methoden

Name Beschreibung
CRecordView::OnMove Wenn sich der aktuelle Datensatz geändert hat, wird er in der Datenquelle aktualisiert, und wechselt dann zum angegebenen Datensatz (nächster, vorheriger, erster oder letzter Datensatz).

Hinweise

Die Ansicht ist eine Formularansicht, die direkt mit einem CRecordset Objekt verbunden ist. Die Ansicht wird aus einer Dialogvorlagenressource erstellt und zeigt die Felder des Objekts in den Steuerelementen der CRecordset Dialogfeldvorlage an. Das CRecordView Objekt verwendet Dialogdatenaustausch (Dialog Data Exchange, DDX) und Datensatzfeldaustausch (RFX), um die Datenverschiebung zwischen den Steuerelementen im Formular und den Feldern des Recordsets zu automatisieren. CRecordView stellt außerdem eine Standardimplementierung für den Wechsel zum ersten, nächsten, vorherigen oder letzten Datensatz sowie eine Schnittstelle zum Aktualisieren des aktuell angezeigten Datensatzes bereit.

Hinweis

Wenn Sie mit den DAO-Klassen (Data Access Objects) anstatt mit den Open Database Verbinden ivity (ODBC)-Klassen arbeiten, verwenden Sie stattdessen die Klasse CDaoRecordView. Weitere Informationen finden Sie im Artikel Übersicht: Datenbankprogrammierung.

Die am häufigsten verwendete Methode zum Erstellen der Datensatzansicht ist der Anwendungs-Assistent. Der Anwendungs-Assistent erstellt sowohl die Datensatzansichtsklasse als auch die zugehörige Recordset-Klasse als Teil der Skelettstartanwendung. Wenn Sie die Datensatzansichtsklasse nicht mit dem Anwendungs-Assistenten erstellen, können Sie sie später mit ClassWizard erstellen. Wenn Sie einfach ein einzelnes Formular benötigen, ist der Ansatz des Anwendungs-Assistenten einfacher. Mit ClassWizard können Sie sich später im Entwicklungsprozess für die Verwendung einer Datensatzansicht entscheiden. Die Verwendung von ClassWizard zum Erstellen einer Datensatzansicht und eines Recordsets separat und anschließendes Verbinden ist der flexibelste Ansatz, da sie Ihnen mehr Kontrolle beim Benennen der Recordsetklasse und deren . H/. CPP-Dateien. Mit diesem Ansatz können Sie auch mehrere Datensatzansichten für dieselbe Recordsetklasse verwenden.

Damit Endbenutzer einfach von Datensatz zu Datensatz in der Datensatzansicht wechseln können, erstellt der Anwendungs-Assistent Menüressourcen (und optional Symbolleistenressourcen), um zum ersten, nächsten, vorherigen oder letzten Datensatz zu wechseln. Wenn Sie eine Datensatzansichtsklasse mit ClassWizard erstellen, müssen Sie diese Ressourcen selbst mit dem Menü- und Bitmap-Editor erstellen.

Informationen zur Standardimplementierung zum Verschieben von Datensatz zu Datensatz finden Sie unter IsOnFirstRecord und im Artikel "Verwenden einer DatensatzansichtIsOnLastRecord".

CRecordView verfolgt die Position des Benutzers im Recordset nach, damit die Datensatzansicht die Benutzeroberfläche aktualisieren kann. Wenn der Benutzer zum Ende des Recordsets wechselt, deaktiviert die Datensatzansicht Benutzeroberflächenobjekte , z. B. Menüelemente oder Symbolleistenschaltflächen, um sich weiter in die gleiche Richtung zu bewegen.

Weitere Informationen zum Deklarieren und Verwenden ihrer Datensatzansichts- und Recordsetklassen finden Sie unter "Entwerfen und Erstellen einer Datensatzansicht" im Artikel "Datensatzansichten". Weitere Informationen zur Funktionsweise von Datensatzansichten und deren Verwendung finden Sie im Artikel "Verwenden einer Datensatzansicht".

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CView

CScrollView

CFormView

CRecordView

Anforderungen

Header: afxdb.h

CRecordView::CRecordView

Wenn Sie ein Objekt eines von einem Typ abgeleiteten CRecordViewTyps erstellen, rufen Sie beide Formen des Konstruktors auf, um das Ansichtsobjekt zu initialisieren und die Dialogressource zu identifizieren, auf der die Ansicht basiert.

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

Parameter

lpszTemplateName
Enthält eine mit Null beendete Zeichenfolge, die den Namen einer Dialogvorlagenressource darstellt.

nIDTemplate
Enthält die ID-Nummer einer Dialogvorlagenressource.

Hinweise

Sie können die Ressource entweder anhand des Namens identifizieren (eine Zeichenfolge als Argument an den Konstruktor übergeben) oder durch die ID (eine nicht signierte ganze Zahl als Argument übergeben). Die Verwendung einer Ressourcen-ID wird empfohlen.

Hinweis

Die abgeleitete Klasse muss einen eigenen Konstruktor bereitstellen. Rufen Sie im Konstruktor der abgeleiteten Klasse den Konstruktor CRecordView::CRecordView mit dem Ressourcennamen oder der ID als Argument auf, wie im folgenden Beispiel gezeigt.

CRecordView::OnInitialUpdate Aufrufe UpdateData, die aufgerufen DoDataExchangewerden. Dieser anfängliche Aufruf zum DoDataExchange Verbinden von CRecordView Steuerelementen (indirekt) mit CRecordset Felddatenmembern, die von ClassWizard erstellt wurden. Diese Datenmember können erst verwendet werden, nachdem Sie die Basisklassenmemberfunktion CFormView::OnInitialUpdate aufgerufen haben.

Hinweis

Wenn Sie ClassWizard verwenden, definiert der Assistent einen enum Wert CRecordView::IDD, gibt ihn in der Klassendeklaration an und verwendet ihn in der Memberinitialisierungsliste für den Konstruktor.

Beispiel

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

}

CRecordView::IsOnFirstRecord

Rufen Sie diese Memberfunktion auf, um zu bestimmen, ob der aktuelle Datensatz der erste Datensatz im Recordsetobjekt ist, das dieser Datensatzansicht zugeordnet ist.

BOOL IsOnFirstRecord();

Rückgabewert

Nonzero, wenn der aktuelle Datensatz der erste Datensatz im Recordset ist; andernfalls 0.

Hinweise

Diese Funktion eignet sich zum Schreiben eigener Implementierungen von Standardbefehlsaktualisierungshandlern, die von ClassWizard geschrieben wurden.

Wenn der Benutzer zum ersten Datensatz wechselt, deaktiviert das Framework alle Benutzeroberflächenobjekte, die Sie für den Wechsel zum ersten oder zum vorherigen Datensatz haben.

CRecordView::IsOnLastRecord

Rufen Sie diese Memberfunktion auf, um zu bestimmen, ob der aktuelle Datensatz der letzte Datensatz im Recordsetobjekt ist, das dieser Datensatzansicht zugeordnet ist.

BOOL IsOnLastRecord();

Rückgabewert

Nonzero, wenn der aktuelle Datensatz der letzte Datensatz im Recordset ist; andernfalls 0.

Hinweise

Diese Funktion eignet sich zum Schreiben eigener Implementierungen der Standardbefehlsaktualisierungshandler, die ClassWizard schreibt, um eine Benutzeroberfläche für den Wechsel von Datensatz zu Datensatz zu unterstützen.

Achtung

Das Ergebnis dieser Funktion ist zuverlässig, mit der Ausnahme, dass die Ansicht das Ende des Recordsets erst erkennen kann, wenn der Benutzer ihn verschoben hat. Der Benutzer muss über den letzten Datensatz hinausgehen, bevor die Datensatzansicht erkennen kann, dass alle Benutzeroberflächenobjekte deaktiviert werden müssen, um zum nächsten oder letzten Datensatz zu wechseln. Wenn der Benutzer über den letzten Datensatz hinaus wechselt und dann zurück zum letzten Datensatz (oder davor) wechselt, kann die Datensatzansicht die Position des Benutzers im Recordset nachverfolgen und Benutzeroberflächenobjekte ordnungsgemäß deaktivieren. IsOnLastRecord ist auch nach einem Aufruf der Implementierungsfunktion OnRecordLastunzuverlässig, die den ID_RECORD_LAST-Befehl behandelt, oder CRecordset::MoveLast.

CRecordView::OnGetRecordset

Gibt einen Zeiger auf das abgeleitete Objekt zurück, das CRecordsetder Datensatzansicht zugeordnet ist.

virtual CRecordset* OnGetRecordset() = 0;

Rückgabewert

Ein Zeiger auf ein CRecordset-abgeleitetes Objekt, wenn das Objekt erfolgreich erstellt wurde; andernfalls ein NULL-Zeiger.

Hinweise

Sie müssen diese Memberfunktion überschreiben, um ein Recordset-Objekt zu erstellen oder abzurufen und einen Zeiger darauf zurückzugeben. Wenn Sie die Datensatzansichtsklasse mit ClassWizard deklarieren, schreibt der Assistent eine Standardüberschreibung für Sie. Die Standardimplementierung von ClassWizard gibt den Recordsetzeiger zurück, der in der Datensatzansicht gespeichert ist, sofern vorhanden. Andernfalls erstellt es ein Recordset-Objekt des Typs, den Sie mit ClassWizard angegeben haben, und ruft dessen Open Memberfunktion auf, um die Tabelle zu öffnen oder die Abfrage auszuführen, und gibt dann einen Zeiger auf das Objekt zurück.

Weitere Informationen und Beispiele finden Sie im Artikel Datensatzansichten: Verwenden einer Datensatzansicht.

CRecordView::OnMove

Rufen Sie diese Memberfunktion auf, um zu einem anderen Datensatz im Recordset zu wechseln, und zeigen Sie die zugehörigen Felder in den Steuerelementen der Datensatzansicht an.

virtual BOOL OnMove(UINT nIDMoveCommand);

Parameter

nIDMoveCommand
Einer der folgenden Standardbefehls-ID-Werte:

  • ID_RECORD_FIRST Zum ersten Datensatz im Recordset wechseln.

  • ID_RECORD_LAST Zum letzten Datensatz im Recordset wechseln.

  • ID_RECORD_NEXT Zum nächsten Datensatz im Recordset wechseln.

  • ID_RECORD_PREV Zum vorherigen Datensatz im Recordset wechseln.

Rückgabewert

Nonzero, wenn die Verschiebung erfolgreich war; andernfalls 0, wenn die Verschiebungsanforderung verweigert wurde.

Hinweise

Die Standardimplementierung ruft die entsprechende Move Memberfunktion des Objekts auf, das CRecordset der Datensatzansicht zugeordnet ist.

Aktualisiert standardmäßig den aktuellen Datensatz in der Datenquelle, OnMove wenn der Benutzer ihn in der Datensatzansicht geändert hat.

Der Anwendungs-Assistent erstellt eine Menüressource mit den Menüelementen "Erster Datensatz", "Letzter Datensatz", "Nächster Datensatz" und "Vorheriger Datensatz". Wenn Sie die Option "Andockbare Symbolleiste" auswählen, erstellt der Anwendungs-Assistent auch eine Symbolleiste mit Schaltflächen, die diesen Befehlen entsprechen.

Wenn Sie den letzten Datensatz im Recordset übergehen, zeigt die Datensatzansicht weiterhin den letzten Datensatz an. Wenn Sie den ersten Datensatz rückwärts durchlaufen, zeigt die Datensatzansicht weiterhin den ersten Datensatz an.

Achtung

Beim Aufrufen OnMove wird eine Ausnahme ausgelöst, wenn das Recordset keine Datensätze enthält. Rufen Sie die entsprechende Updatehandlerfunktion der Benutzeroberfläche – , OnUpdateRecordFirst, OnUpdateRecordLast, OnUpdateRecordNextoder OnUpdateRecordPrev – vor dem entsprechenden Verschiebungsvorgang auf, um zu bestimmen, ob das Recordset Datensätze enthält.

Siehe auch

CFormView-Klasse
Hierarchiediagramm
CRecordset-Klasse
CFormView-Klasse