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
)
参数
input
类型:System.Xml.XPath.XPathNavigator一个位于 dfs:queryFields XML 节点的 XPathNavigator,该节点包含要转换为 SQL 片段的查询域值。
返回值
类型:System.String
基于指定节点中的查询域值构建的 WHERE 子句。
异常
异常 | 条件 |
---|---|
InvalidOperationException | 发生了下列情况之一:
|
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