Share via


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

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:

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

Vea también

Referencia

clase AdoQueryConnection

Miembros AdoQueryConnection

Espacio de nombres Microsoft.Office.InfoPath