Condividi tramite


Lezione 2: Definizione del set di dati di un report per un set di dati ADO.NET da un servizio Web

Data creazione: 17 luglio 2006

In questa lezione verrà creata una connessione origine dati a un servizio Web che restituisce un oggetto XML System.Data.DataSet. È possibile creare e distribuire un servizio Web che restituisce un oggetto XML System.Data.DataSet oppure utilizzare un servizio Web esistente. Verrà inoltre definita una stringa di query che specifica i dati che si desidera recuperare per un set di dati del report dall'oggetto XML System.Data.DataSet restituito dal servizio Web.

In questa esercitazione il servizio Web recupera le informazioni su dipendenti e dirigenti chiamando la stored procedure uspGetEmployeeManagers nel database di esempio AdventureWorks. Questa stored procedure accetta un valore EmployeeID e restituisce un set di risultati che visualizza in modo ricorsivo la relazione dipendente-dirigente fino al dipendente di massimo livello.

Procedure

Per creare un servizio Web che restituisce un set di dati ADO.NET (facoltativo)

  1. In Microsoft Visual Studio scegliere Nuovo dal menu File e quindi Sito Web.

    Verrà visualizzata la finestra di dialogo Nuovo sito Web.

    [!NOTA] Se l'opzione Sito Web non è visualizzata, vedere la sezione dei requisiti per Esercitazione: Utilizzo di dati XML in un report.

  2. Nel riquadro Modelli selezionare Servizio Web ASP.NET.

  3. Selezionare HTTP nell'elenco a discesa Percorso.

  4. Selezionare Visual Basic o C# nell'elenco a discesa Linguaggio.

  5. Fare clic su Sfoglia.

    Verrà visualizzata la finestra di dialogo Scegli percorso.

  6. Nel riquadro Apri un sito Web verificare che il pulsante IIS locale sia selezionato.

  7. Nel controllo struttura del sito Web passare alla cartella padre del nuovo sito.

  8. Fare clic sul pulsante Crea nuova applicazione Web.

  9. Digitare un nome per il sito Web.

  10. Fare clic su Apri.

  11. Fare clic su OK.

    La tabella codici App_Code/Service per il linguaggio di programmazione selezionato al passaggio 4 verrà visualizzata in Visual Studio, con HelloWorld WebMethod di esempio.

    [!NOTA] Lo spazio dei nomi predefinito è http://tempuri.org/. Questo spazio dei nomi verrà utilizzato nella query quando si definisce il set di dati del report. Se si modifica questo valore predefinito, sarà necessario modificare la query.

  12. Aggiungere i due riferimenti allo spazio dei nomi seguenti all'inizio del file di origine per Visual Basic o C#.

    using System.Data;
    using System.Data.SqlClient;
    
    Imports System.Data
    Imports System.Data.SqlClient
    
  13. Sostituire HelloWorld WebMethod con il codice Visual Basic o C# seguente.

    [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. Scegliere Genera sito Web dal menu Genera.

  15. Scegliere Pubblica sito Web dal menu Genera.

Per testare il servizio Web pubblicato (facoltativo)

  1. Aprire Internet Explorer.

  2. Digitare l'URL del servizio Web nella barra degli indirizzi.

    Ad esempio, https://localhost/XMLTutorial/Service.asmx.

    Verrà visualizzata la pagina predefinita del servizio Web.

  3. Fare clic su GetEmployeeManagersFromAdventureWorks.

  4. Per EmployeeID digitare un valore compreso tra 1 e 290.

  5. Fare clic su Richiama.

    Il servizio Web recupera un set di dati con i dirigenti dal database AdventureWorks utilizzando la stored procedure uspGetEmployeeManagers.

[!NOTA] Se viene visualizzato il messaggio "Autorizzazione di esecuzione negata per l'oggetto", è necessario concedere l'autorizzazione di esecuzione per la stored procedure AdventureWorks per ASPNETUser, come descritto nella procedura seguente.

Per concedere le autorizzazioni di esecuzione per la stored procedure (facoltativo)

  1. Aprire Microsoft SQL Server Management Studio.

  2. Connettersi al Motore di database in cui è installato il database di esempio AdventureWorks.

  3. In Esplora oggetti espandere il nodo Database, quindi il nodo AdventureWorks, quindi il nodo Programmabilità e infine il nodo Stored procedure.

  4. Fare clic con il pulsante destro del mouse su dbo.uspGetEmployeeManagers e scegliere Proprietà.

  5. Nel riquadro Selezione pagina fare clic su Autorizzazioni.

  6. Nel riquadro Utenti o ruoli fare clic sul pulsante Aggiungi.

  7. Fare clic su Sfoglia. Selezionare [ASPNETUser].

  8. Fare clic su OK.

    In questo modo è stata aggiunta l'autorizzazione per gli utenti che utilizzano ASP.NET per eseguire la stored procedure uspGetEmployeeManagers.

Per definire un set di dati del report per il servizio Web

  1. Avviare Progettazione report e aprire il progetto Server report creato per questa esercitazione.

  2. Nella visualizzazione Dati selezionare Nuovo set di dati. Digitare un nome per il set di dati, ad esempio XMLWebDataSet.

  3. Nella finestra di dialogo Set di dati selezionare Nuova origine dati in Origine dati. Verrà visualizzata la finestra di dialogo Origine dati.

  4. Digitare un nome per l'origine dei dati, ad esempio XMLWebDataSource.

  5. In Tipo selezionare XML.

  6. In Stringa di connessione digitare l'URL seguente relativo al servizio Web ReportServer:

    https://localhost/XMLTutorial/Service.asmx

  7. Nella scheda Credenziali selezionare Usa autenticazione di Windows (protezione integrata).

  8. Fare clic su OK per salvare le modifiche e chiudere la finestra di dialogo Origine dati.

  9. Scegliere Parametri report dal menu Report. Verrà visualizzata la finestra di dialogo Parametri report.

  10. Fare clic su Aggiungi.

  11. Nella sezione Proprietà digitare EmployeeID nella casella di testo Nome.

  12. Nella casella di testo Messaggio di richiesta digitare Employee ID.

  13. Fare clic su OK.

  14. Nella scheda Dati fare clic sul pulsante Modifica set di dati selezionato (…) nella barra degli strumenti. Verrà visualizzata la finestra di dialogo Set di dati.

  15. Fare clic sulla scheda Parametri.

  16. Nella colonna Nome digitare EmployeeID.

  17. Fare clic nella casella di testo Valore per attivare l'elenco a discesa e selezionare =Parameters!EmployeeID.Value. In questo modo il parametro del set di dati viene mappato al parametro del report.

  18. Fare clic su OK.

  19. Nella finestra di dialogo Set di dati digitare la query seguente utilizzando le informazioni sulla versione dello spazio dei nomi verificate al passaggio 1:

    <Query>
        <SoapAction>
            http://tempuri.org/GetEmployeeManagers
        </SoapAction>
        <Method Namespace="http://tempuri.org/" 
            Name="GetEmployeeManagers">
        </Method>
    </Query>
    
  20. Fare clic sul pulsante Esegui (!) nella barra degli strumenti. Verrà visualizzata la finestra di dialogo Definisci parametri query.

  21. Nella colonna Valore parametro immettere un numero per EmployeeID compreso tra 1 e 290.

  22. Fare clic su OK. Il set di dati verrà aggiunto nella finestra Set di dati.

  23. Esaminare il set di risultati. Per impostazione predefinita, una query estrae i dati da tutti gli attributi e gli elementi XML fino al nodo foglia nel primo percorso XML trovato nel set di dati.

  24. Incollare l'elemento ElementPath seguente nel riquadro delle query dopo il tag <Query>.

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

    In questo modo, nella query è disponibile un percorso di elemento che specifica gli elementi da utilizzare per il recupero dei dati nel set di risultati. In questo caso, le parentesi vuote ({}) dopo i nodi GetEmployeeManagersResponse, GetEmployeeManagersResult, diffgram e Results indicano alla query di ignorare i dati di questi nodi. Il nodo Table senza parentesi indica alla query di recuperare tutti i nodi e gli attributi di tale nodo.

    [!NOTA] Per specificare quali elementi Table devono essere recuperati per l'insieme dei campi del set di dati, elencarli dopo l'elemento Table racchiusi tra parentesi graffe, come illustrato nell'esempio seguente: Table {FirstName, LastName, EmployeeID, ManagerID, RecursionLevel}.

  25. Fare clic su Esegui (!) per visualizzare il set dei risultati. Le modifiche apportate all'elemento ElementPath modificano il set di risultati restituito dalla query.

  26. Se il set di risultati è quello desiderato, fare clic sul pulsante Aggiorna campi (Aggiornamento dei campi del set di dati) nella barra degli strumenti. In questo modo la definizione del report verrà salvata e verrà aggiornata la visualizzazione dei campi nella finestra Set di dati del report allo scopo di mostrare tutti i campi che è possibile utilizzare.

Passaggi successivi

In questo modo è stato definito un set di dati del report da un System.Data.DataSet object XML restituito da un servizio Web. Quando il report viene elaborato, i dati di ogni elemento Table XML e i relativi attributi vengono recuperati dal servizio Web. Il passaggio successivo consiste nella creazione di un set di dati del report da dati XML incorporati nel report. Vedere Lezione 3: Definizione di un set di dati del report da dati XML incorporati.

Vedere anche

Concetti

Esercitazioni di Reporting Services

Altre risorse

Definizione di set di dati del report per i dati XML
Connessione a un'origine dei dati
Definizione di set di dati del report
Procedura: Creazione o modifica di un'origine dei dati specifica del report (Progettazione report)
Procedura: Creazione di un set di dati (Progettazione report)
Utilizzo dei campi di un set di dati del report
Procedura: Aggiunta, modifica o eliminazione di un campo nella finestra Set di dati (Progettazione report)
Set di dati del report (Progettazione report)

Guida in linea e informazioni

Assistenza su SQL Server 2005