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 Byte

  • dbInteger Short

  • dbLong Long

  • dbCurrency 货币;请参阅 MFC 类 COleCurrency

  • dbSingle Single

  • dbDouble Double

  • dbDate 日期/时间;请参阅 MFC 类 COleDateTime

  • dbText 文本;请参阅 MFC 类 CString

  • dbLongBinary 长二进制(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 的引用指示了 CDaoTableDefCDaoQueryDefCDaoRecordset 类中的 GetFieldInfo 成员函数是如何返回信息的。

字段对象不由 MFC 类表示。 相反,以下类的 MFC 对象的基础 DAO 对象包含字段对象集合:CDaoTableDefCDaoRecordsetCDaoQueryDef。 这些类提供成员函数来访问字段信息的某些个别项,你也可通过调用包含对象的 GetFieldInfo 成员函数,使用 CDaoFieldInfo 对象一次性访问所有这些项。

除了用于检查对象属性之外,你还可以使用 CDaoFieldInfo 来构造输入参数,用于在 tabledef 中创建新字段。 更简单的选项可用于此任务,但如果需要更精细的控制,可以使用采用 CDaoFieldInfo 参数的 CDaoTableDef::CreateField 版本。

由(包含该字段的类的)GetFieldInfo 成员函数检索到的信息存储在 CDaoFieldInfo 结构中。 调用包含对象的 GetFieldInfo 成员函数;字段对象存储在该对象的 Fields 集合中。 CDaoFieldInfo 还在调试生成中定义了一个 Dump 成员函数。 可使用 Dump 来转储 CDaoFieldInfo 对象的内容。

要求

标头:afxdao.h

另请参阅

结构、样式、回调和消息映射
CDaoTableDef::GetFieldInfo
CDaoRecordset::GetFieldInfo
CDaoQueryDef::GetFieldInfo