共用方式為


CDaoTableDef 類別

表示儲存的基底資料表或附加資料表定義。

語法

class CDaoTableDef : public CObject

成員

公用建構函式

名稱 描述
CDaoTableDef::CDaoTableDef 建構 CDaoTableDef 物件。

公用方法

名稱 描述
CDaoTableDef::Append 將新的資料表加入至資料庫。
CDaoTableDef::CanUpdate 如果資料表可以更新,則傳回非零值(您可以修改欄位或資料表屬性的定義)。
CDaoTableDef::Close 關閉開啟的 tabledef。
CDaoTableDef::Create 建立可使用 Append 新增至資料庫的 資料表。
CDaoTableDef::CreateField 呼叫 以建立資料表的欄位。
CDaoTableDef::CreateIndex 呼叫 以建立資料表的索引。
CDaoTableDef::D eleteField 呼叫 以從資料表中刪除欄位。
CDaoTableDef::D eleteIndex 呼叫 以從資料表中刪除索引。
CDaoTableDef::GetAttributes 傳回值,這個值表示物件的一或多個特性 CDaoTableDef
CDaoTableDef::Get連線 傳回值,提供資料表來源的相關資訊。
CDaoTableDef::GetDateCreated 傳回建立物件基礎基表的 CDaoTableDef 日期和時間。
CDaoTableDef::GetDateLastUpdated 傳回對基表設計所做的最近變更的日期和時間。
CDaoTableDef::GetFieldCount 傳回值,表示資料表中的欄位數目。
CDaoTableDef::GetFieldInfo 傳回資料表中欄位的特定類型資訊。
CDaoTableDef::GetIndexCount 傳回資料表的索引數目。
CDaoTableDef::GetIndexInfo 傳回資料表索引的特定類型資訊。
CDaoTableDef::GetName 傳回資料表的使用者定義名稱。
CDaoTableDef::GetRecordCount 傳回資料表中的記錄數目。
CDaoTableDef::GetSourceTableName 傳回值,指定源資料庫中附加資料表的名稱。
CDaoTableDef::GetValidationRule 傳回值,這個值會在變更或加入資料表時驗證欄位中的資料。
CDaoTableDef::GetValidationText 傳回值,指定當 Field 物件的值不符合指定的驗證規則時,應用程式所顯示的訊息文字。
CDaoTableDef::IsOpen 如果資料表已開啟,則傳回非零。
CDaoTableDef::Open 開啟儲存在資料庫 TableDef 集合中的現有 tabledef。
CDaoTableDef::RefreshLink 更新附加資料表的連接資訊。
CDaoTableDef::SetAttributes 設定值,這個值表示物件的一或多個特性 CDaoTableDef
CDaoTableDef::Set連線 設定值,提供資料表來源的相關資訊。
CDaoTableDef::SetName 設定資料表的名稱。
CDaoTableDef::SetSourceTableName 設定值,指定源資料庫中附加資料表的名稱。
CDaoTableDef::SetValidationRule 設定值,這個值會在變更或加入資料表時驗證欄位中的資料。
CDaoTableDef::SetValidationText 設定值,指定當 Field 物件的值不符合指定的驗證規則時,應用程式所顯示的訊息文字。

公用資料成員

名稱 描述
CDaoTableDef::m_pDAOTableDef tabledef 物件基礎之 DAO 介面的指標。
CDaoTableDef::m_pDatabase 此資料表的源資料庫。

備註

每個 DAO 資料庫物件都會維護一個稱為 TableDefs 的集合,其中包含所有已儲存的 DAO tabledef 物件。

您可以使用 物件來運算元據表定義 CDaoTableDef 。 例如,您可以:

  • 檢查資料庫中任何本機、附加或外部資料表的欄位和索引結構。

  • 呼叫 附加資料表的 SetConnectSetSourceTableName 成員函式,並使用 RefreshLink 成員函式來更新附加資料表的連接。

  • CanUpdate呼叫成員函式,以判斷您是否可以在資料表中編輯欄位定義。

  • 使用 GetValidationRuleSetValidationRule 取得或設定驗證條件,以及 GetValidationTextSetValidationText 成員函式。

  • Open使用成員函式來建立資料表、動態集或快照類型 CDaoRecordset 物件。

    注意

    DAO 資料庫類別與以 Open Database 連線ivity (ODBC) 為基礎的 MFC 資料庫類別不同。 所有 DAO 資料庫類別名稱都有 「CDao」 前置詞。 您仍然可以使用 DAO 類別存取 ODBC 資料來源;DAO 類別通常會提供優越的功能,因為它們專屬於 Microsoft Jet 資料庫引擎。

若要使用 tabledef 物件來處理現有的資料表,或建立新的資料表

  1. 在所有情況下,請先建構 CDaoTableDef 物件,並提供資料表所屬 CDaoDatabase 物件的指標

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

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

    • 若要建立新的資料表,請呼叫 tabledef 物件的 Create 成員函式,並提供資料表的名稱。 呼叫 CreateField CreateIndex ,將欄位和索引新增至資料表。

    • 呼叫 Append 以將資料表附加至資料庫的 TableDefs 集合來儲存資料表。 Create 會將 tabledef 置於開啟狀態,因此在呼叫 Create 之後,您不會呼叫 Open

      提示

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

若要使用您已開啟或建立的 tabledef 物件,請建立並開啟 CDaoRecordset 物件,並以 nOpenType 參數中的 值指定 tabledef dbOpenTable 的名稱。

若要使用 tabledef 物件來建立 CDaoRecordset 物件,您通常會依照上述方式建立或開啟 tabledef,然後建構 recordset 物件,然後在呼叫 CDaoRecordset::Open 時傳遞 tabledef 物件的指標。 您傳遞的 tabledef 必須處於開啟狀態。 如需詳細資訊,請參閱 CDaoRecordset 類別

當您完成使用 tabledef 物件時,請呼叫它的 Close 成員函式;然後終結 tabledef 物件。

繼承階層架構

CObject

CDaoTableDef

需求

標頭: afxdao.h

CDaoTableDef::Append

呼叫 Create 之後 呼叫這個成員函式,以建立新的 tabledef 物件,以將 tabledef 儲存在資料庫中。

virtual void Append();

備註

函式會將 物件附加至資料庫的 TableDefs 集合。 您可以藉由不附加 tabledef 來定義 tabledef 做為暫存物件,但如果您想要儲存並使用它,則必須呼叫 Append

注意

如果您嘗試附加未命名的 tabledef (包含 Null 或空字串),MFC 會擲回例外狀況。

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

CDaoTableDef::CanUpdate

呼叫這個成員函式,以判斷是否可以變更物件基礎 CDaoTableDef 的資料表定義。

BOOL CanUpdate();

傳回值

如果資料表結構(架構)可以修改(加入或刪除欄位和索引),則為非零,否則為 0。

備註

根據預設,可以更新物件基礎 CDaoTableDef 的新建立資料表,而且無法更新物件基礎的 CDaoTableDef 附加資料表。 CDaoTableDef物件可以更新,即使產生的記錄集無法更新也一樣。

如需相關資訊,請參閱 DAO 說明中的「可更新屬性」主題。

CDaoTableDef::CDaoTableDef

建構 CDaoTableDef 物件。

CDaoTableDef(CDaoDatabase* pDatabase);

參數

pDatabase
CDaoDatabase 物件的指標

備註

建構物件之後,您必須呼叫 Create Open 成員函式。 當您完成物件時,您必須呼叫其 Close 成員函式,並終結 CDaoTableDef 物件。

CDaoTableDef::Close

呼叫這個成員函式以關閉並釋放 tabledef 物件。

virtual void Close();

備註

通常呼叫 Close 之後,如果您使用 來配置 new tabledef 物件,就會刪除該物件。

您可以在呼叫 之後再次呼叫 Close Open 。 這可讓您重複使用 tabledef 物件。

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

CDaoTableDef::Create

呼叫此成員函式以建立新的已儲存資料表。

virtual void Create(
    LPCTSTR lpszName,
    long lAttributes = 0,
    LPCTSTR lpszSrcTable = NULL,
    LPCTSTR lpszConnect = NULL);

參數

lpszName
字串的指標,其中包含資料表的名稱。

lAttributes
對應至 tabledef 物件所表示之資料表特性的值。 您可以使用位 OR 來結合下列任一常數:

持續性 描述
dbAttachExclusive 對於使用 Microsoft Jet 資料庫引擎的資料庫,表示資料表是開啟供獨佔使用的附加資料表。
dbAttachSavePWD 對於使用 Microsoft Jet 資料庫引擎的資料庫,表示附加資料表的使用者識別碼和密碼會與連線資訊一起儲存。
dbSystemObject 指出資料表是 Microsoft Jet 資料庫引擎所提供的系統資料表。
dbHiddenObject 指出資料表是 Microsoft Jet 資料庫引擎提供的隱藏資料表。

lpszSrcTable
包含來源資料表名稱之字串的指標。 根據預設,此值會初始化為 Null。

lpsz連線
字串的指標,包含預設連接字串。 根據預設,此值會初始化為 Null。

備註

命名 tabledef 之後,您就可以呼叫 Append ,將 tabledef 儲存在資料庫的 TableDefs 集合中。 呼叫 Append 之後,tabledef 處於開啟狀態,而且您可以使用它來建立 CDaoRecordset 物件。

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

CDaoTableDef::CreateField

呼叫這個成員函式,將欄位新增至資料表。

void CreateField(
    LPCTSTR lpszName,
    short nType,
    long lSize,
    long lAttributes = 0);

void CreateField(CDaoFieldInfo& fieldinfo);

參數

lpszName
指定此欄位名稱之字串運算式的指標。

nType
值,表示欄位的資料類型。 此設定可以是下列其中一個值:

類型 大小 (位元組) 描述
dbBoolean 1 個位元組 BOOL
dbByte BYTE
dbInteger 2 int
dbLong 4 long
dbCurrency 8 貨幣 ( COleCurrency
dbSingle 4 float
dbDouble 8 double
dbDate 8 日期/時間 ( COleDateTime
dbText 1 - 255 文字 ( CString
dbLongBinary 0 Long Binary (OLE 物件)、 CLongBinary CByteArray
dbMemo 0 備忘 ( CString

lSize
值,表示包含文字之欄位的大小上限,以位元組為單位,或是包含文字或數值之欄位的固定大小。 除了文字欄位,所有欄位都會忽略 lSize 參數。

lAttributes
對應至欄位特性的值,可以使用位 OR 合併。

持續性 描述
dbFixedField 欄位大小是固定的(數值欄位的預設值)。
dbVariableField 欄位大小是可變的(僅限文字欄位)。
dbAutoIncrField 新記錄的域值會自動遞增為無法變更的唯一長整數。 僅支援 Microsoft Jet 資料庫資料表。
dbUpdatableField 域值可以變更。
dbDescending 欄位會以遞減方式排序(Z - A 或 100 - 0) 順序(僅適用于 Index 物件的 Fields 集合中的 Field 物件)。 如果您省略這個常數,欄位會以遞增方式排序 (A - Z 或 0 - 100) 順序 (預設值)。

fieldinfo
CDaoFieldInfo 結構的參考

備註

DAOField會建立 (OLE) 物件,並將其附加至 (OLE) 物件的 Fields 集合 DAOTableDef 。 除了用來檢查物件屬性之外,您也可以使用 CDaoFieldInfo 來建構輸入參數,以在 tabledef 中建立新的欄位。 的第一個版本 CreateField 較容易使用,但如果您想要更精細的控制,您可以使用的第二個 CDaoFieldInfo 版本 CreateField ,其採用 參數。

如果您使用 採用 參數的 CreateFieldCDaoFieldInfo 版本,則必須仔細設定 結構的每個成員 CDaoFieldInfo

  • m_strName

  • m_nType

  • m_lSize

  • m_lAttributes

  • m_bAllowZeroLength

的其餘成員 CDaoFieldInfo 應設定為 0 、FALSE 或空字串,視需要針對成員,或 CDaoException 可能發生 。

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

CDaoTableDef::CreateIndex

呼叫此函式,將索引新增至資料表。

void CreateIndex(CDaoIndexInfo& indexinfo);

參數

indexinfo
CDaoIndexInfo 結構的參考

備註

索引會指定從資料庫資料表存取的記錄順序,以及是否接受重複的記錄。 索引也提供對資料的有效存取。

您不需要建立資料表的索引,但在大型未編制索引的資料表中,存取特定記錄或建立記錄集可能需要很長的時間。 另一方面,建立太多索引會讓更新、附加和刪除作業變慢,因為所有索引都會自動更新。 當您決定要建立的索引時,請考慮這些因素。

必須設定結構的下列成員 CDaoIndexInfo

  • m_strName 必須提供名稱。

  • m_pFieldInfos 必須指向結構的陣列 CDaoIndexFieldInfo

  • m_nFields 必須指定結構陣列 CDaoFieldInfo 中的欄位數目。

如果設定為 FALSE,則會忽略其餘成員。 此外,建立 m_lDistinctCount 索引期間會忽略成員。

CDaoTableDef::D eleteField

呼叫此成員函式以移除欄位,並使其無法存取。

void DeleteField(LPCTSTR lpszName);
void DeleteField(int nIndex);

參數

lpszName
字串運算式的指標,該運算式是現有欄位的名稱。

nIndex
資料表以零起始的 Fields 集合中欄位的索引,以便依索引查閱。

備註

您可以在尚未附加至資料庫或 CanUpdate 傳回非零的新 物件上使用這個成員函式。

如需相關資訊,請參閱 DAO 說明中的「刪除方法」主題。

CDaoTableDef::D eleteIndex

呼叫這個成員函式以刪除基礎資料表中的索引。

void DeleteIndex(LPCTSTR lpszName);
void DeleteIndex(int nIndex);

參數

lpszName
字串運算式的指標,該運算式是現有索引的名稱。

nIndex
資料庫以零起始的 TableDefs 集合中索引物件的陣列索引,以依索引查閱。

備註

您可以在尚未附加至資料庫或 CanUpdate 傳回非零的新 物件上使用這個成員函式。

如需相關資訊,請參閱 DAO 說明中的「刪除方法」主題。

CDaoTableDef::GetAttributes

CDaoTableDef對於 物件,傳回值會指定 物件所 CDaoTableDef 表示之資料表的特性,而且可以是這些常數的總和:

long GetAttributes();

傳回值

傳回值,這個值表示物件的一或多個特性 CDaoTableDef

備註

持續性 描述
dbAttachExclusive 對於使用 Microsoft Jet 資料庫引擎的資料庫,表示資料表是開啟供獨佔使用的附加資料表。
dbAttachSavePWD 對於使用 Microsoft Jet 資料庫引擎的資料庫,表示附加資料表的使用者識別碼和密碼會與連線資訊一起儲存。
dbSystemObject 指出資料表是 Microsoft Jet 資料庫引擎所提供的系統資料表。
dbHiddenObject 指出資料表是 Microsoft Jet 資料庫引擎提供的隱藏資料表。
dbAttachedTable 表示資料表是非 ODBC 資料庫的附加資料表,例如 Paradox 資料庫。
dbAttachedODBC 指出資料表是 ODBC 資料庫中的附加資料表,例如 Microsoft SQL Server。

系統資料表是由 Microsoft Jet 資料庫引擎所建立的資料表,其中包含各種內部資訊。

隱藏資料表是 Microsoft Jet 資料庫引擎為暫時使用而建立的資料表。

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

CDaoTableDef::Get連線

呼叫這個成員函式,以取得資料來源的連接字串。

CString GetConnect();

傳回值

CString物件,包含資料表的路徑和資料庫類型。

備註

CDaoTableDef對於代表附加資料表的物件, CString 物件是由一或兩個部分所組成(資料庫類型規範和資料庫的路徑)。

下表所示的路徑是包含資料庫檔案之目錄的完整路徑,且前面必須加上識別碼 「DATABASE=」。 在某些情況下(如同 Microsoft Jet 和 Microsoft Excel 資料庫),特定檔案名會包含在資料庫路徑引數中。

CDaoTableDef::Set 中的資料表 連線 顯示可能的資料庫類型及其對應的資料庫規範和路徑:

針對 Microsoft Jet 資料庫基表,規範是空字串 (「」 )。

如果需要密碼,但未提供密碼,ODBC 驅動程式會在第一次存取資料表時顯示登入對話方塊,如果連接已關閉並重新開啟,則再次顯示登入對話方塊。 如果附加資料表具有 dbAttachSavePWD 屬性,當資料表重新開啟時,將不會顯示登入提示。

如需相關資訊,請參閱 DAO 說明中的「連線屬性」主題。

CDaoTableDef::GetDateCreated

呼叫此函式來判斷建立物件基礎資料表的 CDaoTableDef 日期和時間。

COleDateTime GetDateCreated();

傳回值

值,包含建立物件基礎 CDaoTableDef 之資料表的日期和時間。

備註

日期和時間設定衍生自建立基表或上次更新的電腦。 在多使用者環境中,使用者應該直接從檔案伺服器取得這些設定,以避免不一致:也就是說,所有用戶端都應該使用「標準」時間來源,或許來自一部伺服器。

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

CDaoTableDef::GetDateLastUpdated

呼叫此函式來判斷物件上次更新基礎資料表的 CDaoTableDef 日期和時間。

COleDateTime GetDateLastUpdated();

傳回值

值,包含上次更新物件基礎資料表的 CDaoTableDef 日期和時間。

備註

日期和時間設定衍生自建立基表或上次更新的電腦。 在多使用者環境中,使用者應該直接從檔案伺服器取得這些設定,以避免不一致:也就是說,所有用戶端都應該使用「標準」時間來源,或許來自一部伺服器。

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

CDaoTableDef::GetFieldCount

呼叫這個成員函式,以擷取資料表中定義的欄位數目。

short GetFieldCount();

傳回值

資料表中的欄位數目。

備註

如果其值為 0,則集合中沒有 物件。

如需相關資訊,請參閱 DAO 說明中的「Count 屬性」主題。

CDaoTableDef::GetFieldInfo

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

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
資料表以零起始的 Fields 集合中欄位物件的索引,以便依索引查閱。

fieldinfo
CDaoFieldInfo 結構的參考

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

  • AFX_DAO_PRIMARY_INFO (預設值)名稱、類型、大小、屬性。 使用此選項以取得最快的效能。

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

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

lpszName
欄位物件名稱的指標,以依名稱查閱。 名稱是最多 64 個字元的字串,可唯一命名欄位。

備註

函式的一個版本可讓您依索引查閱欄位。 另一個版本可讓您依名稱查閱欄位。

如需傳回之資訊的描述,請參閱 CDaoFieldInfo 結構。 此結構具有成員,這些成員會對應至 dwInfoOptions 描述 中所列的資訊專案。 當您在一個層級要求資訊時,您也會取得任何先前層級的資訊。

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

CDaoTableDef::GetIndexCount

呼叫這個成員函式以取得資料表的索引數目。

short GetIndexCount();

傳回值

資料表的索引數目。

備註

如果其值為 0,則集合中沒有索引。

如需相關資訊,請參閱 DAO 說明中的「Count 屬性」主題。

CDaoTableDef::GetIndexInfo

呼叫這個成員函式,以取得 tabledef 中定義之索引的各種資訊。

void GetIndexInfo(
    int nIndex,
    CDaoIndexInfo& indexinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetIndexInfo(
    LPCTSTR lpszName,
    CDaoIndexInfo& indexinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

參數

nIndex
資料表以零起始的 Indexes 集合中 Index 物件的數值索引,可依其在集合中的位置進行查閱。

indexinfo
CDaoIndexInfo 結構的參考

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

  • AFX_DAO_PRIMARY_INFO 名稱、欄位資訊、欄位。 使用此選項以取得最快的效能。

  • AFX_DAO_SECONDARY_INFO 主要資訊加上:主要、唯一、叢集、忽略 Null、必要、外部

  • AFX_DAO_ALL_INFO 主要和次要資訊,加上:相異計數

lpszName
索引物件名稱的指標,以依名稱查閱。

備註

函式的一個版本可讓您依其在集合中的位置來查閱索引。 另一個版本可讓您依名稱查閱索引。

如需傳回之資訊的描述,請參閱 CDaoIndexInfo 結構。 此結構具有成員,這些成員會對應至 dwInfoOptions 描述 中所列的資訊專案。 當您在一個層級要求資訊時,您也會取得任何先前層級的資訊。

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

CDaoTableDef::GetName

呼叫這個成員函式,以取得基礎資料表的使用者定義名稱。

CString GetName();

傳回值

資料表的使用者定義名稱。

備註

此名稱開頭為字母,最多可以包含 64 個字元。 它可以包含數位和底線字元,但不能包含標點符號或空格。

如需相關資訊,請參閱 DAO 說明中的「名稱屬性」主題。

CDaoTableDef::GetRecordCount

呼叫這個成員函式,以找出物件中 CDaoTableDef 有多少筆記錄。

long GetRecordCount();

傳回值

tabledef 物件中存取的記錄數目。

備註

呼叫 GetRecordCount 資料表類型 CDaoTableDef 物件會反映資料表中的大約記錄數目,而且會在加入和刪除資料表記錄時立即受到影響。 復原的交易會顯示為記錄計數的一部分,直到您呼叫 CDaoWorkSpace::CompactDatabase 為止。 CDaoTableDef沒有記錄的物件具有 0 的記錄計數屬性設定。 使用附加資料表或 ODBC 資料庫時, GetRecordCount 一律會傳回 -1。

如需相關資訊,請參閱 DAO 說明中的主題「RecordCount 屬性」。

CDaoTableDef::GetSourceTableName

呼叫這個成員函式,以擷取源資料庫中附加資料表的名稱。

CString GetSourceTableName();

傳回值

CString物件,指定附加資料表的來源名稱,如果原生資料表,則為空字串。

備註

附加資料表是連結到 Microsoft Jet 資料庫之另一個資料庫中的資料表。 附加資料表的資料會保留在外部資料庫中,可供其他應用程式操作。

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

CDaoTableDef::GetValidationRule

呼叫這個成員函式以擷取 tabledef 的驗證規則。

CString GetValidationRule();

傳回值

CString物件,會在變更或加入資料表時驗證欄位中的資料。

備註

驗證規則會與更新作業搭配使用。 如果 tabledef 包含驗證規則,該 tabledef 的更新必須符合預先決定的準則,才能變更資料。 如果變更不符合準則,則會擲回包含 GetValidationText 值的 例外狀況。 CDaoTableDef對於 物件,這是 CString 附加資料表的唯讀,而基表則為讀取/寫入。

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

CDaoTableDef::GetValidationText

呼叫此函式來擷取字串,以在使用者輸入不符合驗證規則的資料時顯示。

CString GetValidationText();

傳回值

CString物件,指定使用者輸入不符合驗證規則的資料時所顯示的文字。

備註

CDaoTableDef對於 物件,這是 CString 附加資料表的唯讀,而基表則為讀取/寫入。

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

CDaoTableDef::IsOpen

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

BOOL IsOpen() const;

傳回值

如果物件已開啟,則為 CDaoTableDef 非零,否則為 0。

備註

CDaoTableDef::m_pDatabase

包含此資料表之 CDaoDatabase 物件的指標。

備註

CDaoTableDef::m_pDAOTableDef

包含物件基礎 CDaoTableDef 之 DAO tabledef 物件的 OLE 介面指標。

備註

如果您需要直接存取 DAO 介面,請使用此指標。

CDaoTableDef::Open

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

virtual void Open(LPCTSTR lpszName);

參數

lpszName
指定資料表名稱之字串的指標。

備註

呼叫這個成員函式,以更新附加資料表的連接資訊。

void RefreshLink();

備註

您可以在對應的 CDaoTableDef 物件上呼叫 Set連線 ,然後使用 RefreshLink 成員函式來更新資訊,以變更附加資料表的連接資訊。 當您呼叫 RefreshLink 時,附加資料表的屬性不會變更。

若要強制修改的連線資訊生效,所有根據此 tabledef 開啟 的 CDaoRecordset 物件都必須關閉。

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

CDaoTableDef::SetAttributes

設定值,這個值表示物件的一或多個特性 CDaoTableDef

void SetAttributes(long lAttributes);

參數

lAttributes
物件所 CDaoTableDef 表示之資料表的特性,可以是這些常數的總和:

持續性 描述
dbAttachExclusive 對於使用 Microsoft Jet 資料庫引擎的資料庫,表示資料表是開啟供獨佔使用的附加資料表。
dbAttachSavePWD 對於使用 Microsoft Jet 資料庫引擎的資料庫,表示附加資料表的使用者識別碼和密碼會與連線資訊一起儲存。
dbSystemObject 指出資料表是 Microsoft Jet 資料庫引擎所提供的系統資料表。
dbHiddenObject 指出資料表是 Microsoft Jet 資料庫引擎提供的隱藏資料表。

備註

設定多個屬性時,您可以使用 bitwise-OR 運算子來加總適當的常數來結合它們。 在未附加的資料表上設定 dbAttachExclusive 會產生例外狀況。 結合下列值也會產生例外狀況:

  • dbAttachExclusive | dbAttachedODBC

  • dbAttachSavePWD | dbAttachedTable

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

CDaoTableDef::Set連線

CDaoTableDef對於代表附加資料表的物件,字串物件是由一或兩個部分所組成(資料庫類型規範和資料庫的路徑)。

void SetConnect(LPCTSTR lpszConnect);

參數

lpsz連線
字串運算式的指標,指定要傳遞至 ODBC 或可安裝 ISAM 驅動程式的其他參數。

備註

下表所示的路徑是包含資料庫檔案之目錄的完整路徑,且前面必須加上識別碼 「DATABASE=」。 在某些情況下(如同 Microsoft Jet 和 Microsoft Excel 資料庫),特定檔案名會包含在資料庫路徑引數中。

注意

請勿在格式為 「DATABASE=drive:\\path」 的等號路徑語句中包含空白字元。 這會導致擲回例外狀況,且連線失敗。

下表顯示可能的資料庫類型及其對應的資料庫規範和路徑:

資料庫類型 規範 路徑
使用 Jet 資料庫引擎的資料庫 "[ database];" drive :\\ path \\ filename 。MDB」
dBASE III 「dBASE III;」 drive :\\ path
dBASE IV 「dBASE IV;」 drive :\\ path
dBASE 5 「dBASE 5.0;」 drive :\\ path
Paradox 3.x 「Paradox 3.x;」 drive :\\ path
Paradox 4.x 「Paradox 4.x;」 drive :\\ path
Paradox 5.x 「Paradox 5.x;」 drive :\\ path
Excel 3.0 「Excel 3.0;」 drive :\\ path \\ filename.XLS」
Excel 4.0 「Excel 4.0;」 drive :\\ path \\ filename.XLS」
Excel 5.0 或 Excel 95 「Excel 5.0;」 drive :\\ path \\ filename.XLS」
Excel 97 「Excel 8.0;」 drive :\\ path \ filename.XLS」
HTML 匯入 「HTML 匯入;」 drive :\\ path \ filename
HTML 匯出 「HTML 匯出;」 drive :\\ path
Text 「Text;」 「drive:\\path」
ODBC 「ODBC;DATABASE= database ;UID= 使用者 ;PWD= password ;DSN= datasourcename; LOGINTIMEOUT= seconds; 」(這可能不是所有伺服器的完整連接字串;這只是一個範例。請務必不要在參數之間有空格。
Exchange 「Exchange;

MAPILEVEL= folderpath ;

[TABLETYPE={ 0 | 1 };]

[PROFILE= profile ;]

[PWD= password ;]

[DATABASE= database ;]」
「drive :\\ path \\ filename .MDB」

注意

自 DAO 3.5 起,不再支援 Btrieve。

您必須在連接字串中使用雙反斜線 (\\)。 如果您已使用 SetConnect 修改現有連接的屬性,則後續必須呼叫 RefreshLink 。 如果您使用 初始化連接屬性 SetConnect ,則不需要呼叫 RefreshLink ,但應該選擇這樣做,請先附加 tabledef。

如果需要密碼,但未提供密碼,ODBC 驅動程式會在第一次存取資料表時顯示登入對話方塊,如果連接已關閉並重新開啟,則再次顯示登入對話方塊。

您可以將來源引數 Create 提供給成員函式,以設定物件的連接字串 CDaoTableDef 。 您可以檢查設定,以判斷資料庫的型別、路徑、使用者識別碼、密碼或 ODBC 資料來源。 如需詳細資訊,請參閱特定驅動程式的檔。

如需相關資訊,請參閱 DAO 說明中的「連線屬性」主題。

CDaoTableDef::SetName

呼叫這個成員函式來設定資料表的使用者定義名稱。

void SetName(LPCTSTR lpszName);

參數

lpszName
字串運算式的指標,指定資料表的名稱。

備註

名稱必須以字母開頭,且最多可以包含 64 個字元。 它可以包含數位和底線字元,但不能包含標點符號或空格。

如需相關資訊,請參閱 DAO 說明中的「名稱屬性」主題。

CDaoTableDef::SetSourceTableName

呼叫這個成員函式,以指定附加資料表的名稱,或物件所依據之基表 CDaoTableDef 的名稱,因為它存在於資料的原始來源中。

void SetSourceTableName(LPCTSTR lpszSrcTableName);

參數

lpszSrcTableName
字串運算式的指標,指定外部資料庫中的資料表名稱。 對於基表,此設定是空字串 (「」 )。

備註

然後,您必須呼叫 RefreshLink 。 這個屬性設定對基表而言是空的,而附加資料表或未附加至集合的物件則為可讀寫的。

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

CDaoTableDef::SetValidationRule

呼叫此成員函式來設定 tabledef 的驗證規則。

void SetValidationRule(LPCTSTR lpszValidationRule);

參數

lpszValidationRule
驗證作業之字串運算式的指標。

備註

驗證規則會與更新作業搭配使用。 如果 tabledef 包含驗證規則,該 tabledef 的更新必須符合預先決定的準則,才能變更資料。 如果變更不符合準則,則會顯示包含 GetValidationText 文字的 例外狀況。

只有使用 Microsoft Jet 資料庫引擎的資料庫才支援驗證。 運算式無法參考使用者定義函數、定義域彙總函式、SQL 彙總函式或查詢。 物件的驗證規則 CDaoTableDef 可以參考該物件中的多個欄位。

例如,針對名為 hire_date termination_date 的欄位,驗證規則可能是:

myTableDef.SetValidationRule(_T("termination_date > hire_date"));

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

CDaoTableDef::SetValidationText

呼叫這個成員函式,以設定 CDaoTableDef Microsoft Jet 資料庫引擎所支援基礎基表之物件的驗證規則例外狀況文字。

void SetValidationText(LPCTSTR lpszValidationText);

參數

lpszValidationText
字串運算式的指標,指定輸入資料無效時所顯示的文字。

備註

您無法設定附加資料表的驗證文字。

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

另請參閱

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