Lección 2: Definir un conjunto de datos de informe para un conjunto de datos ADO.NET desde un servicio Web

Nuevo: 17 de julio de 2006

En esta lección creará una conexión de origen de datos a un servicio Web que devuelve un objeto System.Data.DataSet XML. Creará e implementará un servicio Web que devuelve un objeto System.Data.DataSet XML o utilizará un servicio Web existente disponible. Definirá una cadena de consulta que especifica los datos que desea recuperar para un conjunto de datos de informe desde el System.Data.DataSet XML que devolvió el servicio Web.

En este tutorial, un servicio Web recupera información sobre jefes y empleados mediante una llamada al procedimiento almacenado uspGetEmployeeManagers en la base de datos de ejemplo AdventureWorks. Este procedimiento almacenado acepta un valor EmployeeID y produce un conjunto de resultados que muestra las relaciones jefe-empleado mediante una jerarquía recursiva hasta el empleado del nivel superior.

Procedimientos

Para crear un servicio Web que devuelve un conjunto de datos ADO.NET (opcional)

  1. En Microsoft Visual Studio, en el menú Archivo, haga clic en Nuevo y luego en Sitio Web.

    Se abrirá el cuadro de diálogo Agregar sitio Web.

    [!NOTA] Si no ve la opción Sitio Web, revise la sección de requisitos del Tutorial: Usar datos XML en un informe.

  2. En el panel Plantillas, seleccione Servicio Web ASP.NET.

  3. En la lista desplegable Ubicación, seleccione HTTP.

  4. En la lista desplegable Lenguaje, seleccione Visual Basic o C#.

  5. Haga clic en el botón Examinar.

    Se abrirá el cuadro de diálogo Seleccionar ubicación.

  6. En el panel Abrir sitio Web, compruebe que el botón IIS local está seleccionado.

  7. En el control de árbol del sitio Web, desplácese a la carpeta principal de este nuevo sitio Web.

  8. Haga clic en el botón Crear nueva aplicación Web.

  9. Escriba un nombre para el sitio Web.

  10. Haga clic en Abrir.

  11. Haga clic en Aceptar.

    La página de códigos App_Code/Service para el lenguaje de programación que seleccionó en el paso 4 se abrirá en Visual Studio y mostrará el WebMethod de ejemplo HelloWorld.

    [!NOTA] El espacio de nombres predeterminado es http://tempuri.org/. Este espacio de nombres se utilizará en la consulta cuando defina un conjunto de datos de informe a continuación. Si cambia este valor predeterminado, necesitará cambiar la consulta.

  12. Agregue las dos siguientes referencias de espacio de nombres al inicio del archivo de origen para Visual Basic o C#.

    using System.Data;
    using System.Data.SqlClient;
    
    Imports System.Data
    Imports System.Data.SqlClient
    
  13. Reemplace el WebMethod HelloWorld con el siguiente código Visual Basic o 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. En el menú Generar, haga clic en Generar sitio Web.

  15. En el menú Generar, haga clic en Publicar sitio Web.

Para probar su servicio Web publicado (opcional)

  1. Abra Internet Explorer.

  2. En la barra Dirección, escriba la dirección URL del servicio Web.

    Por ejemplo, https://localhost/XMLTutorial/Service.asmx.

    Aparecerá la página predeterminada del servicio Web.

  3. Haga clic en GetEmployeeManagersFromAdventureWorks.

  4. Escriba un valor para EmployeeID entre 1 y 290.

  5. Haga clic en Invocar.

    El servicio Web recupera un conjunto de datos con los jefes de los empleados de la base de datos AdventureWorks mediante el uso del procedimiento almacenado uspGetEmployeeManagers.

[!NOTA] Si obtiene el mensaje "Se ha denegado el permiso de ejecución en el objeto", necesitará conceder el permiso de ejecución en el procedimiento almacenado de AdventureWorks para ASPNETUser, como se describe en el siguiente procedimiento.

Para conceder permisos de ejecución para el procedimiento almacenado (opcional)

  1. Abra Microsoft SQL Server Management Studio.

  2. Conéctese al Motor de base de datos en el que está instalado la base de datos de ejemplo AdventureWorks.

  3. En el Explorador de objetos, expanda el nodo Bases de datos, el nodo AdventureWorks, el nodo Programación y, por último, el nodo Procedimientos almacenados.

  4. Haga clic con el botón secundario en dbo.uspGetEmployeeManagers y seleccione Propiedades.

  5. En el panel Seleccionar una página, haga clic en Permisos.

  6. En el panel Usuarios o funciones, haga clic en el botón Agregar.

  7. Haga clic en el botón Examinar. Seleccione [ASPNETUser].

  8. Haga clic en Aceptar.

    Ha agregado un permiso para ejecutar el procedimiento almacenado uspGetEmployeeManagers a todos aquellos que ejecutan ASP.NET .

Para definir un conjunto de datos de informe para el servicio Web

  1. Inicie el Diseñador de informes y abra el proyecto del servidor de informes creado para este tutorial.

  2. En la vista Datos, seleccione Nuevo conjunto de datos. Escriba un nombre para el conjunto de datos (por ejemplo, XMLWebDataSet).

  3. En el cuadro de diálogo Conjunto de datos, en Origen de datos, seleccione Nuevo origen de datos. Aparecerá el cuadro de diálogo Origen de datos.

  4. Escriba un nombre para el origen de datos (por ejemplo, XMLWebDataSource).

  5. En Tipo, seleccione XML.

  6. En Cadena de conexión, escriba la siguiente dirección URL del servicio Web del servidor de informes:

    https://localhost/XMLTutorial/Service.asmx

  7. En la ficha Credenciales, seleccione Utilizar autenticación de Windows (seguridad integrada).

  8. Haga clic en Aceptar para guardar los cambios y cerrar el cuadro de diálogo Origen de datos.

  9. En el menú Informe, haga clic en Parámetros del informe. Se abrirá el cuadro de diálogo Parámetros del informe.

  10. Haga clic en Agregar.

  11. En la sección Propiedades, en el cuadro de texto Nombre, escriba EmployeeID.

  12. En el cuadro de texto Pedir datos, escriba Employee ID.

  13. Haga clic en Aceptar.

  14. En la ficha Datos, haga clic en el botón Editar el conjunto de datos seleccionado (…) en la barra de herramientas. Se abrirá el cuadro de diálogo Conjunto de datos.

  15. Haga clic en la ficha Parámetros.

  16. En la columna Nombre, escriba EmployeeID.

  17. Haga clic en el cuadro de texto Valor para habilitar la lista desplegable y seleccione =Parameters!EmployeeID.Value. Esto asigna el parámetro del conjunto de datos al parámetro de informe.

  18. Haga clic en Aceptar.

  19. En el cuadro de diálogo Conjunto de datos, escriba la consulta siguiente usando la información de versión del espacio de nombres que comprobó en el paso 1:

    <Query>
        <SoapAction>
            http://tempuri.org/GetEmployeeManagers
        </SoapAction>
        <Method Namespace="http://tempuri.org/" 
            Name="GetEmployeeManagers">
        </Method>
    </Query>
    
  20. Haga clic en el botón Ejecutar (!) en la barra de herramientas. Se abrirá el cuadro de diálogo Definir los parámetros de la consulta.

  21. En la columna Valor de parámetro, escriba un valor para EmployeeID entre 1 y 290.

  22. Haga clic en Aceptar. El conjunto de datos se agrega a la ventana Conjuntos de datos.

  23. Examine el conjunto de resultados. De forma predeterminada, una consulta extrae datos de todos los atributos y elementos XML al nodo hoja en la primera ruta XML que encuentra en el conjunto de datos.

  24. Pegue el siguiente elemento ElementPath en el panel Consulta inmediatamente después de la etiqueta <Consulta>.

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

    Esto proporciona a la consulta una ruta de acceso de elemento al especificar los elementos que se utilizarán para recuperar datos del conjunto de resultados. En este caso, las llaves vacías ({}) a continuación de los nodos GetEmployeeManagersResponse, GetEmployeeManagersResult, diffgram y Results indican a la consulta que omita los datos de estos nodos. El nodo Tabla sin llaves indica a la consulta que recupere todos los nodos y atributos para ese nodo.

    [!NOTA] Para especificar los elementos Table que se recuperarán para la colección de campos del conjunto de datos, enumérelos a continuación del elemento Table entre llaves, como se muestra en el siguiente ejemplo: Table {FirstName, LastName, EmployeeID, ManagerID, RecursionLevel}.

  25. Haga clic en Ejecutar (!) para ver el conjunto de resultados. Los cambios realizados en el elemento ElementPath modifican el conjunto de resultados que devuelve la consulta.

  26. Cuando esté satisfecho con el conjunto de resultados, haga clic en el botón Actualizar campos (Actualizar campos de conjunto de datos) en la barra de herramientas. De este modo se guarda la definición del informe y se actualiza la vista de los campos en la ventana Conjuntos de datos de informe para mostrar todos los campos que puede utilizar.

Pasos siguientes

Ha definido correctamente el conjunto de datos de informe a partir de un System.Data.DataSet object XML devuelto por un servicio Web. Cuando se procesa el informe, se recuperan los datos de cada elemento Table XML y sus atributos del servicio Web. A continuación creará un conjunto de datos de informe a partir de datos XML incrustados en el informe. Vea Lección 3: Definir un conjunto de datos de informe a partir de datos XML incrustados.

Vea también

Conceptos

Tutoriales de Reporting Services

Otros recursos

Definir conjuntos de datos de informe para datos XML
Conectar con un origen de datos
Definir conjuntos de datos de informe
Cómo crear o editar un origen de datos específico del informe (Diseñador de informes)
Cómo crear un conjunto de datos (Diseñador de informes)
Trabajar con campos en un conjunto de informes
Cómo agregar, editar o eliminar un campo en la ventana Conjuntos de datos (Diseñador de informes)
Conjuntos de datos de informe (Diseñador de informes)

Ayuda e información

Obtener ayuda sobre SQL Server 2005