Поделиться через


Метод AdoQueryConnection.BuildSqlFromXmlNodes

Возвращает фрагмент текста команды SQL с выполненным синтаксическим анализом с указанного узла XML, который содержит значения полей запросов.

Пространство имен: Microsoft.Office.InfoPath
Сборка: Microsoft.Office.InfoPath (в microsoft.office.infopath.dll)

Синтаксис

'Декларация
Public MustOverride Function BuildSqlFromXmlNodes ( _
    input As XPathNavigator _
) As String
'Применение
Dim instance As AdoQueryConnection
Dim input As XPathNavigator
Dim returnValue As String

returnValue = instance.BuildSqlFromXmlNodes(input)
public abstract string BuildSqlFromXmlNodes (
    XPathNavigator input
)

Параметры

  • input
    Объект XPathNavigator, расположенный в узле XML dfs:queryFields, содержащем значения полей запросов, которые будут преобразованы во фрагмент SQL.

Возвращаемое значение

Предложение WHERE, построенное из значений полей запросов в указанном узле.

Исключения

Тип исключения Условие

InvalidOperationException

Выполнено одно из следующих условий:

  • Невозможно выполнить синтаксический анализ строки команды SQL, созданной из узла ввода.

  • Узел ввода не является таблицей значений полей запросов.

  • Узел ввода содержит столбцы (атрибуты XML), отсутствующие источнике данных, на который выполняется запрос.

ArgumentNullException

Этому методу передан параметр .

ArgumentException

Этому методу передан недопустимый параметр . Например, неправильный тип или формат.

Заметки

Фрагмент SQL, который создает метод BuildSQLFromXmlNodes, является предложением WHERE SQL в форме пар = . Если имеется несколько пар, каждая пара соединяется с помощью оператора AND. Например, если пользователь запросил таблицу Employees базы данных Northwind, введя Davolio и Nancy в поля запроса полей Фамилия и Имя, фрагмент SQL, возвращенный методом BuildSQLFromXmlNode, будет следующим:

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

Узел XML, который указывается для параметра input, должен быть потомком узла dfs:queryFields формы. Можно добавить фрагмент текста команды SQL к существующей строке команды SQL объекта ADOQueryConnection с помощью свойства Command.

ЗаметкаЗаметка

Чтобы определить выражение XPath для таблицы, содержащей значения полей запроса, для передачи параметра input, откройте область задач , разверните группу , щелкните правой кнопкой таблицу, содержащую поля запроса, с которыми нужно работать, и затем выберите Copy XPath.

Доступ к этому члену имеется только у форм, запускаемых на том же домене, что и открытая в настоящий момент форма, или у форм, которым были присвоены междоменные разрешения.

Доступ к этому типу или члену имеется из программы, работающей в формах, открытых в Microsoft Office InfoPath 2007 или в веб-обозревателе.

Пример

В следующем примере обработчик события элемента управления Button использует метод BuildSQLFromXMLNodes класса ADOQueryConnection для синтаксического анализа текущих значений полей запроса и отображения их в окне сообщения.

В этом примере предполагается, что шаблон формы содержит подключение данных с именем "Основное подключение" к таблице Employees в образце базы данных Northwind SQL Server.

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

См. также

Ссылка

Класс AdoQueryConnection
Члены AdoQueryConnection
Пространство имен Microsoft.Office.InfoPath