共用方式為


CDaoTableDef 類別

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

注意

DAO 可透過 Office 2013 支援。 DAO 3.6 是最終版本,且被視為過時。

語法

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::GetConnect 傳回值,提供數據表來源的相關信息。
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::SetConnect 設定值,提供數據表來源的相關信息。
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 資料庫類別與以開放式資料庫連接性 (ODBC) 為基礎的 MFC 資料庫類別不同。 所有 DAO 資料庫類別名稱都有 「CDao」 前置詞。 您仍然可以使用 DAO 類別存取 ODBC 數據源;DAO 類別通常會提供優越的功能,因為它們專屬於 Microsoft Jet 資料庫引擎。

若要使用 tabledef 對象來處理現有的數據表,或建立新的數據表

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

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

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

    • 若要建立新的數據表,請呼叫 tabledef 物件的 Create 成員函式,並提供數據表的名稱。 呼叫 CreateFieldCreateIndex ,將字段和索引新增至數據表。

    • 呼叫 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 物件的指標

備註

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

CDaoTableDef::Close

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

virtual void Close();

備註

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

您可以在呼叫 之後再次呼叫 CloseOpen。 這可讓您重複使用 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。

lpszConnect
字串的指標,包含預設 連接字串。 根據預設,此值會初始化為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 物件)、 CLongBinaryCByteArray
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,其採用 參數。

如果您使用 採用 參數的 CreateField CDaoFieldInfo 版本,則必須仔細設定 結構的每個成員 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::GetConnect

呼叫這個成員函式,以取得數據源的 連接字串。

CString GetConnect();

傳回值

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

備註

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

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

CDaoTableDef::SetConnect 中的數據表會顯示可能的資料庫類型及其對應的資料庫規範和路徑:

對於 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 物件上呼叫 SetConnect,然後使用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::SetConnect

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

void SetConnect(LPCTSTR lpszConnect);

參數

lpszConnect
字串表達式的指標,指定要傳遞至 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_datetermination_date 的欄位,驗證規則可能是:

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

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

CDaoTableDef::SetValidationText

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

void SetValidationText(LPCTSTR lpszValidationText);

參數

lpszValidationText
字串表達式的指標,指定輸入數據無效時所顯示的文字。

備註

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

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

另請參閱

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