Как использовать подстановочные знаки в запросе формы InfoPath при привязке к источнику данных ADO

Переводы статьи Переводы статьи
Код статьи: 826992 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

Microsoft Office InfoPath упрощает привязку к Microsoft SQL Server или Microsoft Access. InfoPath может автоматически создавать запросы таблиц простой, непосредственно в базу данных SQL или к базе данных Microsoft Access с помощью объектов данных ActiveX (ADO). InfoPath позволяет результаты запроса отображаются и редактируются в форме.

Для более сложных запросов InfoPath делает несколько методов программирования доступным для опытных пользователей и разработчиков. Эти методы программирования включить опытный пользователь или разработчик может создавать формы, которые может выполнять пользовательский запрос, который использует более сложный синтаксис SQL. Одним из примеров распространенных пользовательских запросов использует подстановочные знаки для поиска записей, частично соответствующие указанным критериям.

Ниже показано, как использовать управляемый код в InfoPath для выполнения поиска символов подстановки в таблицу SQL или в таблицу Microsoft Access с помощью ADOAdapter объект.

Дополнительная информация

InfoPath позволяет привести подключение запроса данных какAdoQueryConnection объект. Это предоставляет методы для получения и установки сведения о следующих элементах:
  • Строка подключения
  • Текст команды SQL
  • Значение тайм-аута
С помощью AdoQueryConnectionОбъект, можно изменить инструкцию SQL для выполнения более сложных операций, таких как запрос, который использует подстановочные знаки.

Информация в данной статье относится к базам данных SQL и для доступа К базам данных. В следующих примерах используется базы данных «Борей», входящий в Microsoft Office Access 2007 и Microsoft Office Access 2010.

Создание базы данных

Если не были еще используется образец базы данных "Борей" из версии InfoPath, создание локальной базы данных. Чтобы сделать это, выполните следующие действия.

  1. Запустите приложение Microsoft Office Access.
  2. ВДоступные шаблоныраздел выбораОбразцы шаблонов.
  3. Выберите «Борей» базы данных, а затем нажмите кнопкуСоздание.

Макет формы, запрос к базе данных

В этом разделе описывается, как запрос формы в InfoPath. В этом примере используется таблица «Поставщики» из базы данных "Борей". Для создания формы, которая запрашивает эту таблицу, выполните действия, предоставляемые для вашей версии InfoPath.

InfoPath 2010

Создание шаблона формы и затем задать язык кода шаблона формы в C#. Чтобы сделать это, выполните следующие действия.
  1. Начало 2010 конструктора InfoPath.
  2. ВДополнительные шаблоны формраздел выбораБазы данных, а затем нажмите кнопку Конструктор форм.
  3. В мастере подключения данных нажмите кнопку Выберите базу данных.
  4. Перейдите в папку, куда был сохранен в базе данных Northwind, выберите файл Northwind.accdb и нажмите кнопку Открыть.
  5. В Выберите таблицу Выберите окно, перейдите в конец списка Поставщики Таблица, а затем нажмите кнопку ОК.
  6. Убедитесь, что выбраны следующие поля в Поставщики Таблица:
    • ИДЕНТИФИКАТОР
    • Компания
    • Фамилия
    • Имя
    • Job_Title
    • Телефон раб.
  7. Нажмите кнопку Далее.
  8. Нажмите кнопку Окончаниедля завершения работы мастера подключения данных.
  9. В Поляобласти, разверните узелdataFieldsузел, а затем выделите Добавитьd: поставщикиузел, чтобы поле в группеВыполнение запросаНажатие кнопки.
  10. В ответ на запрос, нажмите кнопку для выбора Повторяющаяся таблица.
  11. ВПоляобласти, разверните узелqueryFieldsузел, а затем выделите Добавитьq: поставщики узел, чтобы поле в группеНовая записьНажатие кнопки. (Автоматически добавляется раздел, который содержит элементы управления.)
  12. В группеРазработчикЩелкнитеЯзык.
  13. ВЯзык программированияв области разделаЯзык кода шаблона формы, выберите C#, а затем нажмите кнопкуОК.

InfoPath 2007

Создание шаблона формы. Чтобы сделать это, выполните следующие действия.
  1. Запустите InfoPath 2007.
  2. В области переходовЗаполнение формы диалоговое окно, нажмите кнопку Разработка шаблона формы.
  3. В Разработка шаблона формы окно, Нажмите кнопку Поле не заполнено, и выберите команду ОК.
  4. На Сервис меню, нажмите кнопку Данные Подключения, а затем нажмите кнопку Добавить. В Данные Подключение Откроется диалоговое окно.
  5. В Подключение к данным окна, установите Выберите Создать новое подключение флажок в поле, щелкните Выберите Прием данных Установите флажок и нажмите кнопкуДалее.
  6. Выберите База данных Microsoft SQL Server ( или только в Microsoft Office Access) Установите флажок и нажмите кнопкуДалее.
  7. Нажмите кнопку Выберите базу данных.
  8. Перейдите в папку, куда был сохранен в базе данных Northwind, выберите папку и нажмите кнопку Открыть.
  9. В Выберите таблицуВыберите диалоговое окно, перейдите в конец спискаПоставщикиТаблица, а затем нажмите кнопкуОК.
  10. В Структура источника данныхсписок, убедитесь, что выбраны следующие заголовки столбцов:
    • ИДЕНТИФИКАТОР
    • Компания
    • Имя
    • Фамилия
    • Job_Title
    • Телефон раб.
  11. Нажмите кнопкуДалее.
  12. Нажмите кнопку Сначала представление данных, а затем Нажмите кнопку Окончание Чтобы выйти из мастера настройки источника данных и построения Форма по умолчанию.
  13. В Источник данных область задач, дважды щелкните значокdataFields.
  14. Перемещение d: поставщики узел Данные Представление в форме.
  15. При появлении соответствующего запроса нажмите Добавить d: поставщики как в Повторяющаяся таблица.
  16. На Представление меню, нажмите кнопку Управление Представления.
  17. В Представления область задач, нажмите кнопкуЗапрос Просмотр.
  18. На Сервис меню, нажмите кнопку Параметры формы.
  19. В Категория Выберите Программирование.
  20. В Язык кода шаблона формы Выберите C#, а затем нажмите кнопку ОК.

Изменение формы для выполнения пользовательского запроса

В этом разделе описывается, как для поиска записей, значения которых напоминают строку поиска, но не точно соответствовать строка. Для поиска записей, которые имеют одинаковые значения, можно использовать строку подстановочных знаков иКАК ИИнструкция SQL-запроса. При строке подстановочных знаков иКАК Иоператор используются вместе, они могут найти записи, на основе критерия поиска подстановочных знаков. Затем эти записи возвращаются в InfoPath.

Чтобы изменить форму, чтобы запустить пользовательский запросДолжностьполе InfoPath 2010 и InfoPath 2007, выполните следующие действия:

  1. В режиме конструктора щелкните правой кнопкой мыши Выполнение запроса Кнопка, а затем нажмите кнопку Свойства кнопки.
  2. Внесите следующие изменения:
    • Изменение Действие кнопкиПравила и пользовательский код
    • Изменение МеткаКомуВыполнение запроса
    • Изменение ИДЕНТИФИКАТОРКомуbtnQuery
  3. Нажмите кнопку Редактировать код формы кнопку, чтобы применить изменения, а затем запустите Visual Studio Tools для приложений редактора. Он будет открыт обработчик событий btnQuery «Clicked».
  4. Замените комментарий "/ / Разместите здесь свой код" со следующим кодом:
    //Create an XPathNavigator object for the main data source
    XPathNavigator xnMain = this.MainDataSource.CreateNavigator();
     
    //Create an AdoQueryConnection from the main data source by "casting" the default
    //data connection to an "AdoQueryConnection"
    AdoQueryConnection cn = (AdoQueryConnection)this.DataConnections["Main connection"];
     
    //Obtain the default SQL command for the form.
    string strOrigSQLCommand = cn.Command.ToString();
     
     
     
    // Obtain the query node that you want to change.
    XPathNavigator xnSuppliersQuery = xnMain.SelectSingleNode("/dfs:myFields/dfs:queryFields/q:Suppliers", this.NamespaceManager);
     
    //Obtain the text that was entered for the wildcard character search, and then clear the current query parameter so that InfoPath will leave the current query parameter blank.
    string strJobTitle = xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).SetValue(string.Empty);
     
    //Have InfoPath construct an SQL command that is based on all other field values.
    string strMySQLCommand = cn.BuildSqlFromXmlNodes(xnSuppliersQuery);
     
    //Save the other query items, and then clear the other query items before the next query.
    string strSupplierID = xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).SetValue(string.Empty);
    string strCompany = xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).SetValue(string.Empty);
    string strLastName = xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).SetValue(string.Empty);
    string strFirstName = xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).SetValue(string.Empty);
    string strBusPhone = xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).Value;
    xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).SetValue(string.Empty);
     
    //Add Job_Title to the query so that Job_Title can support wildcard characters.
    if (strJobTitle != string.Empty)
    {
           if (strMySQLCommand != string.Empty)
                  strMySQLCommand += " AND ";
     
           //Check whether the user entered the wildcard character (%) as part of the title.
    if(strJobTitle.Contains("%"))
                 strMySQLCommand += "[Job Title] LIKE '" + strJobTitle + "'";
           else
                 strMySQLCommand += "[Job Title] LIKE '" + strJobTitle + "%'";               
    }
     
    //Construct the full query string.
    string strSQLQuery = strOrigSQLCommand;
    if (strMySQLCommand != string.Empty)
    strSQLQuery += " WHERE " + strMySQLCommand;
     
    //Set the command and run the query.
    cn.Command = strSQLQuery;
    cn.Execute();
     
    //Restore all the user entries to the Query fields so that the user entries will 
    //be available if you want to change and to rerun the query.
    xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).SetValue(strSupplierID);
    xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).SetValue(strCompany);
    xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).SetValue(strLastName);
    xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).SetValue(strFirstName);
    xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).SetValue(strJobTitle);
    xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).SetValue(strBusPhone);
     
    //Restore the default table command (for the next time).
    cn.Command = strOrigSQLCommand;
     
    //Clean up
    xnMain = null;
    cn = null;
    xnSuppliersQuery = null;
  5. Постройте проект, нажав кнопку Построениеэлемент меню и выбрав команду ПостроениеНазвание проекта.
  6. Сохранить изменения и вернуться в InfoPath.

Проверка кода

Пример кода, представленного в предыдущей процедуре позволяет выполнить поиск подстановочных знаковДолжность в поле Поставщики Таблица. Предоставляя такие как запрос поиска Продажи %, все записи, возвращаемые будет иметь контакты в месте продажи. Эти контакты могут быть представителем, руководитель или агент до тех пор, пока их записи удовлетворяет условию поискаПродажи %. Контакты, которые не имеют «Продажи» Должность поле отфильтровываются.


Убедитесь, что все записи, возвращаемые контакты в месте продажи, выполните следующие действия.
  1. InfoPath 2010:НаДомашняя страницавкладки на ленте, нажмите кнопкуПредварительный просмотр.
    InfoPath 2007:На панели инструментов нажмите кнопку Предварительный просмотр, а затем нажмите кнопкуФорма.
  2. В Должность поля в запросе, тип Продажи %.
  3. Нажмите кнопку Запустите запрос.

Записи, возвращаемые пользовательского запроса являются все контакты в месте продажи.

Свойства

Код статьи: 826992 - Последний отзыв: 15 июня 2011 г. - Revision: 5.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
Ключевые слова: 
kbhowto kbmt KB826992 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:826992

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com