msdn11_capa.jpg

Clique aqui para ler todos os artigos desta edição

 

SQL Server Reporting Services

por John C. Hancock

 

Recursos de geração de relatórios flexíveis são um requisito para a maioria dos aplicativos de negócios e sua integração aos aplicativos Web os tornam mais versáteis do que nunca. Com a versão mais recente do SQL Serverâ„¢ 2000 Reporting Services, você pode facilmente adicionar relatórios provenientes de diferentes fontes de dados. Neste artigo, apresentarei os recursos de autoria de relatórios do Visual Studio® e do Reporting Services e demonstrarei como integrar relatórios em seus aplicativos Web.

O Reporting Services consiste em uma plataforma de geração de relatórios baseada em servidor que é criada no .NET Framework e integrada ao SQL Server 2000, para você integrar os ricos recursos de geração de relatórios a seus aplicativos usando uma API abrangente baseada em Web Services. Embora o servidor de relatórios use SQL Server como o repositório para relatórios, é possível usar qualquer fonte de dados com um provedor OLE DB, ODBC ou ADO.NET para fornecer dados aos relatórios, o que torna o Reporting Services uma excelente escolha para a geração de relatórios em diferentes ambientes empresariais.

O Reporting Services é licenciado como parte do SQL Server 2000; por isso, se já tiver uma cópia do SQL Server, você poderá executar o Reporting Services no mesmo servidor sem nenhum custo adicional. Se decidir executar o Reporting Services em uma máquina separada, que ainda não esteja licenciada para SQL Server (tal como um Web Server), você precisará adquirir uma licença adicional para SQL Server.

Para dar os primeiros passos no Reporting Services, faça o download do software trial de 120 dias no site SQL Server 2000 Reporting Services (http://www.microsoft.com/sql/reporting/), que também inclui instruções sobre como obter a mídia de instalação para o produto. Certifique-se de marcar a opção para incluir os relatórios de exemplo quando você instalar o produto, já que neste artigo eu integrarei esses relatórios em um aplicativo Web.

 

Visão Geral do Reporting Services

Os relatórios do Reporting Services foram criados por meio do novo designer de relatórios do Visual Studio .NET 2003, que estará disponível quando você instalar o Reporting Services na mesma máquina que o Visual Studio. O designer gera uma descrição do layout do relatório e do acesso a dados na nova RDL (Report Definition Language) baseada em XML, e os arquivos RDL são publicados em um servidor de relatórios. Também existem no mercado designers de relatório de outros fabricantes, caso você queira fornecer recursos de autoria a seus usuários.

Os administradores podem usar o Report Manager baseado na Web para gerenciar os relatórios publicados e executar tarefas, tais como proteger os relatórios de determinados grupos de usuários ou alterar as strings de conexão da fonte de dados dos relatórios implantados. Os usuários também podem usar o Report Manager para procurar e exibir relatórios; no entanto, muitas empresas preferirão integrar a exibição de relatórios diretamente em seus Web sites ou aplicativos internos existentes, usando solicitações de URL ou o Web Service do Reporting Services.

Os relatórios podem ser parametrizados para que os usuários possam escolher dentre uma lista de seleções ao visualizá-los; também é possível exportar os relatórios para uma ampla gama de formatos, como Microsoft® Excel, PDF e XML. Embora os relatórios ao vivo forneçam dados em tempo real, eles também podem ser armazenados no cache por um dado período de tempo para melhorar o desempenho e reduzir a carga nas fontes de dados. No caso de aplicativos business intelligence, os relatórios podem acessar cubos OLAP do Analysis Services e os Reporting Services podem até mesmo importar relatórios em Microsoft Access existentes, embora nem todos os recursos sejam suportados devido às diferenças entre as duas tecnologias. Para obter uma visão geral da arquitetura do Reporting Services, consulte a Figura 1.

 

image001.gif 

Figura 1 Arquitetura do Reporting Services

 

Projetando o Primeiro Relatório

Embora eu vá me concentrar na integração de relatórios nos aplicativos (em vez de na autoria de relatórios), a melhor maneira de se familiarizar com os Reporting Services é mergulhar no programa e criar um novo projeto de relatório. Para fazer isso, abra o Visual Studio e crie um novo projeto usando o Report Project Wizard, localizado na nova seção Business Intelligence Projects. Especifique um nome para seu projeto e clique em OK. A caixa de diálogo do assistente de relatórios será exibida. Durante a etapa de seleção da fonte de dados, clique no botão Edit para especificar uma conexão com o AdventureWorks2000 em seu servidor de banco de dados, clique em OK e, em seguida, marque a opção relevante para tornar a fonte de dados compartilhada.

Clique em Next para passar para a etapa Design the Query, especifique uma instrução SQL simples (como "SELECT * FROM Product") e clique em Next. O Reporting Services suporta relatórios tabulares padrão, que mostram um conjunto fixo de colunas, bem como relatórios Matrix, que usam uma exibição de estilo de tabela de referência cruzada com colunas dinâmicas; sendo assim, escolha a opção Tabular para esse relatório e clique em Next.

Arraste algumas colunas (como ProductID e Name) até a seção Details e clique em Next. Escolha o estilo Bold padrão, clique em Next e, em seguida, especifique o URL do diretório virtual de seu servidor de relatórios, por exemplo, http://MyServer/ReportServer. Agora, clique em Next. Na etapa final, você pode especificar um nome para seu primeiro relatório, como Products Report; em seguida, clique em Finish.

O assistente criará o projeto, juntamente com uma fonte de dados AdventureWorks2000 (que pode ser compartilhada por vários relatórios) e um relatório sobre os dados de Products, que é aberto com o designer (veja a Figura 2). A guia Layout, que permite que você modifique o design do relatório, é exibida por padrão.

 

image002.gif

Figura 2 Designer do Visual Studio Report

 

A guia Data é usada para especificar as consultas de seu relatório, incluindo os parâmetros de configuração para que o usuário possa ser solicitado a fornecer valores quando o relatório for executado. Clique na guia Preview para testar como relatório será exibido ao usuário.

Você pode agora adicionar relatórios extras ao projeto ou modificar o relatório Products, adicionando colunas extras, agrupando os dados e incluindo subtotais ou até mesmo tabelas que exibam os dados de outras consultas. Diferentemente de muitos designers de relatório, o Reporting Services usa um design out-of-band que facilita a criação de relatórios que incluam dados de várias fontes, todos agrupados em um único local.

O projeto de relatório que você acabou de criar consiste em um conjunto de arquivos que residem na sua máquina de desenvolvimento. Para publicar esses relatórios para seus usuários, você precisará implantar o projeto no servidor de relatórios.

 

Implantando e Testando

Antes de disponibilizar o projeto do relatório, você precisará especificar o servidor no qual ele será disponibilizado. Se você usou o assistente para criar o projeto, então já especificou um servidor de destino.

Para marcar essa configuração ou especificar um novo servidor, selecione Project | Properties para exibir a caixa de diálogo Project Properties. Essa caixa permite especificar tanto um nome de pasta para seu projeto como o URL do Web service Reporting Services. A seleção do menu Build | Deploy Solution criará seu projeto de relatório e o implantará no servidor.

Uma vez implantado o projeto do relatório, você pode levá-lo para um test drive. Todo relatório que tenha sido disponibilizado para um servidor possui um caminho exclusivo que pode ser usado para exibir o relatório em um browser. Por exemplo, para exibir o primeiro relatório que você criou, abra um browser e navegue para http://MyServer/ReportServer?/Report+Project1/Products+Report. Isso converterá o relatório em HTML e exibirá uma barra de ferramenta na parte superior da página, que permite que você percorra o relatório, altere o zoom ou mesmo exiba o relatório em diferentes outros formatos, tais como PDF.

Você também pode procurar uma lista de todos os projetos de relatório que foram disponibilizados no servidor navegando até o seguinte URL em seu servidor: http://MyServer/ReportServer. O servidor de relatórios fornece uma interface de usuário mínima que lhe permite ver quais relatórios foram disponibilizados e exibi-los.

A ferramenta Report Manager, que é mais amigável e possui muito mais recursos, pode ser acessada por meio do seguinte URL em seu servidor local: http://MyServer/Reports.

 

Adicionando Relatórios a um Aplicativo Web

Agora que você sabe como projetar, implantar e testar relatórios, vamos integrar os relatórios a um aplicativo. Muitos aplicativos Web contêm uma home page personalizada para cada usuário, geralmente chamada de dashboard (painel). Normalmente, essa página apresenta informações sumariadas, que são ajustadas de acordo com o usuário e funcionam como um ponto de partida para o acesso a outras funcionalidades do aplicativo.

Eu criarei aqui um dashboard para demonstrar a integração do relatório (veja a Figura 3), usando os relatórios de exemplo fornecidos com o Reporting Services. Se você instalou os relatórios de exemplo durante a configuração, abra o projeto de relatório (instalado em \Reporting Services\Samples\Reports) e disponibilize-o em seu servidor de testes. Você pode usar a ferramenta Report Manager para testar os relatórios de exemplo; para fazer isso, navegue até a pasta SampleReports.

 

image003.gif

Figura 3 Aplicativo Web Dashboard

 

A maneira mais simples de propiciar aos usuários acesso aos relatórios de seu aplicativo é por meio de um hyperlink. Conforme mostrado anteriormente, cada relatório possui um caminho exclusivo, que pode ser usado para exibir o relatório em um browser. No caso de um aplicativo dashboard, o relatório deverá ser aberto em uma janela separada, por isso eu especificarei um destino para o hyperlink. Até aqui, foi tudo muito simples, mas o que dizer dos relatórios que têm parâmetros, tais como o relatório Employee Sales Summary? Para realmente integrar um relatório em um aplicativo, você precisa especificar alguns valores para os parâmetros, para que o usuário não digite frequentemente.

O Reporting Services facilita bastante essa tarefa: os valores dos parâmetros dos relatórios podem ser especificados como parte do URL. Por exemplo, o relatório Employee Sales Summary tem os parâmetros ReportYear, ReportMonth e EmpID; esse caso, o hyperlink para exibir as vendas do mês de novembro referente ao funcionário 24 seria:

 

  

   Summary&ReportMonth=11&EmpID=24" target="_blank">November Sales Summary

 

Os parâmetros que não tiverem um valor especificado no URL usarão o valor padrão que foi definido no designer do relatório; desse modo, o relatório de resumo de vendas do exemplo recém-mostrado usa um valor ReportYear de 2003. O Reporting Services também possui um conjunto de parâmetros internos que podem ser usados para controlar a maneira como o relatório é exibido. Eles são diferenciados dos parâmetros de seu relatório por meio do prefixo "rs:".

Um dos parâmetros mais úteis é o parâmetro rs:Format, que é usado para especificar o formato para o qual o relatório será convertido. Isso permite que você inclua relatórios que não necessariamente sejam exibidos em HTML, mas que utilizem formatos como PDF ou mesmo XML. O outro parâmetro comumente usado é o rs:Command, que indica a ação a ser aplicada ao caminho que você especificou. Por exemplo, rs:Command=Render converterá um relatório, enquanto rs:Command=ListChildren listará todos os itens de uma pasta.

Se você não especificar um comando, o Reporting Services analisará o caminho que você especificou e calculará a ação apropriada a ser executada, como, por exemplo, converter o relatório. A Tabela 1 mostra uma lista de parâmetros rs: .

 

Tabela 1 Parâmetros rs: do servidor de relatórios .

 

Parâmetro

Descrição

Valores

rs:Command

A ação a ser aplicada ao caminho, por exemplo, converter um relatório ou listar todos os itens em uma pasta. No caso de relatórios, o padrão é Render.

Render, ListChildren, GetResourceContents, GetDataSourceContents

rs:Format

O formato para o qual converter o relatório, como HTML4.0 ou PDF. O padrão é o HTML apropriado suportado pelo browser.

HTML3.2, HTML4.0, HTMLOWC, MHTML, IMAGE, EXCEL, CSV, PDF, XML (também pode incluir extensões de conversão personalizadas, se estiverem disponíveis)

rs:Snapshot

Cria um snapshot do relatório, que usa os dados do relatório capturados em determinado momento e armazenados no banco de dados do servidor de relatórios.

Timestamp do snapshot — por exemplo, 2004-03-30T15:45:02

rs:SessionID

Identifica uma sessão ativa estabelecida entre o browser e o servidor de relatórios. Uso quando o servidor de relatórios foi configurado para não usar cookies de sessão.

Id de sessão existente

rs:ClearSession

Obriga o browser do cliente a limpar as cópias em cache do relatório e a recuperar uma nova cópia.

True

 

Um outro conjunto de parâmetros internos controla o comportamento dos vários formatos de saída e usa o prefixo rc: . Cada formato de relatório possui seu próprio conjunto específico de parâmetros. Por exemplo, para converter um relatório para um formato CSV (comma-separated values) que não contenha linhas de cabeçalho, use o parâmetro rc:NoHeader:

 

   &rs:Command=Render&rs:Format=CSV&rc:NoHeader=true">Company Sales

 

O formato HTML possui a maior variedade de parâmetros rc: , que proporciona mais flexibilidade durante a integração de relatórios em um aplicativo Web. Se o seu aplicativo passa seleções de parâmetro de relatórios para o relatório, talvez você queira evitar emitir prompts ao usuário, definindo rc:Parameters como false ou até mesmo desativando toda a barra de ferramentas (definindo rc:Toolbar como false). Para obter uma lista dos parâmetros rc: HTML usados com mais freqüência, consulte a Tabela 2:

 

Tabela 2 Parâmetros rc: usados com mais freqüência para formatos HTML

Parâmetro

Descrição

Valores

rc:Toolbar

Mostra ou oculta a barra de ferramentas, incluindo a área de parâmetros. O padrão é true.

true, false

rc:Parameters

Mostra ou oculta a área de parâmetros da barra de ferramentas. O padrão é true.

true, false

rc:Zoom

Aumenta ou reduz o fator de zoom de um relatório. O padrão é 100. (Observe que essa configuração só funciona com o Internet Explorer 5.0 e superior)

Largura de página, página inteira ou uma porcentagem de um valor inteiro como 75.

rc:Section

O número de página a ser convertido. O valor padrão é 1.

Integer

rc:LinkTarget

O nome de destino dos hyperlinks no relatório.

O nome de uma janela ou outro nome de destino válido como _blank, _self, _parent, ou _top.

 

Se o seu aplicativo Web usa frames para exibir relatórios, digamos que haja uma lista de relatórios em um painel esquerdo e o conteúdo do relatório no painel direito. Você precisará usar o parâmetro rc:LinkTarget para especificar o nome do frame de seu conteúdo. Caso contrário, quando o usuário clicar em qualquer link incorporado no relatório, o browser será novamente exibido com a janela completa, em vez de preservar seus frames para o painel de navegação e o painel de conteúdo.

Você pode usar os parâmetros do URL que descrevi para adicionar a área Quick Launch, que contém uma lista de hyperlinks que permitem que o usuário abra relatórios comuns (veja a Figura 3). Cada hyperlink possui seu destino definido como _blank (para abrir o relatório em uma janela de browser separada) e usa parâmetros como rs:Format=EXCEL (para controlar a maneira como o relatório é exibido no browser).

 

Incorporando Relatórios em Seu Aplicativo Web

Em vez de acionar uma nova janela pop-up do browser sempre que o usuário exibir um relatório, você pode preferir incorporar os relatórios em suas próprias páginas Web. A maneira mais simples de fazer isso é usar um IFRAME em sua página Web e definir o atributo SRC usando a mesma técnica baseada em URL que descrevi anteriormente. Se você usar essa técnica, lembre-se de definir o parâmetro rc:LinkTarget como o nome de seu IFRAME para evitar ter de acionar o frame sempre que o usuário clicar em um link do relatório (como acontece com qualquer frame).

Se você já projetou controles de servidor para ASP.NET, deve estar pensando que a técnica IFRAME não é particularmente elegante, já que ela requer que os desenvolvedores Web compreendam a sintaxe do parâmetro URL do Reporting Services para que possam criar a string SRC apropriada. Não seria uma idéia melhor criar um controle de servidor que encapsulasse todos os parâmetros e permitisse que os desenvolvedores simplesmente definissem propriedades como ReportPath e Zoom?

Para sua conveniência, o Reporting Services é fornecido com uma amostra denominada ReportViewer (instalada no diretório \Reporting Services\Samples\Applications\ReportViewer) que faz exatamente isso. O controle encapsula a lógica de parâmetro de acesso ao URL e IFRAME e fornece um método mais simples de incorporar relatórios em seu aplicativo. Para usar o controle, abra e crie a solução ReportViewer e, em seguida, alterne para seu aplicativo Web e adicione o controle à toolbox (acesse o ReportViewer.dll no diretório bin da solução ReportViewer).

Você pode usar o controle para adicionar relatórios incorporados ao aplicativo dashboard. Adicione o controle à página Web, defina as propriedades height e width e adicione o seguinte código para exibir um relatório na sua página:

 

Private Sub Page_Load(ByVal sender As System.Object, _

  ByVal e As System.EventArgs) Handles MyBase.Load

  If Not IsPostBack Then

     ReportViewer1.ServerUrl = "http://MyServer/ReportServer"

     ReportViewer1.ReportPath = "/SampleReports/Sales Order" & _

         "Detail&SalesOrderNumber=so8153"

     ReportViewer1.Toolbar = ReportViewer.multiState.False

     ReportViewer1.Zoom = "75"

  End If

End Sub

 

Protegendo seus relatórios

A segurança do Reporting Services usa um modelo familiar baseado em funções (role-based). Os usuários e grupos podem ser designados a funções como System Administrator ou Browser, e todos os membros de uma função específica serão autorizados a executar as operações definidas para aquela função.

O Report Manager é usado para executar tarefas relacionadas à segurança, tais como designar usuários a funções ou modificar as permissões de um item (por exemplo, um relatório). Por padrão, o grupo Administrators do Windows é membro do System Administrator e do Content Manager de todas as pastas. Para estender o acesso ao relatório a outros usuários, é necessário adicionar a conta do usuário ou o grupo a uma função (Por exemplo, a função Browser). Geralmente, esse processo é configurado no nível da pasta, mas também pode ser ativado manualmente para relatórios individuais.

Além de proteger o acesso aos relatórios, os administradores também precisam decidir como conectar relatórios a bancos de dados de origem. As fontes de dados podem ser configuradas para usar segurança integrada, a fim de que as conexões de banco de dados sejam feitas por meio da conta de usuário atual. Como alternativa, é possível definir um nome de usuário e senha para Windows® ou SQL Server e armazená-los de forma protegida no banco de dados do servidor de relatórios. Essa abordagem é exigida para relatórios que serão executados sem interatividade de usuário, por exemplo, os relatórios relacionados a assinaturas.

 

Usando o Web Service Reporting Services

A abordagem de acesso ao URL que usei até agora fornece uma maneira rápida e fácil de exibir relatórios e especificar parâmetros, mas não fornece acesso a todas as funcionalidades disponíveis para o gerenciamento de relatórios. O Reporting Services também vem com uma API repleta de recursos API, que lhe fornece acesso às funções avançadas por meio de um Web service. Por exemplo, o Web service lhe oferece métodos para gerenciar informações de fonte de dados para seus relatórios ou para enumerar todos os itens em uma pasta.

Eu usarei o Web service para adicionar uma lista dinâmica de relatórios ao aplicativo dashboard. Para começar, você precisará adicionar uma referência de Web Service a seu aplicativo, usando o Add Web Reference. Especifique o caminho para o Web service, desta forma:

http://MyServer/ReportServer/ReportService.asmx

Após adicionar a referência, você pode criar uma instância da classe proxy do ReportingService e chamar um método no serviço, como faço aqui:

 

Private Sub LoadSampleReports()

  Dim rs As New ReportingService

  rs.Credentials = System.Net.CredentialCache.DefaultCredentials

 

  Dim item As CatalogItem

  For Each item In rs.ListChildren("/SampleReports", False)

      If item.Type = ItemTypeEnum.Report Then

         DropDownList1.Items.Add(New ListItem(item.Name, item.Path))

      End If

  Next

End Sub

 

Se estiver implantando o seu aplicativo em um ambiente intranet, você precisará ativar a personificação adicionando ao arquivo web.config de seu aplicativo. Você passa ao serviço as credenciais de login do cliente, conforme mostrado no exemplo anterior.

O método ListChildren retorna um array de objetos CatalogItem que representam os itens que o usuário tem permissão de ver, incluindo relatórios, pastas e fontes de dados. A propriedade Path fornece o caminho exclusivo para o item (por exemplo, /SampleReports/Sales Order Detail) e a propriedade Type permite fazer distinção entre relatórios e outros tipos de itens.

Agora que já carreguei os nomes de relatório em uma lista drop-down, preciso decidir como exibir os relatórios dentro do aplicativo dashboard. Eu decidi estender o código ReportViewer que escrevi anteriormente e alterar a propriedade ReportPath sempre que o usuário selecionasse um relatório e clicasse no botão Go. Você também pode usar um IFRAME e definir a propriedade SRC para o URL apropriado (e adicionar o prefixo http://MyServer/ReportServer? ao nome do relatório).

Além das funções de gerenciamento de relatório, o outro principal recurso fornecido pelo Web Service é a conversão de relatórios (report rendering). Muitos aplicativos (incluindo o aplicativo Report Manager) usam os recursos do Web Service para listar relatórios ou alterar configurações e recorrem à abordagem de URL (que descrevi anteriormente) para exibir os relatórios. No entanto, se quiser ter amplo controle sobre a forma como o conteúdo do relatório é tratada em seu aplicativo, você pode usar o método Render da classe ReportingService. Esse método retorna um array de bytes que você pode então salvar em um arquivo de saída, tal como um arquivo de imagem ou uma planilha do Excel, dependendo do formato solicitado. Se você quiser converter um relatório para HTML, as coisas serão um pouco mais complicadas porque você precisará usar o método RenderStream para converter separadamente as imagens ou outros recursos.

Embora esse artigo tenha se concentrado nos aplicativos Web, você pode usar as mesmas técnicas para adicionar relatórios a aplicativos baseados em Windows. A abordagem mais fácil ainda é usar o acesso URL e acionar o browser do usuário a partir de seu aplicativo ou incluir o controle Microsoft WebBrowser ActiveX® e usar o método Navigate para carregar o URL apropriado. O método Render do Web Service é uma boa alternativa quando você quer mais controle, por exemplo, para operações como a exibição de resultados em uma picture box ou para salvar o arquivo diretamente no disco.

Os usuários que trabalham com informações geralmente precisam lidar com dois tipos de relatórios: o tipo que eles procuram quando precisam reunir informações, e o tipo aparece em suas mesas ou e-mails todas as semanas. Até o momento, tenho me concentrado no processo por meio do qual os usuários buscam seus próprios relatórios, mas o Reporting Services também inclui um recurso avançado denominado subscriptions que permite que você "empurre" os relatórios para os usuários.

 

Inscrevendo-se em um Relatório

O recurso subscription do Reporting Services permite que os usuários recebam relatórios de forma programada (agendados). Os relatórios são normalmente enviados por e-mail para o usuário, mas o Reporting Services também permite que você os envie para um compartilhamento de arquivos ou até mesmo escreva sua própria extensão de entrega. Isso permite que você realize facilmente tarefas de disseminação, como enviar e-mails de relatórios de vendas semanais a cada representante de vendas ou configurar o relatório financeiro mensal para ser executado no último dia de cada mês e gravá-lo como PDF em um compartilhamento de arquivos da empresa.

Antes de configurar uma inscrição, você precisa pensar em como o relatório será conectado ao banco de dados para recuperar seus dados. Como o relatório inscrito não será executado diretamente por um usuário, você não poderá usar a segurança integrada para a fonte de dados, mas precisará especificar um nome de usuário e uma senha para serem usados quando o relatório for executado. Se você tentar configurar uma inscrição para um relatório que use segurança integrada, o Reporting Services retornará um erro.

Para alterar a fonte de dados dos relatórios de exemplo, abra Report Manager | Sample Reports e clique na fonte de dados AdventureWorks. Ela é compartilhada por todos os relatórios de exemplo, e qualquer alteração feita nessa fonte de dados afetará todos os relatórios. Selecione a opção "Credentials stored securely in the report server", especifique uma senha e um nome de usuário de domínio válido de uma conta que possua acesso ao banco de dados AdventureWorks, marque a opção "Use as Windows credentials when connecting to the data source option" e clique no botão Apply. Observe que essa alteração significa que a conta especificada será sempre usada na conexão com o banco de dados, independentemente do usuário que realmente tenha executado o relatório.

Bem, agora você está pronto para se aprofundar e analisar a API do Web Service que fornece acesso às inscrições. Essa parte do Web Service é um pouco mais complicada de usar do que os métodos List ou Render, principalmente por causa do número de opções disponíveis. O método que usarei é o CreateSubscription, que também pertence à classe ReportingService. Os parâmetros desse método estão descritos em mais detalhes on-line (consulte ReportingService Class http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rsprog/htm/rsp_ref_soapapi_service_ak_1xfd.asp), mas basicamente você precisará especificar o relatório no qual está se inscrevendo, a agenda de envio (por exemplo, toda segunda-feira de manhã ou a última sexta-feira do mês), as opções de e-mail (incluindo endereços de e-mail) e os valores de parâmetro do relatório.

Incluí também uma classe de utilitário denominada EmailSubscriber no código de exemplo deste artigo, que minimiza um pouco a complexidade. O aplicativo dashboard usa essa classe para permitir que o usuário especifique seu e-mail e para fazer com que o relatório Employee Sales Summary seja enviado a ele por e-mail todas as segundas-feiras. Em um aplicativo de produção, você poderia adaptar o relatório de acordo com cada usuário, por exemplo, recuperando a ID do funcionário com base na conta dele de usuário do Windows e, em seguida, configurando apropriadamente os parâmetros do relatório quando criasse a inscrição.

Se você não quiser aguardar até a próxima segunda-feira para testar a inscrição, será útil saber um pouco mais sobre como o Reporting Services lida com a agenda de inscrição. Quando você cria uma inscrição, o Reporting Services cria um job SQL Server Agent que é executado de acordo com a agenda solicitada. Para ver esse job, abra o Enterprise Manager e expanda as pastas Management, SQL Server Agent e Jobs. O job de inscrição (subscription) terá uma categoria "Report Server" e será nomeado com uma GUID que será usada pelo Reporting Services para acompanhar o job. Clique com o botão direito no job e escolha Start Job; se você tiver configurado corretamente todas as opções, o relatório será enviado por e-mail a você.

 

Qual o Próximo Passo?

Dois outros recursos do Reporting Services que você pode usar para aprimorar a capacidade de geração de relatórios de seu aplicativo incluem Data Driven Subscriptions, que permite que você configure uma lista de usuários e envie a eles relatórios parametrizados específicos, e o Snapshots, que são views do relatório em determinados momentos agendados que também podem fornecer views de históricos dos relatórios. Se você quiser ainda mais recursos, o Reporting Services é criado com uma arquitetura modular, que permite que você adicione novas extensões avançadas usando a sua linguagem .NET favorita.

 

Download disponível em www.neoficio.com.br/msdn