Compartilhar via


AdoSubmitConnection.BuildSqlFromXmlNodes(XPathNavigator) Método

Definição

Retorna um fragmento de texto de comando SQL usando o nó XML especificado.

public:
 abstract System::String ^ BuildSqlFromXmlNodes(System::Xml::XPath::XPathNavigator ^ input);
public abstract string BuildSqlFromXmlNodes (System.Xml.XPath.XPathNavigator input);
abstract member BuildSqlFromXmlNodes : System.Xml.XPath.XPathNavigator -> string
Public MustOverride Function BuildSqlFromXmlNodes (input As XPathNavigator) As String

Parâmetros

input
XPathNavigator

Um XPathNavigator objeto que especifica o nó XML a ser convertido em um fragmento SQL.

Retornos

A cláusula WHERE para o nó especificado.

Exceções

Uma das seguintes condições ocorreu: a cadeia de caracteres de comando SQL gerada a partir do nó de entrada não pode ser analisada. O nó de entrada não é uma tabela de valores. O nó de entrada contém colunas (atributos XML) que não estão presentes na fonte de dados à qual estão sendo enviadas.

O parâmetro passado para esse método é uma referência nula (Nada no Visual Basic).

O parâmetro passado para esse método não é válido. Por exemplo, ele é do tipo ou formato errado.

Exemplos

No exemplo a seguir, o manipulador de eventos de um controle Button usa o método BuildSQLFromXMLNodes da classe AdoSubmitConnection para analisar os valores atuais do campo de consulta e exibi-los em uma caixa de mensagens.

Este exemplo pressupõe que o modelo de formulário tenha uma conexão de dados para enviar dados chamados "Envio de conexão principal" à tabela Funcionários no banco de dados de exemplo SQL Server 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 AdoSubmitConnection from the 
   // DataConnections collection.
   AdoSubmitConnection myAdoSubmitConnection = 
      (AdoSubmitConnection)(DataConnections["Main connection submit"]);

   // Display BuildSQLFromXMLNodes output.
   string sqlFromXmlNodes = 
      myAdoSubmitConnection.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 AdoSubmitConnection from the 
   ' DataConnections collection.
   Dim myAdoSubmitConnection As AdoSubmitConnection  = _
      DirectCast(DataConnections["Main connection submit"], _
      AdoSubmitConnection)

   ' Display BuildSQLFromXMLNodes output.
   Dim sqlFromXmlNodes As String  = 
      myAdoSubmitConnection.BuildSqlFromXmlNodes(queryFieldsNav)
   MessageBox.Show(sqlFromXmlNodes)
End Sub

Comentários

O fragmento de SQL que o método BuildSQLFromXMLNodes gera é uma cláusula SQL WHERE na forma de campo = pares de valor. O nó XML que você especifica para o input parâmetro deve ser descendente do nó dfs:queryFields do formulário. Por exemplo, se o usuário consultasse a tabela Funcionários do banco de dados Northwind inserindo Davolio e Nancy nos campos de consulta para os campos Sobrenome e Nome , o fragmento SQL retornado pelo método BuildSQLFromXmlNode seria:

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

Você pode adicionar o fragmento de texto de comando SQL à cadeia de comando SQL existente do objeto ADOSubmitConnection usando a Command propriedade.

Observação: para determinar a expressão XPath para a tabela que contém os valores do campo de consulta a serem passados para o input parâmetro, exiba o painel de tarefas Fonte de Dados, expanda o grupo queryFields, clique com o botão direito do mouse na tabela que contém os campos de consulta com os quais você deseja trabalhar e clique em Copiar XPath.

This member can be accessed only by forms running in the same domain as the currently open form, or by forms that have been granted cross-domain permissions.

This type or member can be accessed only from code running in forms opened in Microsoft InfoPath Filler.

Aplica-se a