Compartir a través de


AdoQueryConnection.BuildSqlFromXmlNodes (Método)

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
    Objeto 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

Cláusula WHERE creada a partir de los valores de campos de consulta del nodo especificado.

Excepciones

Tipo de excepción Condición

InvalidOperationException

Se ha producido una de las circunstancias siguientes:

  • No se puede analizar la cadena del comando SQL generada a partir del nodo de entrada.

  • El nodo de entrada no es un campo de consulta.

  • El nodo de entrada contiene columnas (atributos XML) que no están en el origen de datos en que se está realizando la consulta.

ArgumentNullException

El parámetro que se ha pasado a este método es null.

ArgumentException

El parámetro que se ha pasado a este método no es válido. Por ejemplo, es de un tipo o formato no válidos.

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 Copy XPath.

Sólo pueden tener acceso a este miembro los formularios que se ejecuten en el mismo dominio que el formulario abierto actualmente o los formularios a los que se hayan concedido permisos entre dominios.

Se puede tener acceso a este tipo o miembro desde un código ejecutado en formularios abiertos en Microsoft Office InfoPath 2007 o en un explorador Web.

Ejemplo

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

Vea también

Referencia

AdoQueryConnection (Clase)
AdoQueryConnection (Miembros)
Microsoft.Office.InfoPath (Espacio de nombres)