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) anstelle der ODBC-Klassen (Open Database Connectivity) 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
CRecordView
Anforderungen
Header: afxdb.h
CRecordView::CRecordView
Wenn Sie ein Objekt eines von einem Typ abgeleiteten CRecordView
Typs 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 DoDataExchange
werden. 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 OnRecordLast
unzuverlässig, die den ID_RECORD_LAST-Befehl behandelt, oder CRecordset::MoveLast
.
CRecordView::OnGetRecordset
Gibt einen Zeiger auf das abgeleitete Objekt zurück, das CRecordset
der 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
, OnUpdateRecordNext
oder 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