AdoQueryConnection.BuildSqlFromXmlNodes 方法

返回从包含查询域值的指定 XML 节点分析的 SQL 命令文本片段。

命名空间:  Microsoft.Office.InfoPath
程序集:  Microsoft.Office.InfoPath(位于 Microsoft.Office.InfoPath.dll 中)

语法

声明
Public MustOverride Function BuildSqlFromXmlNodes ( _
    input As XPathNavigator _
) As String
用法
Dim instance As AdoQueryConnection
Dim input As XPathNavigator
Dim returnValue As String

returnValue = instance.BuildSqlFromXmlNodes(input)
public abstract string BuildSqlFromXmlNodes(
    XPathNavigator input
)

参数

返回值

类型:System.String
基于指定节点中的查询域值构建的 WHERE 子句。

异常

异常 条件
InvalidOperationException

发生了下列情况之一:

  • 无法分析从输入节点生成的 SQL 命令字符串。

  • 输入节点不是查询域值表。

  • 输入节点包含未出现在所查询的数据源中的列(XML 属性)。

ArgumentNullException

传递给此方法的参数为 空引用(无 在 Visual Basic 中)。

ArgumentException

传递给此方法的参数无效。例如,它的类型或格式有误。

备注

BuildSQLFromXmlNodes 方法所生成的 SQL 片段是形式为 fieldname = value 对的 SQL WHERE 子句。如果有多个对,则通过 AND 运算符组合每个对。例如,如果用户通过在 Last Name 和 First Name 域的查询域中输入 Davolio 和 Nancy 来查询罗斯文数据库的 Employees 表,则 BuildSQLFromXmlNode 方法返回的 SQL 片段将为:

("Employees"."LastName"='Davolio' AND "Employees"."FirstName"='Nancy')

为 input 参数指定的 XML 节点必须是表单的 dfs:queryFields 节点的后代。可以使用 Command 属性将 SQL 命令文本片段添加到 ADOQueryConnection 对象的现有 SQL 命令字符串中。

备注

对于包含要为 input 参数传递的查询字段值的表,若要确定该表的 XPath 表达式,请显示"数据源"任务窗格,展开"queryFields"组,右键单击包含要使用的查询字段的表,再单击"复制 XPath"。

此成员只能由与当前打开的表单在相同域中运行的表单访问,或者由已授予跨域权限的表单访问。

可以通过 Microsoft InfoPath Filler 或 Web 浏览器内打开的表单中运行的代码访问此类型或成员。

示例

在下面的示例中,Button 控件的事件处理程序使用 ADOQueryConnection 类的 BuildSQLFromXMLNodes 方法,分析当前的查询域值并将它们显示在消息框中。

该示例假定表单模板具有一个名为"Main connection"的数据连接,该连接指向 SQL Server 罗斯文示例数据库中的 Employees 表。

public void DisplaySQL_Clicked(object sender, ClickedEventArgs e)
{
   // Get the query fields node.
   string queryFieldsXPath = 
      "dfs:myFields/dfs:queryFields/q:Employees";
   XPathNavigator mainDataSourceNav = MainDataSource.CreateNavigator();
   XPathNavigator queryFieldsNav = mainDataSourceNav.SelectSingleNode(
      queryFieldsXPath, NamespaceManager);

   // Create AdoQueryConnection from the 
   // DataConnections collection.
   AdoQueryConnection myAdoQueryConnection = 
      (AdoQueryConnection)(DataConnections["Main connection"]);
   
   // Display BuildSQLFromXMLNodes output.
   string sqlFromXmlNodes = 
      myAdoQueryConnection.BuildSqlFromXmlNodes(queryFieldsNav);
   MessageBox.Show(sqlFromXmlNodes);
}
Public Sub DisplaySQL_Clicked(ByVal sender As Object, _
   ByVal e As ClickedEventArgs)
   ' Get the query fields node.
   Dim queryFieldsXPath As String = 
      "dfs:myFields/dfs:queryFields/q:Employees"
   Dim mainDataSourceNav As XPathNavigator  = _
      MainDataSource.CreateNavigator()
   Dim queryFieldsNav As XPathNavigator = _
      mainDataSourceNav.SelectSingleNode( _
      queryFieldsXPath, NamespaceManager)

   ' Create AdoQueryConnection from the 
   ' DataConnections collection.
   Dim myAdoQueryConnection As AdoQueryConnection  = _
      DirectCast(DataConnections["Main connection"], _
      AdoQueryConnection)
   
   ' Display BuildSQLFromXMLNodes output.
   Dim sqlFromXmlNodes As String  = 
      myAdoQueryConnection.BuildSqlFromXmlNodes(queryFieldsNav)
   MessageBox.Show(sqlFromXmlNodes)
End Sub

另请参阅

引用

AdoQueryConnection 类

AdoQueryConnection 成员

Microsoft.Office.InfoPath 命名空间