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:
Hinweis&Nbsp; Die Konstanten DbConsistent und DbInconsistent schließen sich gegenseitig aus. Können Sie eine oder die andere, aber nicht beide in einer bestimmten Instanz des Open.
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:
Hinweis&Nbsp; Wenn das Recordset das CDaoDatabase -Objekt geöffnet wird, öffnet es die Datenquelle mit nicht exklusiven Zugriff.
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. |
|
| Wählen Sie Spaltenliste FROM Tabelle-Liste | Die angegebenen Spalten der angegebenen Tabledef(s) oder querydef(s). |
|
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 Übersicht | Member der Klasse | Hierarchiediagramm
Siehe auch&Nbsp;CDaoRecordset::Close, CDaoRecordset::CDaoRecordset