Compartilhar via


AdoQueryConnection.BuildSqlFromXmlNodes(XPathNavigator) Método

Definição

Retorna um fragmento de texto de comando SQL analisado do nó XML especificado que contém valores de campos de consulta.

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 que é posicionado no nó dfs:queryFields XML que contém os valores do campo de consulta a serem convertidos em um fragmento SQL.

Retornos

Uma cláusula WHERE criada a partir dos valores de campos de consulta no 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 de campo de consulta. O nó de entrada contém colunas (atributos XML) que não estão presentes na fonte de dados que está sendo consultada.

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 para um controle Button usa o método BuildSQLFromXMLNodes da classe ADOQueryConnection 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 chamada "Conexão principal" com a 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 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

Comentários

O fragmento de SQL que o método BuildSQLFromXmlNodes gera é uma cláusula SQL WHERE na forma de fieldname = pares de valor. Se houver mais de um par, cada par será combinado com o operador AND. 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')

O nó XML que você especifica para o input parâmetro deve ser descendente do nó dfs:queryFields do formulário. Você pode adicionar o fragmento de texto de comando SQL à cadeia de comando SQL existente do objeto ADOQueryConnection 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 from code running in forms opened in Microsoft InfoPath Filler or in a Web browser.

Aplica-se a