共用方式為


CDaoQueryDef 類別

表示查詢定義 (或 "querydef"),通常是儲存在資料庫中的定義。

注意

透過 Office 2013 支援資料存取物件 (DAO)。 DAO 3.6 是最終版本,而且已經過時。

語法

class CDaoQueryDef : public CObject

成員

公用建構函式

名稱 描述
CDaoQueryDef::CDaoQueryDef 建構 CDaoQueryDef 物件。 下一次呼叫 OpenCreate,視您的需求而定。

公用方法

名稱 描述
CDaoQueryDef::Append 將 querydef 附加至資料庫的 QueryDefs 集合作為已儲存的查詢。
CDaoQueryDef::CanUpdate 如果查詢可以更新資料庫,則傳回非零。
CDaoQueryDef::Close 關閉 querydef 物件。 完成時,終結C++物件。
CDaoQueryDef::Create 建立基礎 DAO querydef 物件。 使用 querydef 做為暫存查詢,或呼叫 Append 將它儲存在資料庫中。
CDaoQueryDef::Execute 執行 querydef 物件所定義的查詢。
CDaoQueryDef::GetConnect 傳回與 querydef 相關聯的 連接字串。 連接字串 會識別數據源。 (僅適用於 SQL 傳遞查詢,否則為空字串。
CDaoQueryDef::GetDateCreated 傳回已儲存查詢建立的日期。
CDaoQueryDef::GetDateLastUpdated 傳回上次更新儲存查詢的日期。
CDaoQueryDef::GetFieldCount 傳回 querydef 所定義的欄位數目。
CDaoQueryDef::GetFieldInfo 傳回查詢中定義之指定欄位的相關信息。
CDaoQueryDef::GetName 傳回 querydef 的名稱。
CDaoQueryDef::GetODBCTimeout 當執行 querydef 時,會傳回 ODBC 所使用的逾時值,這個值會決定允許查詢的動作完成多久。
CDaoQueryDef::GetParameterCount 傳回為查詢定義的參數數目。
CDaoQueryDef::GetParameterInfo 將指定參數的相關信息傳回查詢。
CDaoQueryDef::GetParamValue 將指定參數的值傳回查詢。
CDaoQueryDef::GetRecordsAffected 傳回動作查詢所影響的記錄數目。
CDaoQueryDef::GetReturnsRecords 如果 querydef 所定義的查詢傳回記錄,則傳回非零。
CDaoQueryDef::GetSQL 傳回 SQL 字串,指定 querydef 所定義的查詢。
CDaoQueryDef::GetType 傳回查詢類型:delete、update、append、make-table 等等。
CDaoQueryDef::IsOpen 如果 querydef 已開啟且可執行,則傳回非零。
CDaoQueryDef::Open 開啟儲存在資料庫 QueryDefs 集合中的現有 querydef。
CDaoQueryDef::SetConnect 設定 ODBC 數據源上 SQL 傳遞查詢的 連接字串。
CDaoQueryDef::SetName 設定已儲存查詢的名稱,取代建立 querydef 時所使用的名稱。
CDaoQueryDef::SetODBCTimeout 設定執行 querydef 時,ODBC 所使用的逾時值(用於 ODBC 查詢)。
CDaoQueryDef::SetParamValue 將指定參數的值設定為查詢。
CDaoQueryDef::SetReturnsRecords 指定 querydef 是否傳回記錄。 將此屬性設定為TRUE 僅適用於 SQL 傳遞查詢。
CDaoQueryDef::SetSQL 設定 SQL 字串,指定 querydef 所定義的查詢。

公用資料成員

名稱 描述
CDaoQueryDef::m_pDAOQueryDef 基礎 DAO querydef 物件的 OLE 介面指標。
CDaoQueryDef::m_pDatabase 與 querydef 相關聯之 CDaoDatabase 物件的指標。 querydef 可能儲存在資料庫中。

備註

querydef 是數據存取物件,其中包含描述查詢的 SQL 語句及其屬性,例如「建立日期」和「ODBC 逾時」。您也可以建立暫存的 querydef 物件,而不儲存它們,但方便且更有效率地儲存資料庫中常用的查詢。 CDaoDatabase 物件會維護名為 QueryDefs 集合的集合,其中包含其已儲存的 querydefs。

注意

DAO 資料庫類別與以 Open Database Connectivity (ODBC) 為基礎的 Microsoft Foundation Class (MFC) 資料庫類別不同。 所有 DAO 資料庫類別名稱都有 「CDao」 前置詞。 您仍然可以使用 DAO 類別存取 ODBC 資料來源。 一般而言,以 DAO 為基礎的 MFC 類別比以 ODBC 為基礎的 MFC 類別更有能力;DAO 型類別可以透過自己的資料庫引擎存取數據,包括透過 ODBC 驅動程式。 DAO 型類別也支援資料定義語言 (DDL) 作業,例如透過類別新增數據表,而不需要直接呼叫 DAO。

使用方式

使用 querydef 物件來處理現有的已儲存查詢,或建立新的已儲存查詢或暫存查詢:

  1. 在所有情況下,請先建構 CDaoQueryDef 物件,並提供查詢所屬 CDaoDatabase 物件的指標

  2. 然後根據您要的內容執行下列動作:

    • 若要使用現有的已儲存查詢,請呼叫 querydef 物件的 Open 成員函式,並提供已儲存查詢的名稱。

    • 若要建立新的已儲存查詢,請呼叫 querydef 物件的 Create 成員函式,並提供查詢的名稱。 然後呼叫 Append 以儲存查詢,方法是將它附加至資料庫的 QueryDefs 集合。 Create 會將 querydef 置於開啟狀態,因此在呼叫 Create 之後,您不會呼叫 Open

    • 若要建立暫時的 querydef,請呼叫 Create。 傳遞查詢名稱的空字串。 請勿呼叫 Append

當您完成使用 querydef 物件時,請呼叫其 Close 成員函式,然後終結 querydef 物件。

提示

若要建立已儲存的查詢,最簡單的方式是使用 Microsoft Access 建立查詢,並將其儲存在資料庫中。 然後,您可以在 MFC 程式代碼中開啟並使用它們。

用途

您可以針對下列任何目的使用 querydef 物件:

  • 若要建立 CDaoRecordset 物件

  • 若要呼叫對象的 Execute 成員函式,以直接執行動作查詢或 SQL 傳遞查詢

您可以針對任何類型的查詢使用 querydef 物件,包括 select、action、crosstab、delete、update、append、make-table、data definition、SQL 傳遞、聯集和大量查詢。 您提供的 SQL 語句內容會決定查詢的類型。 如需查詢類型的相關信息,請參閱 ExecuteGetType 成員函式。 記錄集通常用於資料列傳回查詢,通常是使用 SELECT ...FROM 關鍵詞。 Execute 最常用於大量作業。 如需詳細資訊,請參閱 ExecuteCDaoRecordset

Querydefs 和 Recordsets

若要使用 querydef 物件來建立 CDaoRecordset 物件,您通常會建立或開啟 querydef,如先前所述。 然後建構記錄集物件,當您呼叫 CDaoRecordset::Open時,將指標傳遞至 querydef 物件。 您傳遞的 querydef 必須處於開啟狀態。 如需詳細資訊,請參閱 CDaoRecordset 類別。

除非查詢處於開啟狀態,否則您無法使用 querydef 來建立記錄集(最常見的 querydef 用法)。 藉由呼叫 OpenCreate,將 querydef 放入開啟狀態。

外部資料庫

Querydef 對像是使用外部資料庫引擎原生 SQL 方言的慣用方式。 例如,您可以建立 Transact SQL 查詢(如在 Microsoft SQL Server 上使用),並將其儲存在 querydef 物件中。 當您需要使用不是以 Microsoft Jet 資料庫引擎為基礎的 SQL 查詢時,您必須提供指向外部數據源的 連接字串。 具有有效 連接字串 的查詢會略過資料庫引擎,並將查詢直接傳遞至外部資料庫伺服器進行處理。

提示

使用 ODBC 資料表的慣用方式是將它們附加至 Microsoft Jet (。MDB) 資料庫。

如需相關信息,請參閱 DAO SDK 中的「QueryDef 物件」、「QueryDefs 集合」和「CdbDatabase 物件」主題。

繼承階層架構

CObject

CDaoQueryDef

需求

標頭: afxdao.h

CDaoQueryDef::Append

呼叫 Create 之後呼叫這個成員函式,以建立新的 querydef 物件。

virtual void Append();

備註

Append 藉由將 物件附加至資料庫的 QueryDefs 集合,將 querydef 儲存在資料庫中。 您可以使用 querydef 做為暫存物件,而不附加它,但如果您要儲存查詢,則必須呼叫 Append

如果您嘗試附加暫存 querydef 物件,MFC 會擲回 CDaoException 類型的 例外狀況

CDaoQueryDef::CanUpdate

呼叫此成員函式來判斷您是否可以修改 querydef,例如變更其名稱或 SQL 字串。

BOOL CanUpdate();

傳回值

如果您可以修改 querydef,則為非零;否則為 0。

備註

如果下列狀況,您可以修改 querydef:

  • 它不是以開啟唯讀的資料庫為基礎。

  • 您有資料庫的更新許可權。

    這取決於您是否實作安全性功能。 MFC 不提供安全性支援;您必須直接呼叫 DAO 或使用 Microsoft Access 來實作它。 請參閱 DAO 說明中的「許可權屬性」主題。

CDaoQueryDef::CDaoQueryDef

建構 CDaoQueryDef 物件。

CDaoQueryDef(CDaoDatabase* pDatabase);

參數

pDatabase
開啟 之 CDaoDatabase 物件的指標。

備註

物件可以代表儲存在資料庫的 QueryDefs 集合中的現有 querydef、要儲存在集合中的新查詢,或暫存查詢,而不是儲存。 下一個步驟取決於 querydef 的類型:

  • 如果物件代表現有的 querydef,請呼叫物件的 Open 成員函式來初始化它。

  • 如果物件代表要儲存的新 querydef,請呼叫物件的 Create 成員函式。 這會將 物件新增至資料庫的 QueryDefs 集合。 然後呼叫 CDaoQueryDef 成員函式來設定物件的屬性。 最後,呼叫 Append

  • 如果物件代表暫存 querydef(不要儲存在資料庫中),請呼叫 Create,並傳遞查詢名稱的空字串。 呼叫 Create之後,直接設定其屬性,以初始化 querydef。 請勿呼叫 Append

若要設定 querydef 的屬性,您可以使用 SetName、SetSQL、SetConnectSetODBCTimeoutSetReturnsRecords 成員函式。

當您完成 querydef 物件時,請呼叫其 Close 成員函式。 如果您有 querydef 的指標,請使用 delete 運算符終結C++物件。

CDaoQueryDef::Close

當您完成使用 querydef 物件時,請呼叫這個成員函式。

virtual void Close();

備註

關閉 querydef 會釋放基礎 DAO 物件,但不會終結已儲存的 DAO querydef 物件或C++ CDaoQueryDef 物件。 這與 CDaoDatabase::D eleteQueryDef 不同 ,這會從 DAO 中資料庫的 QueryDefs 集合中刪除 querydef(如果不是暫時的 querydef)。

CDaoQueryDef::Create

呼叫這個成員函式,以建立新的已儲存的查詢或新的暫存查詢。

virtual void Create(
    LPCTSTR lpszName = NULL,
    LPCTSTR lpszSQL = NULL);

參數

lpszName
儲存在資料庫中之查詢的唯一名稱。 如需字串的詳細資訊,請參閱 DAO 說明中的主題。 如果您接受預設值,則會建立空字串,並建立暫時的querydef。 這類查詢不會儲存在QueryDefs集合中。

lpszSQL
定義查詢的 SQL 字串。 如果您接受 NULL 的預設值,您稍後必須呼叫 SetSQL 來設定字串。 在那之前,查詢是未定義的。 不過,您可以使用未定義的查詢來開啟記錄集;如需詳細資訊,請參閱。 必須先定義 SQL 語句,才能將 querydef 附加至 QueryDefs 集合。

備註

如果您在 lpszName傳遞名稱,則可以呼叫 Append,將 querydef 儲存在資料庫的 QueryDefs 集合中。 否則,對像是暫時的querydef,而且不會儲存。 在任一情況下,querydef 處於開啟狀態,而且您可以使用它來建立 CDaoRecordset 物件,或呼叫 querydef 的 Execute 成員函式。

如果您未在 lpszSQL提供 SQL 語句,則無法使用 來執行查詢Execute,但可以使用它來建立記錄集。 在此情況下,MFC 會使用記錄集的預設 SQL 語句。

CDaoQueryDef::Execute

呼叫這個成員函式來執行 querydef 物件所定義的查詢。

virtual void Execute(int nOptions = dbFailOnError);

參數

nOptions
決定查詢特性的整數。 如需相關信息,請參閱 DAO 說明中的「執行方法」主題。 您可以使用位 OR 運算子 (|) 來結合這個自變數的下列常數:

  • dbDenyWrite 拒絕其他使用者的寫入許可權。

  • dbInconsistent 更新不一致。

  • dbConsistent 一致的更新。

  • dbSQLPassThrough SQL 傳遞。 導致 SQL 語句傳遞至 ODBC 資料庫進行處理。

  • dbFailOnError 預設值。 如果發生錯誤並將錯誤回報給使用者,請回復更新。

  • dbSeeChanges 如果其他使用者正在變更您要編輯的數據,則產生運行時錯誤。

注意

如需「不一致」和「一致」一詞的說明,請參閱 DAO 說明中的「執行方法」主題。

備註

以這種方式執行所使用的 Querydef 物件只能代表下列其中一個查詢類型:

  • 動作查詢

  • SQL 傳遞查詢

Execute 不適用於傳回記錄的查詢,例如選取查詢。 Execute 通常用於大量作業查詢,例如 UPDATEINSERTSECT INTO,或用於資料定義語言 (DDL) 作業。

提示

使用 ODBC 數據源的慣用方法是將數據表附加至 Microsoft Jet (。MDB) 資料庫。 如需詳細資訊,請參閱 DAO 說明中的<使用 DAO 存取外部資料庫>主題。

呼叫 querydef 物件的 GetRecordsAffected 成員函式,以判斷受最近Execute呼叫影響的記錄數目。 例如, GetRecordsAffected 傳回執行動作查詢時已刪除、更新或插入之記錄數目的相關信息。 當串聯更新或刪除生效時,傳回的計數不會反映相關數據表中的變更。

如果您同時 dbInconsistent 包含和 或 dbConsistent ,則結果為預設值 , dbInconsistent

Execute 不會傳回記錄集。 在 Execute 選取記錄的查詢上使用會導致 MFC 擲回 CDaoException 類型的 例外狀況

CDaoQueryDef::GetConnect

呼叫此成員函式,以取得與 querydef 數據源相關聯的 連接字串。

CString GetConnect();

傳回值

CString包含 querydef 的 連接字串。

備註

此函式只能與 ODBC 數據源和特定 ISAM 驅動程式搭配使用。 它不會與 Microsoft Jet (.MDB) 資料庫搭配使用;在此情況下,會 GetConnect 傳回空字串。 如需詳細資訊,請參閱SetConnect

提示

使用 ODBC 資料表的慣用方式是將它們附加至 。MDB 資料庫。 如需詳細資訊,請參閱 DAO 說明中的<使用 DAO 存取外部資料庫>主題。

如需 連接字串 的相關信息,請參閱 DAO 說明中的主題。

CDaoQueryDef::GetDateCreated

呼叫此成員函式以取得建立 querydef 物件的日期。

COleDateTime GetDateCreated();

傳回值

COleDateTime 物件,其中包含建立 querydef 的日期和時間。

備註

如需相關信息,請參閱 DAO 說明中的「DateCreated、LastUpdated 屬性」主題。

CDaoQueryDef::GetDateLastUpdated

呼叫這個成員函式以取得 querydef 物件上次更新的日期,當其任何屬性變更時,例如其名稱、SQL 字串或其 連接字串。

COleDateTime GetDateLastUpdated();

傳回值

COleDateTime物件,包含上次更新 querydef 的日期和時間。

備註

如需相關信息,請參閱 DAO 說明中的「DateCreated、LastUpdated 屬性」主題。

CDaoQueryDef::GetFieldCount

呼叫這個成員函式以擷取查詢中的欄位數目。

short GetFieldCount();

傳回值

查詢中定義的欄位數目。

備註

GetFieldCount 對於在 querydef 中循環處理所有欄位很有用。 針對該目的,請搭配 GetFieldInfo使用 GetFieldCount

CDaoQueryDef::GetFieldInfo

呼叫這個成員函式,以取得 querydef 中定義之欄位的各種資訊。

void GetFieldInfo(
    int nIndex,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetFieldInfo(
    LPCTSTR lpszName,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

參數

nIndex
querydef 的 Fields 集合中所需欄位之以零起始的索引,可依索引查閱。

fieldinfo
傳回所要求資訊的 對象參考 CDaoFieldInfo

dwInfoOptions
指定要擷取之欄位相關信息的選項。 可用的選項會列在這裡,以及導致函式傳回的原因:

  • AFX_DAO_PRIMARY_INFO (預設值) 名稱、類型、大小、屬性

  • AFX_DAO_SECONDARY_INFO主要資訊加上:序數位置、必要、允許零長度、來源欄位、外部名稱、源數據表、定序順序

  • AFX_DAO_ALL_INFO主要和次要資訊加上:預設值、驗證文字、驗證規則

lpszName
字串,包含所需欄位的名稱,以便依名稱查閱。 您可以使用 CString

備註

如需 fieldinfo傳回之資訊的描述,請參閱 CDaoFieldInfo 結構。 此結構的成員對應至上述 dwInfoOptions 底下的描述性資訊。 如果您要求一個層級的資訊,您也會取得任何先前層級的資訊。

CDaoQueryDef::GetName

呼叫這個成員函式,以擷取 querydef 所表示的查詢名稱。

CString GetName();

傳回值

查詢的名稱。

備註

Querydef 名稱是唯一的用戶定義名稱。 如需 querydef 名稱的詳細資訊,請參閱 DAO 說明中的「名稱屬性」主題。

CDaoQueryDef::GetODBCTimeout

呼叫這個成員函式,在 ODBC 數據源的查詢逾時之前擷取目前的時間限制。

short GetODBCTimeout();

傳回值

查詢逾時之前的秒數。

備註

如需此時間限制的相關信息,請參閱 DAO 說明中的主題。

提示

使用 ODBC 資料表的慣用方式是將它們附加至 Microsoft Jet (。MDB) 資料庫。 如需詳細資訊,請參閱 DAO 說明中的<使用 DAO 存取外部資料庫>主題。

CDaoQueryDef::GetParameterCount

呼叫這個成員函式,以擷取已儲存查詢中的參數數目。

short GetParameterCount();

傳回值

查詢中定義的參數數目。

備註

GetParameterCount 對於在 querydef 中循環處理所有參數很有用。 針對該目的,請搭配 GetParameterInfo使用 GetParameterCount

如需相關信息,請參閱 DAO 說明中的「參數物件」、「參數集合」和「PARAMETERS 宣告」主題。

CDaoQueryDef::GetParameterInfo

呼叫這個成員函式,以取得 querydef 中定義之參數的相關信息。

void GetParameterInfo(
    int nIndex,
    CDaoParameterInfo& paraminfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetParameterInfo(
    LPCTSTR lpszName,
    CDaoParameterInfo& paraminfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

參數

nIndex
querydef 之 Parameters 集合中所需參數之以零起始的索引,可依索引查閱。

paraminfo
傳回所要求資訊的 CDaoParameterInfo 對象的參考

dwInfoOptions
指定要擷取之參數相關信息的選項。 可用的選項會列在這裡,以及它導致函式傳回的原因:

  • AFX_DAO_PRIMARY_INFO (預設值)名稱、類型

lpszName
字串,包含所需參數的名稱,以依名稱查閱。 您可以使用 CString

備註

如需 中 paraminfo傳回之資訊的描述,請參閱 CDaoParameterInfo 結構。 此結構具有對應至上述描述性信息 dwInfoOptions 的成員。

如需相關信息,請參閱 DAO 說明中的主題。

CDaoQueryDef::GetParamValue

呼叫這個成員函式,以擷取儲存在querydef之Parameters集合中之指定參數的目前值。

virtual COleVariant GetParamValue(LPCTSTR lpszName);
virtual COleVariant GetParamValue(int nIndex);

參數

lpszName
要依名稱查閱其值的參數名稱。

nIndex
querydef 之 Parameters 集合中參數以零起始的索引,可依索引查閱。 您可以使用對 GetParameterCountGetParameterInfo 的呼叫來取得此值。

傳回值

COleVariant 類別的物件,其中包含參數的值。

備註

您可以依名稱或集合中的序數位置來存取參數。

如需相關信息,請參閱 DAO 說明中的主題。

CDaoQueryDef::GetRecordsAffected

呼叫這個成員函式,以判斷最後一次呼叫 Execute會影響多少筆記錄。

long GetRecordsAffected();

傳回值

受影響的記錄數目。

備註

當串聯更新或刪除生效時,傳回的計數不會反映相關數據表中的變更。

如需相關信息,請參閱 DAO 說明中的「RecordsAffected 屬性」主題。

CDaoQueryDef::GetReturnsRecords

呼叫這個成員函式,以判斷 querydef 是否以傳回記錄的查詢為基礎。

BOOL GetReturnsRecords();

傳回值

如果 querydef 是以傳回記錄的查詢為基礎,則為非零;否則為 0。

備註

此成員函式僅用於 SQL 傳遞查詢。 如需 SQL 查詢的詳細資訊,請參閱 Execute 成員函式。 如需使用 SQL 傳遞查詢的詳細資訊,請參閱 SetReturnsRecords 成員函式。

如需相關信息,請參閱 DAO 說明中的主題。

CDaoQueryDef::GetSQL

呼叫這個成員函式來擷取 SQL 語句,以定義 querydef 所依據的查詢。

CString GetSQL();

傳回值

定義 querydef 所依據之查詢的 SQL 語句。

備註

您可以剖析關鍵字、資料表名稱等的字串。

如需相關信息,請參閱 DAO 說明中的和<使用 SQL in Code 查詢資料庫>主題。

CDaoQueryDef::GetType

呼叫這個成員函式來判斷 querydef 的查詢類型。

short GetType();

傳回值

querydef 所定義的查詢類型。 如需值,請參閱。

備註

當您建立 querydef 或呼叫現有的 querydef 的 SetSQL 成員函式時,查詢類型是由您在 querydef 的 SQL 字串中指定的專案所設定。 此函式傳回的查詢類型可以是下列其中一個值:

  • dbQSelect 選擇

  • dbQAction 動作

  • dbQCrosstab Crosstab

  • dbQDelete 刪除

  • dbQUpdate 更新

  • dbQAppend 附加

  • dbQMakeTable Make-table

  • dbQDDL 數據定義

  • dbQSQLPassThrough 傳遞

  • dbQSetOperation 聯盟

  • dbQSPTBulkdbQSQLPassThrough搭配 使用 來指定不會傳回記錄的查詢。

注意

若要建立 SQL 傳遞查詢,請勿設定 dbSQLPassThrough 常數。 當您建立 querydef 物件並設定 連接字串 時,Microsoft Jet 資料庫引擎會自動設定。

如需 SQL 字串的相關信息,請參閱 GetSQL。 如需查詢類型的相關信息,請參閱 執行

CDaoQueryDef::IsOpen

呼叫這個成員函式,以判斷物件目前是否 CDaoQueryDef 開啟。

BOOL IsOpen() const;

傳回值

如果物件目前開啟,則為 CDaoQueryDef 非零,否則為 0。

備註

querydef 必須處於開啟狀態,才能使用它來呼叫 Execute 或 建立 CDaoRecordset 物件。 若要將 querydef 放入開啟狀態,請呼叫 Create (針對新的 querydef) 或 Open (針對現有的 querydef)。

CDaoQueryDef::m_pDatabase

包含與 querydef 對象相關聯的 CDaoDatabase 物件的指標

備註

如果您需要直接存取資料庫,請使用此指標。 例如,若要取得資料庫集合中其他 querydef 或 recordset 物件的指標。

CDaoQueryDef::m_pDAOQueryDef

包含基礎 DAO querydef 物件的 OLE 介面指標。

備註

此指標是為了與其他類別的完整性和一致性而提供。 不過,因為 MFC 相當完整地封裝 DAO querydefs,所以您不太可能需要它。 如果您確實使用它,請謹慎執行。 特別是,除非您知道您正在做什麼,否則請勿變更指標的值。

CDaoQueryDef::Open

呼叫這個成員函式,以開啟先前儲存在資料庫的 QueryDefs 集合中的 querydef。

virtual void Open(LPCTSTR lpszName = NULL);

參數

lpszName
字串,包含要開啟之已儲存之 querydef 的名稱。 您可以使用 CString

備註

當 querydef 開啟之後,您可以呼叫其 Execute 成員函式,或使用 querydef 來建立 CDaoRecordset 物件。

CDaoQueryDef::SetConnect

呼叫這個成員函式,以設定 querydef 物件的 連接字串。

void SetConnect(LPCTSTR lpszConnect);

參數

lpszConnect
字串,包含相關聯 CDaoDatabase 物件的 連接字串。

備註

連接字串 可用來視需要將其他資訊傳遞至 ODBC 和特定 ISAM 驅動程式。 它不適用於 Microsoft Jet (.MDB) 資料庫。

提示

使用 ODBC 資料表的慣用方式是將它們附加至 。MDB 資料庫。

在執行代表 SQL 傳遞查詢至 ODBC 數據源的 querydef 之前,請先使用 SetConnect 設定 連接字串,並呼叫 SetReturnsRecords 來指定查詢是否傳回記錄。

如需 連接字串 結構和 連接字串元件範例的詳細資訊,請參閱 DAO 說明中的主題。

CDaoQueryDef::SetName

如果您想要變更不是暫時的 querydef 名稱,請呼叫此成員函式。

void SetName(LPCTSTR lpszName);

參數

lpszName
字串,包含相關聯 CDaoDatabase 物件中非範本查詢的新名稱。

備註

Querydef 名稱是唯一的用戶定義名稱。 您可以在 querydef 物件附加至 QueryDefs 集合之前呼叫 SetName

CDaoQueryDef::SetODBCTimeout

呼叫這個成員函式,以設定查詢到 ODBC 數據源逾時之前的時間限制。

void SetODBCTimeout(short nODBCTimeout);

參數

nODBCTimeout
查詢逾時之前的秒數。

備註

此成員函式可讓您覆寫連線數據源上後續作業「逾時」之前的預設秒數。作業可能會因為網路存取問題、查詢處理時間過長等而逾時。 SetODBCTimeout如果您要變更查詢逾時值,請使用這個 querydef 執行查詢之前呼叫 。 (當 ODBC 重複使用連接時,相同連接上所有用戶端的逾時值都相同。

查詢逾時的預設值為 60 秒。

CDaoQueryDef::SetParamValue

呼叫這個成員函式,以在運行時間設定 querydef 中的參數值。

virtual void SetParamValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

virtual void SetParamValue(
    int nIndex,
    const COleVariant& varValue);

參數

lpszName
您要設定其值的參數名稱。

varValue
要設定的值;請參閱。

nIndex
參數在 querydef 的 Parameters 集合中的序數位置。 您可以使用對 GetParameterCountGetParameterInfo 的呼叫來取得此值。

備註

參數必須已建立為 querydef SQL 字串的一部分。 您可以依名稱或集合中的序數位置來存取參數。

指定要設定為 COleVariant 物件的值。 如需在 對象中COleVariant設定所需值和類型的相關信息,請參閱 COleVariant 類別

CDaoQueryDef::SetReturnsRecords

將此成員函式呼叫為設定 SQL 傳遞查詢至外部資料庫的一部分。

void SetReturnsRecords(BOOL bReturnsRecords);

參數

bReturnsRecords
如果外部資料庫的查詢傳回記錄,則傳遞 TRUE;否則為 FALSE。

備註

在這種情況下,您必須建立 querydef,並使用其他 CDaoQueryDef 成員函式來設定其屬性。 如需外部資料庫的描述,請參閱 SetConnect

CDaoQueryDef::SetSQL

呼叫這個成員函式,以設定 querydef 執行的 SQL 語句。

void SetSQL(LPCTSTR lpszSQL);

參數

lpszSQL
包含完整 SQL 語句的字串,適合執行。 此字串的語法取決於您查詢的目標 DBMS。 如需Microsoft Jet 資料庫引擎中使用的語法討論,請參閱 DAO 說明中的<在程式碼中建置 SQL 語句>主題。

備註

的一般用法 SetSQL 是設定 querydef 物件,以用於 SQL 傳遞查詢。 (如需目標 DBMS 上的 SQL 傳遞查詢語法,請參閱 DBMS 的檔。

另請參閱

CObject 類別
階層架構圖表
CDaoRecordset
CDaoDatabase
CDaoTableDef
CDaoException