Criando relatórios com Crystal Reports e ASP.NET – Parte 1


Na primeira parte desta série,vamos  criar uma fatura (invoice) com ajuda do Crystal Reports e ASP.NET,usando o banco de dados de demonstração AdventureWorks .A versão que iremos usar  do Crystal Reports ,é a versão gratuita que vem com o Visual Studio,o banco AdventureWorks pode ser baixado aqui

O objetivo deste artigo é criar uma fatura  semelhante a da figura seguinte:

Passo 1:Criando a nova solução

  1. Abra o Visual Studio
  2. Selecet New WebSite no menu File
  3. Escolha ASP.NET na lista dos templates.
  4. Escolha o nome do projeto.
  5. Escolha a linguagem C#

Agora vamos adicionar o arquivo do Crystal Reports para o projeto:

  1. Clique com direito no Solution Explorer
  2. Escolha “Add new item…”
  3. Clique no template do Crystal Reports
  4. Mude o nome do arquivo para Invoice.rpt

Irá aparecer a caixa de diálogo,do Crystal Reports.Selecione “As a blank report…” e clique em OK:

Seu relatório será salvo no VS e estamos prontos pra começar.

Passo 2:Conectando ao banco

Vamos conectar ao banco AdventureWorks e trazer todas as tabelas e Views que precisamos:

  1. Cique com o botão direito no  “Database Fields” no Field Explorer.Selecione “DataBase Experts” no pop-up.
  2. Esse relatório vai se conectar diretamente com o banco usando OLE DB.Para conectar clique no sinal de expansão próximo ao nó “Create new Connection”.
  3. Clique no sinal de expansão próximo a OLE DB (ADO).Isso vai abrir a caixa de dialogo que lhe permite selecionar o AdventureWorks.
  4. Selecione “SQL Native Client” na lista de providers e clique “next”
  5. Coloque o nome do servidor onde o banco está instalado.
  6. Você pode usar tanto Integrated Security ou Login para se conectar ao banco.
  7. Agora clique no combo database.E selecione o banco AdventureWorks.Clique Ok e Finish.

Seu Sql server deve aparecer abaixo do nó OLE DB (ADO) e o banco AdventureWorks,deve ser listado abaixo do nome do servidor.

  1. Clique no sinal de expansão do banco AdventureWorks e você verá a lista de schemas do banco.Se você clicar no nó de um esquema você verá  mais dois nós,um para tabelas e outro para as views.
  2. Vamos selecionar as tabelas e views apropriadas para o relatório e manda-las para a lista de Tabelas selecionadas na caixa de diálogo.Expanda o schema Person e expanda Tables.Clique na tabela Contacts e depois clique no botão >pra move-la pra lista de tabelas selecionadas.Faça o mesmo para as tabelas:Production.Product,Sales.SalesOrderDetail e Sales.SalesOrderHeader.
  3. A tabela Sales.SalesOrderHeader tem dois campos de endereço (Address),uma para o endereço de cobrança (BillAddress) e outro para o endereço de entrega (ShipAddress).Cada um desses campos tem uma chave estrangeira com a tabela Person.Address.Nós teremos que adicionar duas cópias da tabela Address,para cada chave estrangeira.Mas nós podemos “apelidar” (alias) a tabela pra depois sabermos qual é qual.Adicione a tabela Person.Address  para a lista de tabelas selecionadas usando o botão >.
  4. Clique com o direito na tabela Address na lista de tabelas selecionadas e renomei –a através do menu pop-up.Mude o nome para “AddressBillTo” e pressione enter.O Crystal vai dar um lowerCase no nome automaticamente.
  5. Agora a adicione a tabela Person.Address para a lista de tabelas selecionadas novamente.Dessa vez renomeie-a para AddressShipTo.

  1. A tabela Person.Address tem uma chave estrangeira com a tabela Person.StateProvince então você também vai precisar adicionar a tabela Person.StateProvince duas vezes para a lista de tabelas selecionadas.Renomeie a tabela para “StateProvinceBillTo” e “StateProvinceShipTo”.

  1. Agora que você selecionou as tabelas,você precisa definir as relações entre essas tabelas.O Crystal faz um bom trabalho descobrindo essas relações,mas ele não pode descobrir tudo automaticamente.Para configurar manualmente as relações clique na aba “Links” na caixa de diálogo do “Database experts…”
  2. Aparecerá uma representação gráfica das tabelas.Você pode tornar a caixa de diálogo maior,arrastando o canto inferior direito .Eu gosto de fazer isso pra poder ver o máximo de tabelas possiveis.
  3. A tabela SalesOrderHeader é a tabela principal que tem os dados que nós estamos procurando.Crystal deve ter encontrado as relações entre as tabelas SalesOrderHeader.SalesOrderId e SalesOrderDetail.SalesOrderId, e SalesOrderHeader.ContactId e Contact.Contact.Id,e SalesOrderHeader.BillToAddressId e AddressBillTo.AddressId,e AddressBillTo.StateProvinceId e StateProvinceBillTo.StateProvinceId.Você deve ver uma linha entre as chaves primárias e as chaves estrangeiras destas tabelas.Senão,você pode cria essas relações facilmente clicando na chave estrangeira e arrastando para a primary key desejavel.
  4. Você precisa adicionar as relações entre,SalesOrderDetail.ProductId e Product.ProductId.Clique no campo SalesOrderDetail.ProductId e arraste-o para o campo Product.ProductId.Você deve ver uma linha azul aparecer entre estas duas tabelas representando a relação.Na verdade o que isso está fazendo é criando joins pra você, na query que seleciona os dados.É parecido com Access Query Designer.Se você precisar fazer um outer join é só dar um clique-duplo,na linha entre as tabelas e selecionar entre  Left,Right ou Full join.
  5. Crie o resto das relações da mesma maneira,arrastando a chave estrangeira sobre a chave primária.O restante das relações são:SalesOrderHeader.ShipToAddressId = AddressShipTo.AddressID, e AddressShipTo.StateProvinceId = StateProvinceShipTo.StateProvinceId.Clique no botão OK.

  1. Você agora pode ver o relatório no VS 2008 de novo.Cique no sinal de expansão próximo a “Database Fields” no Field Explorer.Você verá todas as suas tabelas listadas.Clique no sinal de expansão de uma tabela e você verá os campos daquela tabela.Essas são as tabelas disponiveis para serem usadas no relatório agora.

Passo 3:Criando o cabeçalho

A  “Page Header Section” (Cabeçalho),se repete em todas as páginas.Para essa demonstração,nós queremos repetir o Logo da empresa,o nome da empresa,o número da fatura,o número da compra,a data da compra,a data de entrega,o nome do cliente o endereço de cobrança e o endereço de entrega.

Siga estes passos para o cabeçalho:

  1. Altere a altura do cabeçalho,colocando o mouse na borda da “Details Section”.O mouse deve mudar para uma barra horizontal.Clique e arraste.Isso vai deixar o cabeçalho maior.
  2. Clique com o botão direito em um espaço em branco na “Page Header Section” e selecione “Insert Picture…”,no pop-up.Escolha a imagem e clique em Abrir.Arraste a figura para o topo à esquerda,na Page Header Section.
  3. Use a janela de propriedades para mudar a altura e largura da imagem.

  1. Agora você precisa adicionar o Nome da empresa.Clique com o botão direito  em um espaço em branco e selecione “Insert Text Object…” no menu Pop-Up.Deixe o objeto de texto ao lado do logo.
  2. Insira o texto.Para parar de editar clique em algum outro lugar do relatório.
  3. Clique com o botão direito no objeto de texto,e selecione “Format Object” no pop-up.Esse menu lhe dá mais opções do que a janela de propriedades.
  4. Clique na aba Font.Altere a fonte como desejar.
  5. Clique na aba Paragraph.Altere o alinhamento para horizontal.

  1. O próximo passo é arrastar os campos do banco para o relatório.Comece com o campo SalesOrderHeader.SalesOrderNumber.Mesmo que esse não seja o número da fatura,iremos trata-lo como se fosse.Expanda o nó de “DataBase fields” no field explorer.Expanda a tabela SalesOrderHeader.Arraste o campo SalesOrderNumber,para a direita no cabeçalho.
  2. Diminua a largura do campo.
  3. Insira um “Text Object” a esquerda do campo SalesOrderNumber,clicando com o botão direito em um espaço vazio e escolhendo “Insert text object”.Mude o texto para “Fatura#:”.Alinhe o texto para a direita.
  4. Ajuste o objeto de texto para não cobrir o campo SalesOrderNumber.

  1. Adicione  os campos PurchaseOrderNumber,Orderdate,ShipDate,e Due Date da mesma maneira.Adicione um “Text Object” para cada um desses campos,para que sirva como label.
  2. De uma olhada no seu relatório  clicando no botão “Main Report Preview”,no rodapé do relatório.

  1. Note que os três campos de data tem hora,incluída neles.Para remove-las clique de volta no Main Report View.Segure a tecla CTRL,e clique em cada campo de data.Clique com o direito e selecione “Format Multiple Objects” no pop-up.
  2. Clique na aba Date And time e escolha “03/01/1999” na lista de estilos.Clique ok.
  3. Clique em preview de novo,e desta vez a hora deve ter sumido.

Por enquanto  é isso,em breve publicarei a parte 2,continuando com a criação deste relatório.

Até lá!

Anúncios

4 comentários sobre “Criando relatórios com Crystal Reports e ASP.NET – Parte 1

  1. Meu velho, ótimo tutorial, Parabéns..
    Tenho o seguinte
    Preciso imprimir um DANFE da NFe

    só que eu tenho uma classe que é preenchida em um select com datareader.
    não gosto muito de usar dataset

    então…
    posso pegar os campos da classe e arrastar para o report e mandar imprimir?
    funcionaria?

    Desde já agradeço…
    Ahh. só para constar.. Os campos eu já conseguir inserir.. Só que ainda não testei.

    No aguardo.

    Responder
  2. Deixa eu complementar: eu segui o seu exemplo e o logotipo, o nome que eu dei para o relatório, data/hora, página por exemplo, são aparecem nas demais páginas, apenas na primeira.

    Responder
  3. Olá Rubens! Parabéns pelo tutorial, ajudou-me e muito!

    Uma dúvida: como fazer para que o cabeçalho seja impresso nas demais páginas do relatório?

    Obrigado e abraços

    Responder

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s