CDaoRecordset:: Open

virtuelle void Open (Int nOpenType = AFX_DAO_USE_DEFAULT_TYPE, LPCTSTR LpszSQL = NULL, Int nOptions= 0 );
Werfen Sie (CDaoException, CMemoryException);

virtuelle void Open (CDaoTableDef *pTableDef,Int nOpenType = DbOpenTable, Int nOptions= 0 );
Werfen Sie (CDaoException, CMemoryException);

virtuelle void Open (CDaoQueryDef *pQueryDef,Int nOpenType = DbOpenDynaset, Int nOptions= 0 );
Werfen Sie (CDaoException, CMemoryException);

Parameter

nOpenType

Die folgenden Werte:

lpszSQL

Einen Zeichenfolgenzeiger mit einer der folgenden:

nOptions

Eine oder mehrere der unten aufgeführten Optionen. Der Standardwert ist 0. Mögliche Werte sind wie folgt:

pTableDef

&Nbsp;Ein Zeiger auf ein CDaoTableDef -Objekt. Diese Version ist nur für Recordsets vom Typ Tabelle gültig. Wenn Sie diese Option verwenden, wird der CDaoDatabase -Zeiger verwendet, um die CDaoRecordset erstellen nicht verwendet; Vielmehr wird die Datenbank in die sich der Tabledef befindet verwendet.

pQueryDef

Ein Zeiger auf ein Objekt CDaoQueryDef . Diese Version ist nur für gültig vom Typ Dynaset und Snapshot-Typ Recordsets. Wenn Sie diese Option verwenden, wird der CDaoDatabase -Zeiger verwendet, um die CDaoRecordset erstellen nicht verwendet; Vielmehr wird die Datenbank in die sich der Querydef befindet verwendet.

Bemerkungen

Sie müssen diese Member-Funktion zum Abrufen der Datensätze für das Recordset aufrufen. Bevor Sie aufrufen Öffnen, müssen Sie das Recordset-Objekt erstellen. Es gibt mehrere Möglichkeiten, dies zu tun:

Für die Versio&n Öffnen , die den LpszSQL -Parameter verwendet, nachdem das Recordset geöffnet ist, können Sie Datensätze in eine von mehreren Möglichkeiten abrufen. Die erste Option ist, DFX-Funktionen in Ihrem DoFieldExchangehaben. Die zweite Option ist die Verwendung dynamischen Bindung durch die GetFieldValue -Memberfunktion aufrufen. Diese Optionen können einzeln oder in Kombination durchgeführt. Wenn sie kombiniert werden, müssen Sie in der SQL-Anweisung selbst beim Aufruf von Openübergeben. Weitere Informationen zum dynamischen binden, finden Sie im Artikel DAO-Recordset: Bindung Datensätze dynamisch in Visual C++ Programmer's Guide.nbsp;

Wenn Sie die zweite Version der Open verwenden, wo Sie in einem CDaoTableDef -Objekt übergeben, werden die resultierenden Spalten Sie über DoFieldExchange und der DFX-Mechanismus zu binden, und/oder dynamisch binden über GetFieldValue.

Hinweis&Nbsp;  Sie können nur offen mit ein CDaoTableDef -Objekt für Recordsets vom Typ Tabelle aufrufen.

Wenn Sie die dritte Version der Open wo Sie ein Objekt der CDaoQueryDef übergeben Abfrage wird ausgeführt, und die resultierenden Spalten werden Ihnen zu binden über DoFieldExchange und der DFX-Mechanismus zur Verfügung, bzw. über GetFieldValue dynamisch binden verwenden.

Hinweis&Nbsp;  Sie können nur offen mit einem CDaoQueryDef -Objekt vom Typ Dynaset und Snapshot-Typ Recordsets aufrufen.

Für die erste Version geöffnet , die den LpszSQL -Parameter verwendet, werden Datensätze ausgewählt basierend auf Kriterien in der folgenden Tabelle gezeigt.

Der Wert der LpszSQL -parameter Datensätze ausgewählt werden durch bestimmt. Beispiel
NULL Die von GetDefaultSQL zurückgegebene Zeichenfolge.
Eine durch Kommas getrennte Liste von einem oder mehreren Tabledefs und/oder Querydef-Namen. Alle Spalten in der DoFieldExchange vertreten.
"Kunde"
Wählen Sie Spaltenliste FROM Tabelle-Liste Die angegebenen Spalten der angegebenen Tabledef(s) oder querydef(s).
"Wählen SIE CustId, Kundenname
VOM Kunden"

Die übliche Vorgehensweise ist NULL an Openübergeben; in diesem Fall Open ruft GetDefaultSQL, eine überschreibbare Member-Funktion, die Klassen-Assistent beim Erstellen einer CDaoRecordset generiert-Klasse abgeleitet. Dieser Wert gibt die Tabledef(s) und/oder Querydef-Namen, die Sie im Klassen-Assistenten angegeben. Sie können stattdessen andere Informationen im LpszSQL -Parameter angeben.

Was auch immer Sie übergeben, offene konstruiert eine letzte SQL-Zeichenfolge für die Abfrage (die Zeichenfolge kann SQL wo und ORDER BY -Klauseln angehängt der LpszSQL -Zeichenfolge, die Sie übergeben haben) und dann führt die Abfrage. Sie können die erstellte Zeichenfolge überprüfen, durch Aufrufen von GetSQL nach dem Aufruf von Open.

Die Felddatenmember der Recordset-Klasse sind die Spalten der ausgewählten Daten gebunden. Wenn keine Datensätze zurückgegeben werden, wird der erste Datensatz der aktuelle Datensatz.

Wenn Sie, legen Sie Optionen für Recordsets, z. B. Filtern oder sortieren möchten, Set M_strSort oder M_strFilter nachdem Sie das Recordset-Objekt erstellen, aber bevor Sie aufrufen Öffnen. Möchten Sie die Datensätze im Recordset zu aktualisieren, nachdem das Recordset bereits geöffnet ist, rufen Sie Requery.

Wenn Sie auf ein Recordset vom Typ Dynaset oder Snapshot-Recordset vom Typ Open aufrufen, oder wenn die Datenquelle verweist auf eine SQL-Anweisung oder eine Tabledef, die eine verknüpfte Tabelle darstellt, können Sie DbOpenTable für das Type-Argument nicht verwenden; Falls du dies tust, auslöst MFC eine Ausnahme. Um festzustellen, ob ein Tabledef-Objekt eine verknüpfte Tabelle darstellt, erstellen Sie ein CDaoTableDef -Objekt und rufen Sie die Memberfunktion GetConnect.

Verwenden Sie das DbSeeChanges -Flag, wenn Sie Änderungen von einem anderen Benutzer oder einem anderen Programm auf Ihrem Computer, wenn Sie bearbeiten oder Löschen von denselben Datensatz zu fangen wollen. Zum Beispiel, wenn zwei Benutzer denselben Datensatz Bearbeitung beginnen, gelingt der erste Benutzer auf die Update -Memberfunktion aufrufen. Wenn der zweite Benutzer Update aufgerufen wird, wird ein CDaoException ausgelöst. Ebenso, wenn der zweite Benutzer versucht, rufen Sie zum Löschen des Eintrags Löschen , und es bereits vom ersten Benutzer geändert wurde, tritt eine CDaoException.

In der Regel bekommt der Benutzer während der Aktualisierung dieses CDaoException , sollten Code aktualisiert den Inhalt der Felder und die neu geänderte Werte abzurufen. Auftreten die Ausnahme an löschen, könnte Code die neuen Daten für den Benutzer und mitteilt, angezeigt, die die Daten vor kurzem geändert hat. Zu diesem Zeitpunkt kann Ihr Code eine Bestätigung anfordern, dass der Benutzer noch den Datensatz löschen möchte.

Tipp Bildlauf verwenden die vorwärts-Option (DbForwardOnly), um Leistung zu verbessern, wenn Ihre Anwendung ein Durchgang durch ein Recordset geöffnet von einer ODBC-Datenquelle.

Weitere Informationen über Recordsets öffnen, finden Sie in die Artikeln DAO-Recordset: Erstellen von Recordsets und DAO: erstellen, öffnen und Schließen von DAO-Objekten im Visual C++ Programmer's Guide. Weitere Informationen finden Sie im Thema "OpenRecordset-Methode" in der DAO-Hilfe.

CDaoRecordset ÜbersichtMember der Klasse | Hierarchiediagramm

Siehe auch&Nbsp;CDaoRecordset::Close, CDaoRecordset::CDaoRecordset

Index