CRecordset:: Open

virtuelleBOOLOpen (UINTnOpenType=AFX_DB_USE_DEFAULT_TYPE,LPCTSTRLpszSQL=NULL,DWORDDwOptions=keine);
werfen ( CDBException, CMemoryException );

Rückgabewert

Ungleich NULL, wenn das CRecordset -Objekt erfolgreich geöffnet wurde; Wenn CDatabase:: Open aufrufen (wenn genannt) gibt 0 zurück, andernfalls 0.

Parameter

nOpenType

Übernehmen Sie den Standardwert, AFX_DB_USE_DEFAULT_TYPE, oder verwenden Sie eine der folgenden Werte aus der Enumeration OpenType:

lpszSQL

Einen Zeichenfolgenzeiger mit einer der folgenden:

dwOptions

Eine Bitmaske, die eine Kombination aus der unten aufgeführten Werte angeben kann. Einige von diesen schließen sich gegenseitig aus. Der Standardwert ist none.

Bemerkungen

Sie müssen diese zum Ausführen der Abfrage definiert durch das Recordset-Memberfunktion aufrufen. Bevor Sie aufrufen Öffnen, müssen Sie das Recordset-Objekt erstellen.

Dieses Recordset Verbindung zu der Datenquelle hängt davon ab, wie Sie das Recordset erstellen, bevor Sie aufrufen Öffnen. Wenn Sie ein CDatabase -Objekt an dem Recordset-Konstruktor, die nicht mit der Datenquelle verbunden wurde übergeben, verwendet dieser Member-Funktion versucht, öffnen Sie das Datenbankobjekt GetDefaultConnect . Wenn Sie NULL an den Recordset-Konstruktor übergeben wird, der Konstruktor erstellt ein CDatabase -Objekt für Sie, und Öffnen versucht das Database-Objekt herzustellen. Details über das Schließen des Recordsets und die Verbindung unter diesen unterschiedlichen Umständen finden Sie unter Schließen.

Hinweis&Nbsp;  Zugriff auf eine Datenquelle über ein CRecordset -Objekt wird immer geteilt. Im Gegensatz zu der CDaoRecordset -Klasse können ein CRecordset -Objekt Sie eine Datenquelle mit exklusivem Zugriff öffnen.

Beim Aufruf von Openwählt eine Abfrage, in der Regel eine SQL Wählen Sie Anweisung Datensätze 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.
Name der SQL-Tabelle Alle Spalten der Tabelle-Liste in der DoFieldExchange-Memberfunktion oder der DoBulkFieldExchange.
 "Kunde"
Vordefinierte Abfragename (gespeicherte Prozedur) Die Spalten, die die Abfrage definiert ist, um zurückzugeben.
"{call OverDueAccts}"
Wählen Sie Spaltenliste FROM Tabelle-Liste Die angegebenen Spalten aus den angegebenen Tabellen.
"Wählen SIE CustId, CustName Kunden"

! Warnung&Nbsp;  Achten Sie darauf, dass Sie nicht in der SQL-Zeichenfolge zusätzliche Leerzeichen einfügen. Beispielsweise wenn Sie Leerzeichen zwischen der geschweiften Klammer und dem CALL -Schlüsselwort einfügen, wird MFC fälschlicherweise die SQL-Zeichenfolge als Tabellenname und integrieren es in einer SELECT -Anweisung, die eine Ausnahme führen wird. Ebenso, wenn die vordefinierte Abfrage einen Output-Parameter verwendet, fügen Sie keine Leerzeichen zwischen die geschweiften Klammern und die '?' Symbol. Schließlich müssen Sie keine Leerzeichen vor der geschweiften Klammer in einer CALL -Anweisung oder vor dem Wählen Sie Schlüsselwort in einem SELECT -Statement einfügen.

Die übliche Vorgehensweise ist NULL an Openübergeben; in diesem Fall ruft Open GetDefaultSQL. Wenn Sie eine von CRecordset abgeleitete Klasse verwenden, gibt GetDefualtSQL die Tabelle 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 an die LpszSQL -Zeichenfolge, die Sie übergeben angehängt haben) und dann führt die Abfrage. Sie können die erstellte Zeichenfolge durch Aufrufen von GetSQL nach dem Aufruf von Openuntersuchen. Weitere Informationen darüber, wie das Recordset generiert eine SQL-Anweisung wählt Datensätze aus, finden Sie im Artikel Recordset: Datensätze durch Recordsets (ODBC) im Visual C++ Programmer's Guide.

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, geben Sie diese, nachdem Sie das Recordset-Objekt erstellen, aber vor dem Aufruf von Open. Möchten Sie die Datensätze im Recordset zu aktualisieren, nachdem das Recordset bereits geöffnet ist, rufen Sie Requery.

Für weitere Informationen, einschließlich weitere Beispiele finden Sie in die Artikeln Recordset ((ODBC)), Recordset: Datensätze durch Recordsets (ODBC), und Recordset: Erstellen und Schließen von Recordsets (ODBC) im Visual C++ Programmer's Guide.

Beispiel

Die folgenden Codebeispiele zeigen verschiedene Formen der offenen Aufforderung.

/ / Rs ist ein CRecordset oder
/ / CRecordset-abgeleitete Objekt

/ / Offene Rs mit die Standard-SQL-Anweisung
/ / Lesezeichen zu implementieren, und schalten Sie
/ / Überprüfung der automatische dirty-Feld
Rs.Öffnen (CRecordset::snapshot, &NULL,
 Nbsp;       CRecordset::useBookmarks |
         CRecordset::noDirtyFieldCheck);

/ / Eine vollständige SELECT-Anweisung übergeben
/ / und als ein Dynaset geöffnet
Rs.Öffnen Sie (Open,
         _T ("wählen Sie L_Name Kunden"));

/ / Akzeptieren Sie alle Standardeinstellungen
Rs.(Offen)

CRecordset ÜbersichtMember der Klasse | Hierarchiediagramm

Siehe auch&Nbsp;CRecordset::CRecordset, CRecordset::Close, CRecordset::GetDefaultSQL, CRecordset::GetSQL, CRecordset::m_strFilter, CRecordset::m_strSort, CRecordset:: Requery

Index