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


Занятие 2. Определение набора данных отчета для набора данных ADO.NET из веб-службы

Добавления: 17 июля 2006 г.

На этом занятии создается соединение источника данных с веб-службой, возвращающей XML-объект System.Data.DataSet. Можно создать и развернуть веб-службу, которая возвращает XML-объект System.Data.DataSet, или использовать существующую доступную веб-службу. Указывается строка запроса, определяющая данные, которые необходимо получить для набора данных отчета из XML-объекта System.Data.DataSet, возвращаемого веб-службой.

В этом учебнике веб-служба получает сведения о сотруднике и менеджере с помощью вызова хранимой процедуры uspGetEmployeeManagers в образце базы данных AdventureWorks. Эта хранимая процедура принимает значение EmployeeID и формирует результирующий набор, который рекурсивно показывает связи сотрудник-менеджер вплоть до сотрудника высшего уровня.

Процедуры

Создание веб-службы, возвращающей набор данных ADO.NET (необязательно)

  1. В среде Microsoft Visual Studio в меню Файл выберите пункт Создать, затем выберите Веб-узел.

    Откроется диалоговое окно Создание веб-узла.

    Aa337489.note(ru-ru,SQL.90).gifПримечание.
    Если параметр Веб-узел не виден, проверьте требования в разделе Учебник. Использование XML-данных в отчете.
  2. В области Шаблоны выберите Веб-служба ASP.NET.

  3. В раскрывающемся списке Расположение выберите HTTP.

  4. В раскрывающемся списке Язык выберите Visual Basic или C#.

  5. Нажмите кнопку Обзор.

    Откроется диалоговое окно Выбор расположения.

  6. В области веб-узла Открыть веб-узел убедитесь, что выбран переключатель Локальные службы IIS.

  7. В дереве веб-узла перейдите к родительской папке нового веб-узла.

  8. Нажмите кнопку Создать веб-приложение.

  9. Введите имя для веб-узла.

  10. Нажмите кнопку Открыть.

  11. Нажмите кнопку ОК.

    Кодовая страница App_Code/Service для выбранного на шаге 4 языка откроется в среде Visual Studio, при этом будет показан образец WebMethod HelloWorld

    Aa337489.note(ru-ru,SQL.90).gifПримечание.
    Пространство имен по умолчанию — http://tempuri.org/. Это пространство имен будет использоваться в запросе, когда ниже будет определен набор данных отчета. Если изменить значение по умолчанию, придется изменить и запрос.
  12. В начале исходного файла для Visual Basic или C# добавьте следующие две ссылки на пространство имен.

    using System.Data;
    using System.Data.SqlClient;
    
    Imports System.Data
    Imports System.Data.SqlClient
    
  13. Замените HelloWorld WebMethod следующим кодом на Visual Basic или C#.

    [WebMethod]
    public DataSet  GetEmployeeManagers(String EmployeeID)
    {
      Int32 val = Int32.Parse(EmployeeID);
      DataSet ds = new DataSet("Results");
      try
      {
        if (val < 1)
        val = 1;
        else if (val > 290) val = 290;
        SqlDataAdapter da = new 
    SqlDataAdapter(@"uspGetEmployeeManagers " + val.ToString(),
      @"Data Source=localhost; Initial Catalog=AdventureWorks; " +
      @"Integrated Security=true");
      da.Fill(ds);
      }
      catch (Exception e)
      {
        throw;
      }
      return ds;
     }
    
    <WebMethod()> _
    Public Function GetEmployeeManagers(ByVal EmployeeID As String) As DataSet
      Dim ds As DataSet = New DataSet("Results")
      Try
        Dim val As Integer = Integer.Parse(EmployeeID)
        If (val < 1) Then
           val = 1
        ElseIf (val > 290) Then
           val = 290
        End If
        Dim da As SqlDataAdapter = _
            New SqlDataAdapter("uspGetEmployeeManagers " + _
             val.ToString(), _
           "Data Source=localhost; Initial Catalog=AdventureWorks; " + _
                "Integrated Security=true")
            da.Fill(ds)
        Catch e As Exception
        Throw
      End Try
      Return ds
    End Function
    
  14. В меню Построить выберите команду Построить веб-узел.

  15. В меню Построить выберите команду Опубликовать веб-узел.

Проверка опубликованной веб-службы (необязательно)

  1. Откройте обозреватель Internet Explorer.

  2. В строке Адрес введите URL-адрес своей веб-службы.

    Например: https://localhost/XMLTutorial/Service.asmx.

    Откроется страница веб-службы по умолчанию.

  3. Щелкните GetEmployeeManagersFromAdventureWorks.

  4. Введите значение EmployeeID в диапазоне от 1 до 290.

  5. Нажмите кнопку Вызвать.

    Веб-служба получает набор данных, содержащий менеджеров из базы данных AdventureWorks с помощью хранимой процедуры uspGetEmployeeManagers.

Aa337489.note(ru-ru,SQL.90).gifПримечание.
Если появится сообщение «Разрешение "Выполнение" запрещено для объекта», то необходимо предоставить разрешение на выполнение хранимой процедуры AdventureWorks для пользователя ASPNETUser, как описывается в следующей процедуре.

Предоставление разрешения на выполнение хранимой процедуры (необязательно)

  1. Откройте среду Microsoft SQL Server Management Studio.

  2. Подключитесь к компоненту Database Engine, где установлен образец базы данных AdventureWorks.

  3. В обозревателе объектов последовательно разверните узлы Базы данных, AdventureWorks, Программирование и Хранимые процедуры.

  4. Щелкните правой кнопкой мыши dbo.uspGetEmployeeManagers и выберите Свойства.

  5. В области Выбор страницы нажмите кнопку Разрешения.

  6. Нажмите кнопку Добавить для области Пользователи или роли.

  7. Нажмите кнопку Обзор. Выберите [ASPNETUser].

  8. Нажмите кнопку ОК.

    Было добавлено разрешение на выполнение хранимой процедуры uspGetEmployeeManagers для пользователя, запускающего ASP.NET.

Определение набора данных отчета для веб-службы

  1. Запустите конструктор отчетов и откройте проект сервера отчетов, созданный в этом учебнике.

  2. В представлении «Данные» выберите Новый набор данных. Введите имя набора данных (например XMLWebDataSet).

  3. В диалоговом окне Набор данных в поле Источник данных выберите Создать источник данных. Откроется диалоговое окно Источник данных.

  4. Введите имя источника данных (например XMLWebDataSource).

  5. В пункте Тип выберите XML.

  6. В поле Строка соединения введите следующий URL-адрес веб-службы сервера отчетов:

    https://localhost/XMLTutorial/Service.asmx

  7. На вкладке Учетные данные выберите Использовать встроенную проверку подлинности Windows.

  8. Нажмите кнопку ОК для сохранения изменений и выхода из диалогового окна Источник данных.

  9. В меню Отчет выберите команду Параметры отчета. Откроется диалоговое окно Параметры отчета.

  10. Нажмите кнопку Добавить.

  11. В разделе Свойства в текстовом поле Имя введите EmployeeID.

  12. В текстовое поле Запрос введите Employee ID.

  13. Нажмите кнопку «ОК».

  14. На вкладке «Данные» нажмите кнопку «Изменить выбранный набор данных (...)» на панели инструментов. Откроется диалоговое окно «Набор данных».

  15. Перейдите на вкладку «Параметры».

  16. В столбце Имя введите EmployeeID.

  17. Щелкните текстовое поле Значение, чтобы открыть раскрывающийся список, и выберите =Parameters!EmployeeID.Value. При этом параметр набора данных будет сопоставлен параметру отчета.

  18. Нажмите кнопку «ОК».

  19. В диалоговом окне Набор данных введите следующий запрос, используя сведения о версии пространства имен, которая была проверена на шаге 1:

    <Query>
        <SoapAction>
            http://tempuri.org/GetEmployeeManagers
        </SoapAction>
        <Method Namespace="http://tempuri.org/" 
            Name="GetEmployeeManagers">
        </Method>
    </Query>
    
  20. Нажмите кнопку Выполнить (!) на панели инструментов. Откроется диалоговое окно Определение параметров запроса.

  21. В столбце Значение параметра введите число EmployeeID в диапазоне от 1 до 290.

  22. Нажмите кнопку ОК. Набор данных будет добавлен в окно «Наборы данных».

  23. Просмотрите результирующий набор. По умолчанию запрос извлекает данные из элементов и атрибутов XML-данных по направлению к конечному узлу по первому XML-пути, найденному в наборе данных.

  24. Вставьте следующий элемент ElementPath в область «Запрос» непосредственно после тега <Query>.

    <ElementPath IgnoreNamespaces="True">
        GetEmployeeManagersResponse {}/
        GetEmployeeManagersResult/diffgram{}/
        Results {}/Table 
    </ElementPath>
    

    Это предоставляет запросу путь к элементу, который указывает, какие элементы использовать для получения данных в результирующий набор. В этом случае пустые скобки ({}) после узлов GetEmployeeManagersResponse, GetEmployeeManagersResult, diffgram и Results указывают запросу пропускать данные из этих узлов. Узел Table без скобок указывает запросу извлекать все узлы и атрибуты для этого узла.

    Aa337489.note(ru-ru,SQL.90).gifПримечание.
    Чтобы указать, какие элементы узла Table получать для коллекции полей набора данных, перечислите их после элемента Table внутри фигурных скобок, как показано в следующем примере: Table {FirstName, LastName, EmployeeID, ManagerID, RecursionLevel}.
  25. Нажмите кнопку Выполнить (!) для просмотра результирующего набора. Изменения, сделанные в элементе ElementPath, изменяют результирующий набор, возвращаемый запросом.

  26. Если вы удовлетворены результирующим набором, нажмите кнопку Обновить поля (Обновление полей набора данных) на панели инструментов. Таким образом сохраняется определение отчета и обновляется представление полей в окне Наборы данных отчета, показывающем все доступные поля.

Следующие шаги

Был успешно определен набор данных отчета из XML-объекта System.Data.DataSet object, возвращаемого веб-службой. При обработке отчета данные каждого XML-элемента Table и его атрибутов извлекаются из веб-службы. Далее будет создан набор данных отчета из внедренного в отчет XML-документа. См. раздел Занятие 3. Определение набора данных отчета из внедренных XML-данных.

См. также

Основные понятия

Учебники по службам Reporting Services

Другие ресурсы

Определение наборов данных отчета для XML-данных
Соединение с источником данных
Определение наборов данных отчета
Как создать или изменить источник данных, связанный с отчетом (конструктор отчетов)
Как создать набор данных (конструктор отчетов)
Работа с полями набора данных отчета
Как добавить, изменить или удалить поле в окне «Наборы данных» (конструктор отчетов)
Наборы данных отчета (конструктор отчетов)

Справка и поддержка

Получение помощи по SQL Server 2005