CRecordset:: Open

Virtual BOOL Open ( UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, DWORD dwOptions = nessuno );
gettare ( CDBException, CMemoryException );

Valore restituito

Diverso da zero se l'oggetto CRecordset è stato aperto con successo; in caso contrario 0 se CDatabase:: Open (se chiamato) restituisce 0.

Parametri

nOpenType

Accettare il valore predefinito, AFX_DB_USE_DEFAULT_TYPE, o utilizzare uno dei seguenti valori enum OpenType:

lpszSQL

Un puntatore a una stringa contenente uno dei seguenti:

dwOptions

Maschera di bit che è possibile specificare una combinazione dei valori elencati di seguito. Alcuni di questi sono mutualmente esclusivi. Il valore predefinito è none.

Osservazioni

È necessario chiamare questa funzione membro per eseguire la query definita dal recordset. Prima di chiamare Open, è necessario costruire l'oggetto recordset.

Connessione del recordset all'origine dati dipende da come si crea il recordset prima di chiamare Open. Se si passa un oggetto CDatabase al costruttore recordset che non è stato collegato all'origine dati, questa funzione membro utilizza GetDefaultConnect per tentare di aprire l'oggetto di database. Se si passa NULL al costruttore recordset, il costruttore costruisce un oggetto CDatabase per te, e Open tenta di connettersi l'oggetto di database. Per ulteriori informazioni sulla chiusura del recordset e la connessione in queste circostanze diverse, vedere stretta.

&Notanbsp;  Accesso a un'origine dati mediante un oggetto CRecordset è sempre condiviso. A differenza della classe CDaoRecordset , è non è possibile utilizzare un oggetto CRecordset per aprire un'origine dati con accesso esclusivo.

Quando si chiama Open, una query, solitamente un'istruzione SQL SELECT , seleziona record sulla base dei criteri indicati nella tabella seguente.

Valore del parametro lpszSQL Record selezionati sono determinati da Esempio
NULL La stringa restituita da GetDefaultSQL.
Nome della tabella SQL Tutte le colonne della tabella-lista in DoFieldExchange o DoBulkFieldExchange.
 "Cliente"
Nome della query predefinite (stored procedure) Le colonne che della query è definita per restituire.
"{call OverDueAccts}"
Selezionare elenco di colonne dalla tabella-elenco Le colonne specificate dal table(s) specificato.
"Seleziona CustId, CustName dal cliente"

! Avviso   Fare attenzione che non inserire spazi vuoti supplementari nella stringa SQL. Ad esempio, se si inseriscono spazi vuoti tra parentesi graffa e la parola chiave chiamare , MFC interpretano male la stringa SQL come un nome di tabella e incorporarlo in un'istruzione SELECT , che si tradurrà in un'eccezione. Allo stesso modo, se la query predefinita utilizza un parametro di output, non inserire spazi vuoti tra parentesi graffa e il '?' simbolo. Infine, è necessario non inserire spazi bianchi prima la parentesi graffa in un'istruzione CALL o prima della parola chiave selezionate in una dichiarazione di selezionare.

La procedura usuale è di passare NULL all' aperto; in questo caso, Open chiama GetDefaultSQL. Se si utilizza una classe derivata di CRecordset , GetDefualtSQL dà i nomi di tabella specificata nel ClassWizard. È possibile specificare invece altre informazioni nel parametro lpszSQL.

Qualunque cosa si passa, Open costruisce una stringa SQL finale per la query (la stringa potrebbe avere clausole SQL dove e ORDER BY aggiunte alla stringa lpszSQL che è stato passato) e quindi viene eseguita la query. È possibile esaminare la stringa costruita chiamando GetSQL dopo la chiamata aperta. Per ulteriori dettagli su come il recordset costruisce un'istruzione SQL e seleziona il record, vedere l'articolo Recordset: come i recordset selezionare record (ODBC) nel manuale del programmatore di Visual C++.

I membri dati di campo della vostra classe recordset sono associati alle colonne di dati selezionati. Se vengono restituiti tutti i record, il primo record diventa il record corrente.

Se si desidera impostare le opzioni per il recordset, come ad esempio un filtro o un ordinamento, specificare queste dopo che si costruisce l'oggetto recordset, ma prima di chiamare Open. Se si desidera aggiornare il record del recordset, dopo il recordset è già aperto, chiamare Requery.

Per ulteriori informazioni, inclusi ulteriori esempi, vedere gli articoli Recordset ((ODBC)), Recordset: come i recordset selezionare record (ODBC), e Recordset: creazione e chiudendo i recordset (ODBC) nel manuale del programmatore di Visual C++.

Esempio

Gli esempi di codice seguenti mostrano diverse forme di chiamata Open.

/ / rs è un CRecordset o
/ / Derivata da CRecordset oggetto

/ / Open rs utilizzando l'istruzione SQL predefinita,
/ / implementare i segnalibri e spegnere
/ / controllo automatico campo sporca
RS.Apri (CRecordset::snapshot, &NULL,
 nbsp;       CRecordset:: useBookmarks |
         CRecordset::noDirtyFieldCheck);

/ / Pass un'istruzione SELECT completa
/ / e aperta come un dynaset
RS.Aprire (CRecordset::dynaset,
         T ("Seleziona L_Name dal cliente"));

/ / Accettare tutte le impostazioni predefinite
RS.(Aperto)

Pa&noramica CRecordset |nbsp; Membri della classe | Gerarchia Chart

Vedere a&nchenbsp;CRecordset::CRecordset, CRecordset::Close, CRecordset::GetDefaultSQL, CRecordset::GetSQL, CRecordset::m_strFilter, CRecordset::m_strSort, CRecordset:: Requery

Index