del método AdoQueryConnection.BuildSqlFromXmlNodes
Devuelve un fragmento de texto de comando SQL analizado desde el nodo XML especificado que contiene valores de campos de consulta.
Espacio de nombres: Microsoft.Office.InfoPath
Ensamblado: Microsoft.Office.InfoPath (en Microsoft.Office.InfoPath.dll)
Sintaxis
'Declaración
Public MustOverride Function BuildSqlFromXmlNodes ( _
input As XPathNavigator _
) As String
'Uso
Dim instance As AdoQueryConnection
Dim input As XPathNavigator
Dim returnValue As String
returnValue = instance.BuildSqlFromXmlNodes(input)
public abstract string BuildSqlFromXmlNodes(
XPathNavigator input
)
Parámetros
input
Tipo: System.Xml.XPath.XPathNavigatorObjeto XPathNavigator ubicado en el nodo XML dfs:queryFields con los valores de campos de consulta que se van a convertir en texto de comando SQL.
Valor devuelto
Tipo: System.String
Cláusula WHERE creada a partir de los valores de campos de consulta del nodo especificado.
Excepciones
Excepción | Condición |
---|---|
InvalidOperationException | Se ha producido una de las circunstancias siguientes:
|
ArgumentNullException | El parámetro pasado a este método es una referencia null (Nothing en Visual Basic). |
ArgumentException | El parámetro pasado a este método no es válido. Por ejemplo, es de un tipo o formato no válido. |
Comentarios
El fragmento de SQL generado por el método BuildSQLFromXmlNodes es una cláusula WHERE de SQL con el formato de un par nombreDeCampo = valor. Si hay más de un par, cada uno se combina con un operador AND. Por ejemplo, si el usuario realizó la consulta en la tabla Employees de la base de datos Northwind introduciendo Davolio y Nancy en los campos de consulta de los campos Apellido y Nombre, el fragmento de SQL devuelto por el método BuildSQLFromXmlNode sería:
("Employees"."LastName"='Davolio' AND "Employees"."FirstName"='Nancy')
El nodo XML que especifique para el parámetro input debe ser descendiente del nodo dfs:queryFields del formulario. Puede agregar el fragmento de texto de comando SQL a la cadena de comando SQL existente del objeto ADOQueryConnection utilizando la propiedad Command.
Nota
Para determinar la expresión de XPath para la tabla que contiene los valores de campo de consulta que se deben pasar al parámetro input, vaya al panel de tareas Origen de datos, expanda el grupo queryFields, haga clic con el botón secundario en la tabla con los campos de consulta con los que desea trabajar y, a continuación, haga clic en Copiar XPath.
Únicamente se puede acceder a este miembro con formularios que se ejecuten en el mismo dominio que el formulario que está actualmente abierto o con formularios a los que se hayan concedido permisos entre dominios.
Se puede acceder a este tipo o miembro desde el código que se ejecuta en los formularios abiertos en Microsoft InfoPath Filler o en un explorador web.
Ejemplos
En el ejemplo siguiente, el controlador de eventos de un control Button usa el método BuildSQLFromXMLNodes de la clase ADOQueryConnection para analizar los valores de campo de consulta actuales y mostrarlos en un cuadro de mensaje.
En este ejemplo se supone que la plantilla de formulario tiene una conexión de datos denominada "Envío de conexión principal" a la tabla Employees de la base de datos de SQL Server de ejemplo Northwind.
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