CDaoRecordset::Open
您必須呼叫此成員函式以取得資料錄集的資料錄。
virtual void Open(
int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
LPCTSTR lpszSQL = NULL,
int nOptions = 0
);
virtual void Open(
CDaoTableDef* pTableDef,
int nOpenType = dbOpenTable,
int nOptions = 0
);
virtual void Open(
CDaoQueryDef* pQueryDef,
int nOpenType = dbOpenDynaset,
int nOptions = 0
);
參數
nOpenType
下列其中一個值:使用雙向捲動的dbOpenDynaset A 動態集類型的資料錄集。 這是預設值。
使用雙向捲動的dbOpenTable A 資料表的資料錄集。
使用雙向捲動的dbOpenSnapshot A 快照集類型資料錄集。
lpszSQL
包含下列其中一個字串的指標:NULL 指標。
一或多個 tabledefs 和 querydefs 的名稱 (以逗號分隔)。
SELECT SQL 陳述式 (選擇性地使用 SQL WHERE 或 ORDERBY 子句)。
Pass-Through Query)。
nOptions
以下列出的一個或多個選項。 預設值為 0。 可能的值如下所示:dbAppendOnly 只能附加新資料錄 (僅限動態集類型的資料錄集)。 這個選項在代表常值記錄可能只附加。 MFC ODBC 資料庫類別具有可讓資料錄擷取和附加一個附加的選項。
dbForwardOnly 資料錄集是一個向前捲動快照。
dbSeeChanges 產生例外狀況,其他使用者變更所編輯的資料。
其他 使用者不能修改或加入資料錄的dbDenyWrite 。
dbDenyRead 其他使用者無法檢視資料錄 (僅限資料表的資料錄集)。
dbReadOnly 就只能檢視記錄,其他使用者可以對其進行修改。
dbInconsistent 不一致的更新 (只允許動態集類型的資料錄集)。
只dbConsistent 一致的更新 (只允許動態集類型的資料錄集)。
注意事項
常數 dbConsistent 和 dbInconsistent 互斥 (Mutually Exclusive)。您可以在 開啟特定執行個體可以使用其中任何一個,,但不能同時指定兩者。
pTableDef
為 CDaoTableDef 物件的指標。 這個版本的資料表) 的資料錄集才有效。 在使用選項時,建構 CDaoRecordset 沒有用的 CDaoDatabase 指標;相反地, tabledef 所使用的資料庫。pQueryDef
為 CDaoQueryDef 物件的指標。 這個版本的動態集和快照集型別類型的資料錄集才有效。 在使用選項時,建構 CDaoRecordset 沒有用的 CDaoDatabase 指標;相反地, querydef 所使用的資料庫。
備註
在呼叫 開啟之前,您必須在建構資料錄集物件。 有幾個方式可做到這點:
當您建構資料錄集物件時,請將指標傳遞給已開啟的 CDaoDatabase 物件。
當您建構資料錄集物件時,請將指標傳遞給沒有開啟的 CDaoDatabase 物件。 當資料錄集物件關閉時,開啟資料錄集物件, CDaoDatabase ,但不會關閉它。
當您建構資料錄集物件時,會 NULL 指標。 資料錄集物件呼叫取得 Microsoft Access .MDB 檔名稱的 GetDefaultDBName 開啟。 只要開啟資料錄集,資料錄集並開啟 CDaoDatabase 物件並保持開啟。 當您呼叫資料錄集時的 關閉 , CDaoDatabase 物件也會關閉。
注意事項
當開啟資料錄集 CDaoDatabase 物件時,會開啟以非獨佔存取的資料來源。
如需使用 lpszSQL 參數 開啟 版本,後,資料錄集開啟您在數種方式來擷取記錄。 第一個選項是在您的 DoFieldExchange的 DFX 函式。 第二個選項是使用動態繫結 GetFieldValue 藉由呼叫成員函式。 這些選項可以實作分別或在組合。 如果它們合併,但在 SQL 陳述式必須將呼叫傳遞給的為 開啟。
當您使用在 CDaoTableDef 物件傳遞 開啟 的第二個版本,產生的資料行可供您透過 DoFieldExchange 和 DFX 機制繫結,和 (或) 傳遞 GetFieldValue動態繫結。
![]() |
---|
使用資料表的資料錄集的一 CDaoTableDef ,物件只能呼叫 開啟 。 |
當您使用在 CDaoQueryDef 物件傳遞 開啟 的第三個版本,該查詢會執行,而且,而且產生的資料行才可供您透過 DoFieldExchange 和 DFX 機制繫結,和 (或) 傳遞 GetFieldValue動態繫結。
![]() |
---|
使用動態集和快照集型別類型的資料錄集的,則 CDaoQueryDef 物件只能呼叫 開啟 。 |
如需使用 lpszSQL 參數 開啟 的第一個版本中,記錄會根據下表中所顯示的標準選取。
lpszSQL 參數的值 |
判斷選取的資料錄 |
範例 |
---|---|---|
NULL |
GetDefaultSQL傳回的字串。 |
|
一或多個 tabledefs 和 querydef 名稱的逗號分隔清單。 |
在 DoFieldExchange表示的任何資料行。 |
"Customer" |
SELECT 資料行清單 FROM 資料表清單。 |
從指定的資料行 |
"SELECT CustId, CustName FROM Customer" |
通常是 NULL 程序傳遞至 開啟;在這種情況下, 開啟 呼叫, GetDefaultSQLClassWizard,會產生建立 CDaoRecordset衍生類別時的可覆寫的成員函式。 這個值。 您可以在 lpszSQL 參數中指定其他資訊。
您所傳遞, 開啟 建構查詢的最後的 SQL 字串 (可能是 SQL 字串 WHERE ,並 ORDERBY 子句附加至 lpszSQL 字串您傳遞) 來執行查詢。 您可以藉由呼叫 GetSQL 檢查建構的字串在呼叫 開啟之後。
您的資料錄集類別的欄位資料成員繫結至選取的資料行。 如果有任何傳回的資料錄,第一筆資料錄會變成目前的資料錄。
如果您想要將資料錄集選項,例如篩選或排序,設定 m_strSort 或 m_strFilter ,在建構資料錄集物件之後,但是,在您呼叫之前 開啟。 如果您想要重新整理資料錄集的資料錄,資料錄集已經開啟後,請呼叫 Requery。
如果您呼叫一個動態集 (Dynaset) 或快照集類型資料錄集的 開啟 ,或者,如果資料來源是指 SQL 陳述式或表示附加之資料表的 tabledef,您不能當做型別引數使用 dbOpenTable ;如果您, MFC 會擲回例外狀況。 若要判斷 tabledef 物件是否代表附加的表格,請建立 CDaoTableDef 物件並且呼叫成員函式。 GetConnect
請使用 dbSeeChanges 旗標,如果要截獲其他使用者或其他程式進行的變更會在您的電腦上,當您在編輯或刪除的資料錄時。 例如,在中,有兩個使用者啟動編輯相同的資料錄, 更新 呼叫成員函式的第一個使用者成功。 當 更新 由第二個使用者 CDaoException 呼叫時,會擲回。 同樣地,如果,第二位使用者嘗試呼叫 刪除 刪除資料錄以及它已變更的第一個使用者, CDaoException 時發生。
通常,如果使用者,取得這個 CDaoException ] 時,更新,您的程式碼應該重新整理欄位的內容和擷取最近修改的值。 如果例外狀況在刪除程序期間發生,您的程式碼可以顯示新資料錄資料給指定的使用者和訊息資料最近變更。 此時,您的程式碼可以要求驗證使用者仍然要刪除資料錄。
提示
使用向前捲動選項 ()dbForwardOnly改善效能,當您的應用程式將資料錄集開啟進行單向由 ODBC 資料來源時。
如需相關資訊,請參閱本主題 OpenRecordset 「方法」DAO 說明。
需求
Header: afxdao.h