CDaoQueryDefInfo结构

CDaoQueryDefInfo结构具有如下形式:
struct CDaoQueryDefInfo
{
  CString m_strName;               // Primary
  short m_nType;                   // Primary
  COleDateTime m_dateCreated;      // Secondary
  COleDateTime m_dateLastUpdated;  // Secondary
  BOOL m_bUpdatable;               // Secondary
  BOOL m_bReturnsRecords;          // Secondary
  CString m_strSQL;                // All
  CString m_strConnect;            // All
  short m_nODBCTimeout;            // All
};
CDaoQueryDefInfo结构包含了为数据访问对象(DAO)定义的查询定义对象的信息。查询定义对象是CDaoQueryDef类的对象。上面对Primary,Secondary和All的引用指明了CDaoDatabase类的成员函数GetQueryDefInfo是如何返回信息的。

成员:
m_strName查询定义对象的唯一的名字。更多的信息参见DAO帮助中的“Name属性”主题。调用CDaoQueryDef::GetName以直接访问这个属性。
m_nType指明了查询定义对象的操作类型的值。其取值可能是下列值之一:
·dbQSelect  Select该查询选择记录。
·dbQAction  Action该查询移动或改变数据,但是不返回记录。
·dbQCrosstab  Crosstab该查询用与电子表格类似的格式返回数据。
·dbQDelete  Delete该查询删除指定的行。
·dbQUpdate  Update该查询更新一些记录。
·dbQAppend  Append该查询在表或查询的尾部加入新记录。
·dbQMakeTable  Make-table该查询根据记录集创建一个新表。
·dbQDDL  Data-definition该查询影响表格及其部分的结构。
·dbQSQLPassThrough  Pass-through直接把SQL语句传递给数据库,没有中间处理。
·dbQSetOperation  Union该查询创建一个快照型记录集对象,其中包含了一个或多个表中指定记录的数据,所有重复的记录都被删除。如果要包含重复记录,在查询定义的SQL语句中加入ALL关键字。
·dbQSPTBulk与dbQSQLPassThrough一起使用,指定了一种不返回记录的查询。
注意:
在创建一个直接传递SQL的查询时,你不需要设置dbQSQLPassThrough常量。它是在创建查询定义对象并设置连接属性的时候由Microsoft Jet数据库引擎自动设置的。
更多的信息参见DAO帮助中的“Type属性”主题。
m_dateCreated创建查询定义的日期和时间。如果要直接获得创建查询定义的日期,调用与表相关的CDaoTableDef对象的成员函数GetDateCreated。更多的信息参见下面的注释。还可以参看DAO帮助中的“DateCreated,LastUpdated属性”主题。
m_dateLastUpdated最近一次对查询定义作出改变的日期和时间。如果要直接获得最近改变表的日期,调用查询定义的成员函数GetDateLastUpdated。更多的信息参见下面的注释。同时参看DAO帮助中的“DateCreated,LastUpdated属性”主题。
m_bUpdatable指明是否可以修改查询定义对象。如果这个属性为TRUE,查询定义可以被修改;否则不能。可以被修改意味着查询定义对象的查询定义可以被修改。如果查询定义可以被修改,则查询定义对象的Updatable属性被设为TRUE,即使结果记录集不能被修改。如果要直接获得这个属性的值,调用查询定义对象的CanUpdate成员函数。更多的信息参见DAO帮助中的“Updatable属性”主题。
m_bReturnsRecords指明一个直接将SQL传递给外部数据库的查询是否返回记录。如果这个属性为TRUE,该查询返回记录。如果要直接获得这个属性的值,调用CDaoQuery- Def::GetReturnsRecords。并不是所有直接将SQL传递给外部数据库的查询都返回记录。例如,SQL UPDATE语句更新记录,但不返回语句,而SQL SELECT语句却返回语句。更多的信息参见DAO帮助中的“ReturnsRecords属性”主题。
m_strSQL定义了查询定义对象所执行的查询的SQL语句。SQL属性中包含了SQL语句,决定了执行查询时记录如何被选择,分组或排序。你可以使用该查询把记录选择到一个dynaset类型或snapshot类型的记录集对象。你也可以定义一个批查询来修改数据而不返回记录。你可以调用查询定义的GetSQL成员函数来直接获得这个属性的值。更多的信息参见“Visual C++程序员指南”中的文章“DAO查询”以及DAO帮助中的“SQL属性”主题。
m_strConnect提供了用于直接传递查询的数据库源的信息。这个信息采用连接字符串的形式。有关连接字符串以及直接获得这个属性值的更多信息参见CDaoDatabase::GetConnect成员函数。
m_nODBCTimeout当在一个ODBC数据库上运行一个查询时,在产生一个超时错误之前,Microsoft Jet数据库引擎将等待的秒数。当你使用ODBC数据库的时候,例如Microsoft SQL Server,可能会因为网络阻塞或是ODBC服务器的重负而引起延迟。为了避免无限等待,你可以指定Microsoft Jet数据库引擎在产生错误前等待多长时间。缺省的超时值为60秒。你可以调用查询定义的GetODBCTimeout成员函数来直接获得这个属性的值。更多的信息参见DAO帮助中的“ODBCTimeout属性”主题。

注释:
CDaoDatabase::GetQueryDefInfo成员函数获得的信息被保存在CDaoQueryDefInfo结构中。调用数据库对象的GetQueryDefInfo函数,查询定义对象就保存在该对象的查询定义集合中。CDaoQueryDefInfo还为调试版本定义了一个Dump成员函数。你可以利用Dump来转储CDaoQueryDefInfo对象的内容。CDaoDatabase类也提供了用于直接访问CDaoQueryDefInfo对象所返回的所有属性的成员函数,因此你可能很少需要调用GetQueryDefInfo。
当你在查询定义对象的字段集合或参数集合中加入新的字段或参数时,如果基础数据库不支持新对象所指定的数据类型,就会抛出一个异常。
日期和时间设置是从创建查询定义或最后修改查询定义的计算机上获得的。在多用户环境中,用户应当直接使用net time命令从文件服务器上获得这些设置,以避免DateCreated和LastUpdated属性中的不一致。有关这个结构和其他MFCDAO Info结构的信息参见“Visual C++ 程序员指南”中的文章“DAO集合:获得DAO对象的信息”。

请参阅:CDaoQueryDef, CDaoDatabase