CDaoTableDef 類別
表示儲存的基底資料表或附加資料表定義。
注意
DAO 可透過 Office 2013 支援。 DAO 3.6 是最終版本,且被視為過時。
語法
class CDaoTableDef : public CObject
成員
公用建構函式
名稱 | 描述 |
---|---|
CDaoTableDef::CDaoTableDef | 建構 CDaoTableDef 物件。 |
公用方法
公用資料成員
名稱 | 描述 |
---|---|
CDaoTableDef::m_pDAOTableDef | tabledef 對象基礎之 DAO 介面的指標。 |
CDaoTableDef::m_pDatabase | 此數據表的源資料庫。 |
備註
每個 DAO 資料庫物件都會維護一個稱為 TableDefs 的集合,其中包含所有已儲存的 DAO tabledef 物件。
您可以使用物件來操作資料表定義 CDaoTableDef
。 例如,您可以:
檢查資料庫中任何本機、附加或外部數據表的欄位和索引結構。
呼叫 附加數據表的
SetConnect
和SetSourceTableName
成員函式,並使用RefreshLink
成員函式來更新附加數據表的連接。CanUpdate
呼叫成員函式,以判斷您是否可以在數據表中編輯欄位定義。使用
GetValidationRule
和SetValidationRule
取得或設定驗證條件,以及GetValidationText
和SetValidationText
成員函式。Open
使用成員函式來建立數據表、動態集或快照類型CDaoRecordset
物件。注意
DAO 資料庫類別與以開放式資料庫連接性 (ODBC) 為基礎的 MFC 資料庫類別不同。 所有 DAO 資料庫類別名稱都有 「CDao」 前置詞。 您仍然可以使用 DAO 類別存取 ODBC 數據源;DAO 類別通常會提供優越的功能,因為它們專屬於 Microsoft Jet 資料庫引擎。
若要使用 tabledef 對象來處理現有的數據表,或建立新的數據表
在所有情況下,請先建構
CDaoTableDef
物件,並提供數據表所屬 CDaoDatabase 物件的指標。然後根據您要的內容執行下列動作:
若要使用現有的已儲存數據表,請呼叫 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 物件。
繼承階層架構
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。
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 物件)、 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
,其採用 參數。
如果您使用 採用 參數的 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
指定資料表名稱之字串的指標。
備註
CDaoTableDef::RefreshLink
呼叫這個成員函式,以更新附加數據表的連接資訊。
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_date 和 termination_date 的欄位,驗證規則可能是:
myTableDef.SetValidationRule(_T("termination_date > hire_date"));
如需相關信息,請參閱 DAO 說明中的
CDaoTableDef::SetValidationText
呼叫這個成員函式,以設定Microsoft Jet 資料庫引擎所支援之基礎基表之對象的驗證規則 CDaoTableDef
例外狀況文字。
void SetValidationText(LPCTSTR lpszValidationText);
參數
lpszValidationText
字串表達式的指標,指定輸入數據無效時所顯示的文字。
備註
您無法設定附加資料表的驗證文字。
如需相關信息,請參閱 DAO 說明中的