O SQL Server Reporting Services (SSRS), parte da suíte do SQL Server, é uma plataforma de geração de relatórios que provê as ferramentas e serviços necessários para criar, publicar, gerenciar e distribuir relatórios acessando várias fontes de dados. Com o SSRS é possível criar relatórios interativos, tabulares, gráficos ou de forma livre, a partir de dados relacionais, multidimensionais e XML.
O objetivo deste post é demonstrar a utilização do SSRS para gerar um relatório a partir de bancos de dados Progress. Para informações detalhadas sobre o desenvolvimento de relatórios e recursos disponíveis, consulte a documentação e os tutoriais.
Para o nosso relatório utilizaremos o banco de dados de exemplo distribuído com o OpenEdge 10.1C, o sports2000. O objetivo é gerar um relatório com os valores totais das vendas por região e estado, com a opção de filtro por representante e data. Abaixo uma imagem do relatório concluído (clique na imagem para ampliar):

Para criação do relatório utilizaremos o Business Intelligence Development Studio (BIDS), que é parte das ferramentas client do SQL Server.
Ao iniciar o BIDS, crie um novo projeto do tipo Report Server Project. O primeiro passo é criar neste projeto um novo Data Source. Um Data Source armazena as informações para conexão aos dados e pode ser utilizado por vários relatórios do mesmo projeto.
A imagem abaixo mostra a tela para configuração de um Data Source:

O tipo do Data Source deve ser ODBC. No campo Connection String deve-se informar a linha de conexão. É possível informar o nome de uma fonte de dados ODBC usando a sintaxe DSN=<nome_fonte_odbc>, ou utilizar uma conexão DSN-less. Na aba Credentials, deve-se marcar a opção Use a specific user name and password, informando login e senha para conexão ao banco de dados.
Com o Data Source criado, podemos criar um novo item do tipo Report. A imagem abaixo mostra o ambiente de desenvolvimento com o novo relatório vazio:

Nosso primeiro passo será a criação de um Dataset, com a lista de representantes que utilizaremos como filtro:

O nome utilizado para o Dataset foi representantes. A seguinte query gera uma lista de representantes, com a palavra TODOS no início da lista:
SELECT 2 AS Ordem, SalesRep, RepName FROM PUB.SalesRep
UNION ALL
SELECT 1, 'ALL', 'TODOS' FROM sysprogress.SYSCALCTABLE
ORDER BY 1, 3
Vamos criar mais um Dataset, chamado datas, com a maior e menor data existente na tabela PUB.Order. Estes dados servirão como valores iniciais para os filtros de data. A query para este Dataset é:
SELECT MIN(OrderDate) AS dtMin, MAX(OrderDate) AS dtMax FROM PUB.Order
Finalmente, vamos criar o Dataset vendas, contendo os dados que serão exibidos no relatório. A seguinte query será utilizada neste Dataset:
SELECT s.region, s.state, s.statename, SUM(ol.price * ol.qty) AS Valor
FROM pub.customer c INNER JOIN pub.order o ON c.custnum = o.custnum
INNER JOIN pub.orderline ol ON o.ordernum = ol.ordernum
INNER JOIN pub.state s ON c.state = s.state
WHERE (o.SalesRep = ? OR ? = 'ALL') AND o.OrderDate BETWEEN ? AND ?
GROUP BY s.region, s.state, s.statename
Esta query retorna o valor total vendido por região e estado, filtrando por representante e data da venda. Os valores ? representam parâmetros para a query que serão atribuídos em tempo de execução.
O próximo passo é definir os parâmetros para o relatório. Estes parâmetros aparecerão para o usuário e servirão para filtrar os dados. No menu Report, escolha a opção Report Parameters. Se houver parâmetros criados, estes podem ser removidos e criaremos novos.
O primeiro parâmetro é a lista de representantes, e os valores disponíveis no parâmetro virão do Dataset representantes. A imagem abaixo demonstra esta configuração:

Os outros dois parâmetros, DataInicio e DataFim, são do tipo DateTime. Para estes dois parâmetros, o valor inicial (Default values) virá do Dataset datas, campos DTMIN e DTMAX, respectivamente.
Depois de configurar os parâmetros do relatório, vamos atribuí-los aos parâmetros do Dataset vendas. Para isto, na aba Data do relatório, selecione o Dataset vendas e clique no botão Edit Selected Dataset:

Na aba Parameters, vamos associar os parâmetros do relatório com os parâmetros da query do Dataset. Os dois primeiros parâmetros da query serão associados com o parâmetro Representante. Os outros dois parâmetros serão associados, respectivamente, com os parâmetros DataInicio e DataFim:

Finalmente, vamos adicionar no relatório (aba Layout) um item Table e adicionar os campos que serão exibidos:

No arquivo reports.zip abaixo está disponível o projeto do Reporting Services com o relatório já concluído (Report1) e uma versão aprimorada deste relatório (Vendas):
reports.zip (9,04 kb)