CDaoFieldInfo 结构
CDaoFieldInfo
结构包含为数据访问对象 (DAO) 定义的字段对象的相关信息。
注意
DAO 通过 Office 2013 获得支持。 DAO 3.6 是最终版本,它被视为已过时。
语法
struct CDaoFieldInfo
{
CString m_strName; // Primary
short m_nType; // Primary
long m_lSize; // Primary
long m_lAttributes; // Primary
short m_nOrdinalPosition; // Secondary
BOOL m_bRequired; // Secondary
BOOL m_bAllowZeroLength; // Secondary
long m_lCollatingOrder; // Secondary
CString m_strForeignName; // Secondary
CString m_strSourceField; // Secondary
CString m_strSourceTable; // Secondary
CString m_strValidationRule; // All
CString m_strValidationText; // All
CString m_strDefaultValue; // All
};
参数
m_strName
对字段对象进行唯一命名。 有关详细信息,请参阅 DAO 帮助中的“对属性命名”主题。
m_nType
该值指示字段的数据类型。 有关详细信息,请参阅 DAO 帮助中的“Type 属性”主题。 此属性的值可以是下列值之一:
dbBoolean
是/否,与 TRUE/FALSE 相同dbByte
BytedbInteger
ShortdbLong
LongdbCurrency
货币;请参阅 MFC 类 COleCurrencydbSingle
SingledbDouble
DoubledbDate
日期/时间;请参阅 MFC 类 COleDateTimedbText
文本;请参阅 MFC 类 CStringdbLongBinary
长二进制(OLE 对象);你可能希望使用 MFC 类 CByteArray 而不是类CLongBinary
,因为CByteArray
更丰富且更易于使用。dbMemo
备注;请参阅 MFC 类CString
dbGUID
用于远程过程调用的全局唯一标识符/通用唯一标识符。 有关详细信息,请参阅 DAO 帮助中的“Type 属性”主题。
注意
不要对二进制数据使用字符串数据类型。 这会导致数据通过 Unicode/ANSI 转换层,从而导致开销增加,并可能出现意外转换。
m_lSize
该值指示包含文本的 DAO 字段对象的最大大小(以字节为单位),或者包含文本或数值的字段对象的固定大小。 有关详细信息,请参阅 DAO 帮助中的“Size 属性”主题。 大小可以是下列值之一:
类型 | “大小(字节)” | 说明 |
---|---|---|
dbBoolean |
1 个字节 | 是/否(与 True/False 相同) |
dbByte |
1 | Byte |
dbInteger |
2 | Integer |
dbLong |
4 | Long |
dbCurrency |
8 | 货币 (COleCurrency) |
dbSingle |
4 | Single |
dbDouble |
8 | 双精度 |
dbDate |
8 | 日期/时间 (COleDateTime) |
dbText |
1 - 255 | 文本 (CString) |
dbLongBinary |
0 | 长二进制(OLE 对象;CByteArray;而不是使用 CLongBinary ) |
dbMemo |
0 | 备注 (CString) |
dbGUID |
16 | 用于远程过程调用的全局唯一标识符/通用唯一标识符。 |
m_lAttributes
指定 tabledef、recordset、querydef 或索引对象包含的字段对象的特征。 返回的值可以这些是用 C++ 按位“OR”(|
) 运算符创建的常量之和:
dbFixedField
字段大小是固定的(数值字段的默认值)。dbVariableField
字段大小是可变的(仅限文本字段)。dbAutoIncrField
新记录的字段值会自动递增为一个无法更改的唯一长整型。 仅支持用于 Microsoft Jet 数据库表。dbUpdatableField
字段值可更改。dbDescending
该字段按降序(Z - A 或 100 - 0)顺序排序(仅适用于索引对象的 Fields 集合中的字段对象;在 MFC 中,索引对象本身包含在 tabledef 对象中)。 如果省略此常量,则字段按升序(A - Z 或 0 - 100)顺序排序(默认)。
检查此属性的设置时,可以使用 C++ 位 AND 运算符 (&
) 来测试特定属性。 设置多个属性时,可以通过使用按位“或”(|
) 运算符将适当的常量组合在一起来合并它们。 有关详细信息,请参阅 DAO 帮助中的“Attributes 属性”主题。
m_nOrdinalPosition
该值指定希望 DAO 字段对象表示的字段相对于其他字段显示的数字顺序。 可以使用 CDaoTableDef::CreateField 来设置此属性。 有关详细信息,请参阅 DAO 帮助中的“OrdinalPosition 属性”主题。
m_bRequired
指示 DAO 字段对象是否需要非 Null 值。 如果此属性为 TRUE,则该字段不允许 Null 值。 如果“Required”设置为 FALSE,则该字段可以包含 Null 值以及满足 AllowZeroLength 和 ValidationRule 属性设置所指定条件的值。 有关详细信息,请参阅 DAO 帮助中的“Required 属性”主题。 可以使用 CDaoTableDef::CreateField 为 tabledef 设置此属性。
m_bAllowZeroLength
指示空字符串 ("") 是否是具有“文本”或“备注”数据类型的 DAO 字段对象的有效值。 如果此属性为 TRUE,则空字符串是有效值。 可以将此属性设置为 FALSE,以确保不能使用空字符串设置字段的值。 有关详细信息,请参阅 DAO 帮助中的“AllowZeroLength 属性”主题。 可以使用 CDaoTableDef::CreateField 为 tabledef 设置此属性。
m_lCollatingOrder
指定文本中用于字符串比较或排序的排序顺序。 有关详细信息,请参阅 DAO 帮助中的主题“自定义数据访问的 Windows 注册表设置”。 有关返回的可能值的列表,请参阅 CDaoDatabaseInfo 结构的 m_lCollatingOrder
成员。 可以使用 CDaoTableDef::CreateField 为 tabledef 设置此属性。
m_strForeignName
该值在关系中指定与主表中的字段相对应的外表中 DAO 字段对象的名称。 有关详细信息,请参阅 DAO 帮助中的“ForeignName 属性”主题。
m_strSourceField
指示字段的名称,该字段是由 tabledef、recordset 或 querydef 对象包含的 DAO 字段对象的原始数据源。 此属性指示与字段对象关联的原始字段名称。 例如,可以使用此属性来确定查询字段中数据的原始源,其名称与基础表中字段的名称无关。 有关详细信息,请参阅 DAO 帮助中的“SourceField 和 SourceTable 属性”主题。 可以使用 CDaoTableDef::CreateField 为 tabledef 设置此属性。
m_strSourceTable
指示表名称,该表是由 tabledef、recordset 或 querydef 对象包含的 DAO 字段对象的原始数据源。 此属性指示与字段对象关联的原始表名称。 例如,可以使用此属性来确定查询字段中数据的原始源,其名称与基础表中字段的名称无关。 有关详细信息,请参阅 DAO 帮助中的“SourceField 和 SourceTable 属性”主题。 可以使用 CDaoTableDef::CreateField 为 tabledef 设置此属性。
m_strValidationRule
当一个字段被更改或被添加到表中时,该值用于验证该字段中的数据。 有关详细信息,请参阅 DAO 帮助中的“ValidationRule 属性”主题。 可以使用 CDaoTableDef::CreateField 为 tabledef 设置此属性。
有关 tabledef 的相关信息,请参阅 CDaoTableDefInfo 结构的 m_strValidationRule
成员。
m_strValidationText
该值指定如果 DAO 字段对象的值不满足 ValidationRule 属性设置指定的验证规则,应用程序将显示的消息文本。 有关详细信息,请参阅 DAO 帮助中的“ValidationText 属性”主题。 可以使用 CDaoTableDef::CreateField 为 tabledef 设置此属性。
m_strDefaultValue
DAO 字段对象的默认值。 创建新记录时,DefaultValue 属性设置会自动输入为字段的值。 有关详细信息,请参阅 DAO 帮助中的“DefaultValue 属性”主题。 可以使用 CDaoTableDef::CreateField 为 tabledef 设置此属性。
备注
上面对 Primary、Secondary 和 All 的引用指示了 CDaoTableDef、CDaoQueryDef 和 CDaoRecordset 类中的 GetFieldInfo
成员函数是如何返回信息的。
字段对象不由 MFC 类表示。 相反,以下类的 MFC 对象的基础 DAO 对象包含字段对象集合:CDaoTableDef、CDaoRecordset 和 CDaoQueryDef。 这些类提供成员函数来访问字段信息的某些个别项,你也可通过调用包含对象的 GetFieldInfo
成员函数,使用 CDaoFieldInfo
对象一次性访问所有这些项。
除了用于检查对象属性之外,你还可以使用 CDaoFieldInfo
来构造输入参数,用于在 tabledef 中创建新字段。 更简单的选项可用于此任务,但如果需要更精细的控制,可以使用采用 CDaoFieldInfo
参数的 CDaoTableDef::CreateField 版本。
由(包含该字段的类的)GetFieldInfo
成员函数检索到的信息存储在 CDaoFieldInfo
结构中。 调用包含对象的 GetFieldInfo
成员函数;字段对象存储在该对象的 Fields 集合中。 CDaoFieldInfo
还在调试生成中定义了一个 Dump
成员函数。 可使用 Dump
来转储 CDaoFieldInfo
对象的内容。
要求
标头:afxdao.h
另请参阅
结构、样式、回调和消息映射
CDaoTableDef::GetFieldInfo
CDaoRecordset::GetFieldInfo
CDaoQueryDef::GetFieldInfo